Font-line adalah Libre, alat baris perintah open source untuk pelaporan metrik vertikal openeP dan modifikasi jarak font baris berbasis baris perintah. Itu mendukung .ttf dan .otf font membangun.
$ pip3 install font-line$ font-line report [font path]$ font-line percent [integer %] [font path]$ font-line --help Font-line dibangun dengan Python dan mendukung penerjemah Python 3.7+. Periksa versi Python Anda yang diinstal pada baris perintah dengan perintah:
$ python3 --version
Gunakan salah satu metode berikut untuk menginstal font-line pada sistem Anda.
Rilis font-line terbaru tersedia melalui indeks paket Python dan dapat diinstal dengan PIP:
$ pip3 install font-line
Untuk meningkatkan ke versi baru Font-Line setelah pemasangan PIP, gunakan perintah pip3 install --upgrade font-line .
Versi repositori saat ini (yang mungkin ada di depan rilis PYPI) dapat diinstal dengan mengunduh repositori atau mengkloningnya dengan git:
git clone https://github.com/source-foundry/font-line.git
Arahkan ke direktori repositori level atas dan masukkan perintah berikut:
$ pip3 install .
Ikuti instruksi yang sama untuk meningkatkan ke versi baru dari aplikasi jika Anda menginstal dengan pendekatan ini.
Font-line bekerja melalui sub-komandan ke baris perintah font-line yang dapat dieksekusi. Sub-perintah berikut tersedia:
percent - Ubah Jarak Garis Font menjadi Persen dari Ascender ke Jarak Descenderreport - Laporkan Nilai Metrik OpenType untuk suatu fontPenggunaan sub-komando ini dijelaskan secara rinci di bawah ini.
Nilai metrik vertikal opentype berikut dan nilai yang dihitung yang diperoleh dari data ini ditampilkan dengan sub-perintah report :
report Penggunaan Sub-KomandanMasukkan satu atau lebih argumen jalur font ke perintah:
$ font-line report [fontpath 1] <fontpath ...>
Berikut adalah contoh laporan yang dihasilkan dengan file typeface hack Hack-Regular.ttf menggunakan perintah:
$ font-line report Hack-Regular.ttf
=== Hack-Regular.ttf ===
Version 3.003;[3114f1256]-release
SHA1: b1cd50ba36380d6d6ada37facfc954a8f20c15ba
::::::::::::::::::::::::::::::::::::::::::::::::::
Metrics
::::::::::::::::::::::::::::::::::::::::::::::::::
[head] Units per Em: 2048
[head] yMax: 2027
[head] yMin: -605
[OS/2] CapHeight: 1493
[OS/2] xHeight: 1120
[OS/2] TypoAscender: 1556
[OS/2] TypoDescender: -492
[OS/2] WinAscent: 1901
[OS/2] WinDescent: 483
[hhea] Ascent: 1901
[hhea] Descent: -483
[hhea] LineGap: 0
[OS/2] TypoLineGap: 410
::::::::::::::::::::::::::::::::::::::::::::::::::
Ascent to Descent Calculations
::::::::::::::::::::::::::::::::::::::::::::::::::
[hhea] Ascent to Descent: 2384
[OS/2] TypoAscender to TypoDescender: 2048
[OS/2] WinAscent to WinDescent: 2384
::::::::::::::::::::::::::::::::::::::::::::::::::
Delta Values
::::::::::::::::::::::::::::::::::::::::::::::::::
[hhea] Ascent to [OS/2] TypoAscender: 345
[hhea] Descent to [OS/2] TypoDescender: -9
[OS/2] WinAscent to [OS/2] TypoAscender: 345
[OS/2] WinDescent to [OS/2] TypoDescender: -9
::::::::::::::::::::::::::::::::::::::::::::::::::
Baseline to Baseline Distances
::::::::::::::::::::::::::::::::::::::::::::::::::
hhea metrics: 2384
typo metrics: 2458
win metrics: 2384
[OS/2] fsSelection USE_TYPO_METRICS bit set: False
::::::::::::::::::::::::::::::::::::::::::::::::::
Ratios
::::::::::::::::::::::::::::::::::::::::::::::::::
hhea metrics / UPM: 1.16
typo metrics / UPM: 1.2
win metrics / UPM: 1.16
Laporan ini mencakup string versi font, pencernaan hash SHA-1 dari file font, dan metrik tabel OpenType yang terkait dengan jarak garis dalam font.
Pengguna UNIX/Linux/OS X dapat menulis laporan ini ke file dengan > Idiom baris perintah:
$ font-line report TheFont.ttf > font-report.txt
Ubah jalur file font-report.txt di atas ke string path file pilihan Anda.
Perhitungan Baseline to Baseline Distance (BTBD) dilakukan sesuai dengan rekomendasi Microsoft untuk font OpenType dan spesifikasi tabel OSEnpype OS/2.
BTBD = hhea.Ascent + abs(hhea.Descent) + hhea.LineGap
BTBD = OS/2.typoAscent + abs(OS/2.typoDescent) + OS/2.typoLineGap
BTBD = OS/2.winAscent + OS/2.winDescent + [External Leading]
di mana memimpin eksternal didefinisikan sebagai:
MAX(0, hhea.LineGap - ((OS/2.WinAscent + OS/2.winDescent) - (hhea.Ascent - hhea.Descent)))
Font-line mendukung modifikasi jarak saluran otomatis ke persentase unit yang ditentukan pengguna per metrik EM. Nilai ini akan disingkat UPM di bawah ini.
percent Sub-Perintah PenggunaanMasukkan persentase UPM yang diinginkan sebagai argumen pertama untuk perintah. Ini harus dimasukkan sebagai nilai integer . Kemudian masukkan satu atau lebih jalur font yang ingin Anda terapkan perubahan metrik font Anda.
$ font-line percent [percent change] [fontpath 1] <fontpath ...>
Nilai default umum yang digunakan oleh desainer jenis huruf adalah 20% UPM. Untuk memodifikasi font di jalur TheFont.ttf hingga 20% dari metrik UPM, Anda akan memasukkan perintah berikut:
$ font-line percent 20 TheFont.ttf
Meningkatkan atau mengurangi nilai integer untuk meningkatkan atau mengurangi jarak saluran Anda.
File font asli dipertahankan dalam versi yang tidak dimodifikasi dan penulisan file yang dimodifikasi terjadi pada jalur baru yang didefinisikan sebagai [original filename]-linegap[percent].[ttf|otf] . Jalur ke file dilaporkan kepada Anda dalam output standar setelah modifikasi selesai. Font-line tidak memodifikasi set mesin terbang atau petunjuk yang diterapkan pada font. Lihat bagian Detail di bawah ini untuk deskripsi modifikasi tabel OpenType yang terjadi ketika aplikasi digunakan pada file font.
Anda dapat memeriksa metrik vertikal dalam file font baru dengan Sub-Komandan report (lihat penggunaan di atas).
percent Interpretasi dan tampilan dari beberapa nilai metrik vertikal ini bergantung pada platform dan aplikasi. Tidak ada pendekatan "terbaik" yang diterima secara luas. Dengan demikian, font-line berupaya untuk melestarikan desain metrik asli dalam font ketika modifikasi dibuat dengan percent sub-perintah.
Font-line saat ini mendukung tiga pendekatan metrik vertikal yang umum digunakan.
Pendekatan metrik vertikal 1 :
Di mana metrik didefinisikan sebagai:
Font-line menghitung nilai delta untuk total tinggi yang diharapkan berdasarkan nilai % UPM yang ditentukan pada baris perintah. Perbedaan antara nilai ini dan jumlah unit yang diamati yang menjangkau [OS/2] Winascent ke Windescent nilai dibagi setengah dan kemudian ditambahkan ke (untuk peningkatan jarak garis) atau dikurangi dari (untuk penurunan jarak garis) masing -masing dari tiga set nilai ascender/descender dalam font. Nilai lineGap [OS/2] Typolinegap dan [HHEA] tidak dimodifikasi.
Pendekatan Metrik Vertikal 2
Di mana metrik didefinisikan sebagai:
Font-line menghitung nilai delta untuk total tinggi yang diharapkan berdasarkan nilai % UPM yang ditentukan pada baris perintah. Perbedaan antara nilai ini dan jumlah unit yang diamati yang menjangkau [OS/2] Winascent ke Windescent Nilai dibagi setengah dan kemudian ditambahkan ke (untuk peningkatan jarak garis) atau dikurangi dari (untuk penurunan jarak garis) [OS/2] Winasc/Windesc dan [HHEA] ASC/Nilai DesC. Nilai [OS/2] typoasc/typodesc tidak dimodifikasi dan mempertahankan definisi ukuran = nilai UPM. Nilai lineGap [OS/2] Typolinegap dan [HHEA] tidak dimodifikasi.
Pendekatan Metrik Vertikal 3
Di mana metrik didefinisikan sebagai:
Perubahan pada nilai metrik dalam font didefinisikan sebagai :
Perhatikan bahwa modifikasi terkemuka internal dibagi secara merata di seluruh nilai pendakian [HHEA], dan di seluruh nilai winascent & windescent [OS/2]. Kami menambahkan setengah dari nilai typolinegap [OS/2] baru ke tycercender atau Tycescender asli [OS/2] untuk menentukan sifat metrik baru ini. Nilai linegap [HHEA] selalu didefinisikan sebagai nol.
Nilai metrik vertikal yang baru didefinisikan dapat menyebabkan kliping komponen mesin terbang jika tidak ditentukan dengan benar. Tidak ada tes di font-line untuk memberikan jaminan bahwa ini tidak terjadi. Kami berasumsi bahwa pengguna berpengalaman dalam masalah ini sebelum menggunakan aplikasi dan menyerahkan pengujian ini kepada perancang / pengguna sebelum font yang dimodifikasi digunakan dalam pengaturan produksi.
Harap kirimkan laporan edisi baru tentang repositori proyek.
Font-line dibangun dengan Perpustakaan Python Fonttools yang fantastis.
Lisensi MIT. Lihat lisensi.md untuk detailnya.