
Konversi karakter Cina menjadi font baris tunggal menggunakan visi komputer
Font baris tunggal seperti font Hershey sangat berguna untuk membuat grafik prosedural yang keren dan untuk ukiran. Mereka juga bisa dibilang lebih mudah dipelajari untuk jaring saraf.
Alat ini secara otomatis menghasilkan font baris tunggal Cina yang diberikan file font tipe true reguler (TTF/TTC). Ini dapat menghasilkan format Hershey klasik, atau file JSON yang berisi semua polylin.
Algoritma ini memindai raster raster karakter di berbagai sudut untuk menemukan segmen garis yang kemungkinan besar merupakan bagian dari stroke. Kemudian memperkirakan pukulan dengan menghubungkan, menggabungkan, dan membersihkan segmen garis.

pip install pillow ) Berikut ini adalah jenis file yang dapat dihasilkan perangkat lunak ini untuk mengkode font baris tunggal.
File JSON dengan satu objek. Kunci objek adalah indeks karakter unicode. Setiap peta kunci ke array polyline. Polyline adalah serangkaian poin. Poin adalah array 2 elemen yang berisi koordinat x dan y. Koordinat adalah pelampung antara 0,0 dan 1.0, dan (0,0) adalah sudut kiri atas. Misalnya:
{
"U+4E00" :[[[ 0.0 , 0.55 ], [ 1.0 , 0.55 ]]],
"U+4E01" :[[[ 0.02 , 0.02 ], [ 0.99 , 0.02 ]], [[ 0.51 , 0.02 ], [ 0.53 , 0.925 ], [ 0.31 , 1.0 ]]]
}Pengkodean di atas berisi dua karakter Cina pertama di Unicode, "一" dan "丁".
Font Hershey adalah kumpulan font vektor yang dikembangkan c. 1967 oleh Dr. Allen Vincent Hershey di Laboratorium Senjata Angkatan Laut, yang awalnya dirancang untuk diberikan menggunakan vektor pada tampilan tabung sinar katoda awal. Font tersedia untuk umum dan memiliki sedikit batasan penggunaan. Font vektor mudah diskalakan dan diputar dalam dua atau tiga dimensi; Akibatnya, font Hershey telah banyak digunakan dalam grafik komputer, program desain berbantuan komputer, dan baru-baru ini juga dalam aplikasi manufaktur berbantuan komputer seperti ukiran laser. (Wikipedia)
Tautan ini memberikan gambaran tentang cara parse font Hershey. Anda juga dapat menemukan implementasi saya sendiri di Lingdong-/p5-hershey-js.
Dibandingkan dengan file stroke, font Hershey berkali -kali lebih kompak, tetapi juga memiliki koordinat yang kurang akurat.
Jika Anda hanya tertarik untuk menggunakan font baris tunggal yang telah dihasilkan sebelumnya, Anda dapat mengambilnya di tempat-tempat berikut:
Catatan:
Heiti.hf.txt dan Kaiti.hf.txt awalnya didasarkan pada sistem macOS yang berpemilik STHeiti dan STKaiti . Mereka sekarang diganti dengan alternatif open source.
Jika Anda ingin menghasilkan font baris tunggal baru dari file TTF/TTC khusus, pertama-tama gunakan perintah berikut untuk menghasilkan file stroke yang dikodekan JSON.
python char2stroke.py build path/to/font.ttf
Argumen opsional:
--first [FIRST]
--height [HEIGHT]
--last [LAST]
--ngradient [NGRADIENT]
--output [OUTPUT]
--strw [STRW]
--width [WIDTH]
width dan height menentukan dimensi gambar raster karakter yang akan dipindai. Semakin besar angka -angka ini, semakin rinci dan semakin lambat. Default adalah 100 untuk keduanya.strw adalah perkiraan lebar stroke (dalam piksel, pada width dan height yang diberikan). Ini digunakan saat menggabungkan sapuan. Default adalah 10 .first dan last menentukan kisaran karakter unicode untuk dimasukkan. Nilai default adalah 0x4e00 dan 0x9fef , yang berisi semua glyphs "CJK Ideograph".ngradient adalah jumlah gradien berbeda yang digunakan untuk memindai gambar. Pada ngradient = 1 , hanya stroke pada 0 °, 45 ° dan 90 ° dipindai, sedangkan pada 2 , 3 dan 4 , lereng atan(1/2) , atan(1/3) dan atan(1/4) juga disertakan. Default adalah 2 .output : Path untuk menulis file output. Ketika ini tidak ditentukan, program menulis ke stdout , dan > (info) dan | (Info) dapat digunakan untuk mengarahkan ulang output.Sebelum menghasilkan file besar, akan sangat membantu untuk melakukan beberapa tes cepat pada set karakter kecil, bandingkan bagaimana font yang berbeda, dan tweak parameter. Perintah berikut memfasilitasi proses ini dengan visualisasi berdampingan dari hasil visi komputer.
python char2stroke.py test path/to/font1.ttf path/to/font2.ttf ...
Argumen opsional:
--corpus [CORPUS]
--height [HEIGHT]
--ngradient [NGRADIENT]
--nsample [NSAMPLE]
--strw [STRW]
--width [WIDTH]
corpus : String untuk diuji. Default adalah teks Thousand Character Classic.nsample : Jumlah karakter yang akan dipilih secara acak dari korpus. Default adalah 8 .build .Perintah berikut menghasilkan font Hershey dari file stroke yang diproduksi pada langkah sebelumnya.
python tohershey.py path/to/input.json > path/to/output.hf.txt
