Direktori ini berisi alat untuk fitur jarak setengah lebar kontekstual untuk tipografi Jepang/Cina/Korea.
Fitur ini memungkinkan tipografi yang dijelaskan dalam JLREQ 3.1.2 Penentuan posisi tanda baca (koma, periode dan kurung) cara dasar untuk menempatkan tanda baca, tanda kurung, dll. Untuk ruang penyesuaian kode ruang angkasa Jepang, dan CLREQ 3.1.6.1 Berikut ini adalah sosok dari JLREQ:
Diskusi awal di Artikel Blog Jenis Adobe CJK dan Bagian II dapat membantu memahami fitur dengan lebih baik.
Anda dapat menemukan teks sampel di sini. Halaman sampel ini menggunakan font yang dibangun dengan alat ini.
OpenType mendefinisikan 4 tag fitur untuk font untuk mendukung fitur ini:
chws ", dan tag fitur " vchw " sebagai mitra aliran vertikal.halt ", dan tag fitur " vhal " sebagai rekan aliran vertikal.Semua 4 fitur diinginkan, karena setiap fitur diterapkan dalam konteks yang berbeda.
Paket ini menambahkan fitur -fitur ini ke font OpenType/Truetype ketika mereka hilang, dengan menghitung tabel fitur dari data seperti titik kode unicode dan garis mesin mesin terbang.
Anda dapat menginstal alat ini dengan PIP atau PIPX.
pipx install east-asian-spacingpip install east-asian-spacingPerlu diketahui bahwa, jika Anda menginstal dengan PIP di lingkungan global, ketergantungannya dapat menyebabkan konflik dengan paket lain. Jika semua yang Anda butuhkan adalah alat baris perintah, PIPX dapat menginstalnya secara global saat masih mengisolasi di lingkungan virtual.
Silakan juga lihat bagian Paket Instal jika Anda ingin menggunakan paket ini dari program Python Anda, atau bagian klon dan instal jika Anda ingin mendiagnosis font atau kode secara lebih jelas.
Contoh berikut menambahkan fitur ke input-font-file dan menyimpannya ke direktori build .
east-asian-spacing -o build input-font-fileBagian pengujian memiliki sumber daya untuk memeriksa perbedaan dan menguji font yang Anda bangun.
Untuk opsi dan penggunaan lain, opsi --help dapat menampilkan daftar opsi lengkap.
Algoritma ini berlaku untuk font CJK apa pun. Font berikut diuji pada setiap rilis:
Font CJK di fonts.google.com diuji dalam paket CHWS_TOOL. Beberapa font lainnya juga diuji selama pengembangan.
Saat menambahkan fitur ke font Anda, HTML tes adalah alat praktis untuk memeriksa hasilnya. Jika Anda mengalami masalah dengan font Anda, silakan laporkan ke masalah.
Silakan lihat juga topik canggih di bawah ini jika Anda ingin menyesuaikan perilaku default untuk font Anda.
Ketika file input font adalah koleksi TrueType (TTC), alat ini menambahkan fitur ke semua font di TTC secara default.
Jika Anda ingin menambahkan fitur hanya ke beberapa font di TTC, Anda dapat menentukan daftar indeks font yang dipisahkan koma. Contoh berikut menambahkan fitur ke indeks font 0 dan 1, tetapi tidak ke font lain di TTC.
east-asian-spacing --index=0,1 input-font-file.ttcAnda dapat menginstal paket ini menggunakan alat manajemen paket favorit Anda seperti puisi, PIPENV, atau PIP.
pip install east-asian-spacingpipenv install east-asian-spacingpoetry add east-asian-spacingHarap juga lihat bagian klon dan instal jika Anda ingin mendiagnosis font atau kode secara lebih rinci.
Contoh berikut membuat font dengan fitur di direktori " build " jika fitur tersebut berlaku.
import east_asian_spacing
async def main_async ():
builder = east_asian_spacing . Builder ( "fonts/input.otf" )
output_path = await builder . build_and_save ( "build" )
if output_path :
print ( f"Saved to { output_path } " )
else :
print ( "Skipped" )Halaman HTML tes tersedia untuk memeriksa perilaku font di browser.
Ini dapat menguji font yang Anda bangun secara lokal.
fonts " di awal blok <script> .Catatan, ketika Anda ingin menguji TTC (Koleksi TrueType) tetapi browser Anda hanya dapat memuat font pertama di TTC, perintah berikut mengekstrak semua font openType (.otf atau .tf) dari file font koleksi openType (.tc atau .otc).
east-asian-spacing ttc build/NotoSansCJK-Regular.ttc Sub-Komandan dump dapat membuat berbagai jenis file pembuangan teks.
Penggunaan paling sederhana adalah menampilkan daftar tabel. Ini mirip dengan opsi " -l " dari TTX, kecuali untuk Truetype Collections (TTC), alat ini dapat menampilkan tabel semua font di TTC, bersama dengan tabel yang dibagikan dengan font mana.
east-asian-spacing dump build/NotoSansCJK-Regular.ttc Opsi " -o " membuat file daftar tabel di direktori yang ditentukan:
east-asian-spacing dump -o build/dump build/ * .ttc Opsi " --ttx " membuat dump teks TTX dari semua tabel di samping file daftar tabel. Ini mirip dengan opsi " -s " dari TTX, kecuali bahwa ia dapat membuang semua tabel dalam koleksi truetype (TTC).
east-asian-spacing dump -o build/dump --ttx build/ * .ttc Sub-Komandan dump juga dapat membuat file dump dari dua file font dan membandingkannya. Ini membantu memvisualisasikan perbedaan dalam dua font, khususnya, file font yang Anda buat dari file font asli.
east-asian-spacing dump -o build/diff --diff source_fonts_dir build/NotoSansCJK.ttc Contoh di atas menghitung perbedaan antara source_fonts_dir/NotoSansCJK.ttc dan build/NotoSansCJK.ttc dengan membuat 3 set file berikut:
build/NotoSansCJK.ttc di direktori build/diff/dump .source_fonts_dir/NotoSansCJK.ttc di direktori build/diff/src .build/diff .CATATAN: Opsi "
--diff" lebih efisien daripada melakukan semua ini, terutama untuk font besar, karena lompatan membuat TTX tabel ketika mereka sama-sama.
Opsi -o opsional. Ketika dihilangkan, sub-perintah mengeluarkan diff ke stdout .
east-asian-spacing dump --diff source_fonts_dir build/NotoSansCJK.ttc | lessUntuk membuat file diff untuk semua font yang Anda buat, Anda dapat menyalurkan output seperti di bawah ini:
east-asian-spacing -p * .otf | east-asian-spacing dump -o build/diff - Opsi " -p " mencetak jalur font input dan output ke stdout dalam format nilai-terpisah. Sub -Komandan dump dengan argumen " - " membaca daftar ini dari stdin , dan membuat file dump dan diff teks mereka di direktori build/diff . Opsi " --diff " tidak diperlukan dalam kasus ini, karena jalur font sumber disediakan dari pipa.
Setelah Anda meninjau file diff yang dibuat di atas, atau font yang Anda buat, Anda dapat menyalin file Diff ke direktori references . Kemudian ketika Anda ingin membangunnya lagi, seperti ketika font diperbarui atau ketika lingkungan build diubah, Anda dapat membandingkan file diff dengan file referensi untuk mengetahui bagaimana font baru berbeda dari build sebelumnya.
Dengan opsi " -r ", dump sub-perintah membuat file diff antara dua file font, dan membandingkan file diff dengan file diff yang pernah ditinjau dalam direktori references .
Penggunaan khas opsi ini adalah seperti di bawah ini:
east-asian-spacing -p -g=build/glyphs * .otf |
east-asian-spacing dump -o=build/diff -r=references - Silakan lihat bagian Diff untuk opsi dan perpipaan " -p ".
Script build*.sh menyertakan opsi ini.
Bentuk pengujian membentuk string uji dan memeriksa apakah jarak kontekstual diterapkan atau tidak.
Opsi --test menetapkan tingkat pengujian bentuk.
east-asian-spacing --test 2 -v -o build input-font-fileLevel 0 menonaktifkan pengujian bentuk. Level 1 menjalankan uji asap menggunakan satu set kecil sampel. Level 2 menjalankan pengujian bentuk menggunakan satu set besar string uji. Nilai default adalah 1.
Algoritma ini agnostik bahasa dan berlaku untuk font CJK.
Paket ini menentukan pasangan mesin terbang untuk menyesuaikan jarak dengan satu set titik kode unicode yang ditentukan dalam kelas Config .
Kemudian untuk setiap pasangan, ia memeriksa apakah jarak tersebut berlaku dengan memeriksa garis mesin terbang dan menghitung kotak pembatas tinta mesin terbang. Misalnya, ketika mesin terbang sangat tebal, mesin terbang mungkin tidak memiliki cukup jarak internal, dan menerapkan jarak dapat menyebabkan mesin terbang bertabrakan. Paket ini secara otomatis mendeteksi kasus -kasus tersebut dan menghindari menerapkan jarak ke pasangan tersebut.
Perilaku otomatis ini dapat dinonaktifkan dengan menentukan bahasa di bawah ini, atau dengan mengatur Config.use_ink_bounds menjadi False dalam program Python Anda.
Ada konvensi khusus bahasa untuk di mana karakter tanda baca ditempatkan di ruang mesin terbang. Misalnya, pemberhentian penuh ideografi U+3002 harus ditempatkan di sudut kiri ruang terbang dalam bahasa Jepang, sementara itu harus ditempatkan di pusat di Cina tradisional.
Secara default, paket ini menentukan perbedaan seperti itu dari garis mesin mesin seperti yang dijelaskan dalam bagian algoritma di atas. Tetapi Anda dapat menentukan tag Sistem Bahasa OpenType untuk membiarkan paket ini mengikuti konvensi bahasa alih -alih menggunakan garis glyph. Contoh berikut menonaktifkan penentuan otomatis oleh garis mesin mesin terbang, dan menentukan bahwa font adalah font Jepang.
east-asian-spacing --language=JAN input-font-fileUntuk Koleksi Truetype (TTC), opsi bahasa berlaku untuk semua font di TTC secara default. Ketika Anda ingin menentukan berbagai bahasa untuk setiap font di TTC, ia menerima daftar yang dipisahkan koma. Contoh berikut menentukan Korea untuk indeks font 1, Sederhana Cina untuk indeks font 2, dan otomatis untuk semua font lainnya.
east-asian-spacing --language=,KOR,ZHS input-font-file.ttc Anda dapat menggabungkan kedua opsi ini. Contoh berikut ini berlaku JAN untuk indeks 2, dan ZHS ke indeks 3. Font lain di TTC tidak diubah.
east-asian-spacing --index=2,3 --language=JAN,ZHS input-font-file.ttcAnda mungkin ingin menyesuaikan pasangan karakter mana yang harus menyesuaikan jarak, dalam kasus seperti ketika font Anda mungkin tidak memiliki jarak yang diharapkan untuk beberapa karakter. Saat ini, ini hanya mungkin dari program Python.
Untuk contoh sederhana, silakan lihat fungsi test_config di tests/config_test.py .
Proyek CHWS_TOOL adalah contoh aktual dari menyesuaikan paket ini.
Paket ini menggunakan mesin pembentuk HarfBuzz dengan menggunakan Cython Binding Uharfbuzz.
Jika Anda ingin menggunakan build spesifik HarfBuzz, alat ini dapat memohon alat baris perintah HB-Shape eksternal sebagai gantinya dengan mengatur variabel lingkungan SHAPER .
export SHAPER=hb-shapeUntuk menginstal HB-Shape untuk Linux:
sudo apt get libharfbuzz-binUntuk menginstal HB-Shape untuk Mac dengan Homebrew:
brew install harfbuzzInstruksi untuk platform lain mungkin tersedia di command-not-found.com.
Jika Anda perlu mendiagnosis font atau kode, mengkloning dan menginstal menggunakan puisi direkomendasikan:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
poetry install
poetry shellMetode ini memiliki keunggulan berikut:
-e "atau setuptools " Mode Pengembangan ").Anda juga dapat menginstal direktori yang dikloning menggunakan PIP jika Anda lebih suka:
git clone https://github.com/kojiishi/east_asian_spacing
cd east_asian_spacing
pip install .Repositori ini berisi tes unit menggunakan pytest. Tes unit mencakup fungsi dasar termasuk tes bentuk, menambahkan fitur ke font uji, dan membandingkannya dengan referensi.
Jika Anda mengikuti bagian klon dan instal, alat untuk pengujian unit sudah diinstal. Sebelum Anda menjalankannya pertama kali, Anda perlu mengunduh font untuk pengujian:
./tests/download_fonts.pyAnda kemudian dapat menjalankan tes dengan:
pytestAtau jalankan mereka dengan beberapa versi python menggunakan TOX:
tox Direktori scripts memiliki beberapa skrip shell kecil.
build*.sh skrip berguna untuk membangun font, menghitung diff dari font sumber, dan membandingkan file diff dengan referensi. Berikut adalah contoh penggunaan.
./scripts/build.sh input-font-file.otf -v
./scripts/build-noto-cjk.sh ~ /fonts/noto-cjk -v