.webp langsung dari file teks untuk dicetakjson khusus didukung Pertama, Anda harus mengunduh handwriter.py atau menyalin kode sumbernya ke IDE Anda. Jika Anda ingin menggunakan konfigurasi khusus atau preset font, cukup klon penulis tangan secara langsung:
gitclone https://github.com/Unbinilium/Handwriter.git
Kedua, instal dependensi yang diperlukan oleh penulis tangan-python3 :
pip3 install uuid pillow twine setuptools wheel tox pytest handright
Ketiga, masukkan Jalur Penulis Tangan dan jalankan handwriter.py oleh python3 handwriter.py , ikuti tips yang ditampilkan di konsol. Ini menghasilkan file output .webp menggunakan konfigurasi default.
Last but not least, untuk menghindari beberapa kesalahan langka, memastikan nama file teks Anda adalah *.txt dan kedua nama dan teks dikodekan dengan UTF-8 . Untuk font khusus, silakan gunakan file truetypefont yang ekstensi .ttf , dan saya sarankan untuk menggunakan font yang disukai tulisan tangan secara default. Remmber OutfilePath adalah jalur direktori tetapi bukan jalur file, nama luar secara otomatis dihasilkan oleh UUID .
Untuk kustomisasi lebih lanjut, silakan edit file konfigurasi penulis tangan-python3 bernama handwriter.json secara manual, contoh default ada di sini:
{
"text_file_path" : " ~/*.txt " ,
"font_file_path" : " ~/*.ttf " ,
"output_path" : " ~/ " ,
"background_color" : " white " ,
"background_width" : 2480 ,
"background_hight" : 3500 ,
"font_color" : " black " ,
"font_size" : 80 ,
"font_size_sigma" : 2 ,
"perturb_x_sigma" : 2 ,
"perturb_y_sigma" : 2 ,
"perturb_theta_sigma" : 0.05 ,
"line_spacing" : 80 ,
"line_spacing_sigma" : 3 ,
"word_spacing" : -30 ,
"word_spacing_sigma" : 3 ,
"left_margin" : 150 ,
"top_margin" : 150 ,
"right_margin" : 150 ,
"bottom_margin" : 150 ,
"end_chars" : " ,。》?;:’”】}、!%),.>?;:]}!%)′″℃℉ "
} Semua *_path harus khusus. Kemudian jalankan handwriter.py dengan argumen Path File Konfigurasi oleh python3 handwriter.py <configuration file path> .
Definisi parameter pengaturan tipe dasar ada di sini. Untuk memperkuat ketajaman dan kejelasan teks, menggunakan ukuran kertas yang besar ( background_width , background_hight ) dan font_size besar selalu disarankan. Harap perhatikan parameter line_spacing harus selalu lebih besar dari font_size . Jika Anda mempertimbangkan jarak kata terlalu besar, atur ke angka negatif.
- ______________________________________________________
^ | Paper ^ |
| | word_spacing | top_margin |
b | left_margin |< --- >| v |
a | < --- > |-----------------------------| - |
c | - ------------ ------------ ^ |
k | ^ | ******** | | ******** | | line_ |
g | font_ | | ** | | ** ** | | |
r | size | | ** | | ** ** | | spacing |
o | v | ** | | ******** | v |
u | - ------------ ------------ - |
n | |-----------------------------|< -------- > |
d | ------------ right_margin |
| | | ******** | |
h | | *** ** | |
i | | ** | |
g | | ** char | |
h | ------------ |
t | ^ |
| | | bottom_margin |
v | v |
- |____________________________________________________ |
|<------- background_width -------> | Biasanya parameter font_color diatur ke black dan background_color diatur ke white , menggunakan profil warna RGBA dan merasa bebas untuk mengatur warna dengan mengkhususkan nama warna. Juga background_color bisa berupa jalur file gambar , dalam hal ini background_color adalah singkatan dari jalur file gambar latar belakang , coba ini jika Anda ingin menggunakan gambar latar belakang khusus.
Parameter *_sigma berarti rentang mengganggu acak dan selalu ditentukan oleh font yang disukai tulisan tangan yang telah Anda gunakan, selalu ubah yang sangat cocok dengan font khusus Anda secara manual. Misalnya "font_size_sigma":2 berarti ukuran karakter yang mengganggu secara acak dalam rentang font_size ± 2 . Demikian pula "perturb_theta_sigma":0.05 berarti jari -jari rotasi stroke karakter yang mengganggu secara acak dalam rentang horizontal ± 0.05 . Untuk menghindari beberapa karakter khusus seperti ,。》?;:'”】}、!%),.>?;:]}!%)′″℃℉ Muncul di lini inden, yang tidak mengikuti konvensi menulis umumnya yang terlihat aneh, diperlukan parameter end_chars yang berspesialisasi.
Pertama, Anda harus mengunduh handwriter.cpp atau menyalin kode sumbernya ke IDE Anda. Jika Anda ingin menggunakan preset font default, cukup klon penulis tangan secara langsung:
gitclone https://github.com/Unbinilium/Handwriter.git
Kedua, silakan jalankan handwriter.cpp dengan argumen yang dikonfigurasi , dan argumen harus mengikuti contoh template di bawah ini:
handwriter.cpp <TEXT PATH> <OUT PUT PATH> <FONT(1) PATH> <FONT(2) PATH> ... <FONT(n) PATH>
Setiap argumen dibagi dengan ruang angkasa dan ikuti urutan contoh, file teks di <TEXT PATH> tidak bisa kosong dan <OUT PUT PATH> harus berisi nama file dengan ekstensi file .html , nomor jalur font dibatasi oleh ukuran int . Hati -hati penulis tangan membutuhkan setidaknya 1 jalur font.
Misalnya kita dapat menggunakan 4 font khusus untuk mensimulasikan tulisan tangan dari /usr/local/example.txt :
handwriter.cpp "/handwriter-master/example.txt" "/handwriter-master/example.html" "/handwriter-master/font/font1.ttf" "/handwriter-master/font/font2.otf" "/handwriter-master/font/font3.woff" "https://fonts.gstatic.com/example.woff2"
Ini cukup mengonversi example.txt ke example.html dengan gaya font yang disukai tulisan tangan, jadi lebih mudah menggunakan berbagai jenis font yang hanya ditentukan oleh browser Anda. Format jalur juga fleksibel, jalur lokal atau URL keduanya OK. Kalau tidak, saya sarankan untuk menggunakan font yang disukai tulisan tangan secara default. Untuk kustomisasi lebih lanjut seperti judul HTML , ukuran font , dan ruang margin , edit #define in handwriter.cpp :
# define HTML_TITLE " Handwriter "
# define FONT_SIZE_MIN 21
# define FONT_SIZE_MAX 25
# define FONT_SIZE_PRECISON 0.1
# define MARGIN_MIN 5.0
# define MARGIN_MAX 5.5
# define MARGIN_PRECISION 0.01Klik dua kali terakhir untuk membuka HTML yang dihasilkan di browser Anda dan mencetaknya dengan printer Anda, tulisan tangan palsu mendapat!
Saat ini penulis tangan-CPP hanyalah ide yang sangat sederhana dan dalam tingkat penyelesaian yang sangat rendah, sebenarnya dengan algoritma yang sangat canggung. Untuk siapa seperti guru Anda dapat melihat melalui trik Anda dengan mudah.
Untuk generasi tulisan tangan yang lebih benar -benar, diperlukan lebih banyak derajat kebebasan transformasi, seperti posisi horizontal, posisi vertikal dan ukuran font. Dan keseluruhan setiap kata harus terganggu secara acak termasuk sudut rotasi stroke. Juga acak tetapi tidak acak sementara, algoritma untuk tekanan pena, kecepatan bergerak NIT dan sebagainya diperlukan. Dan lebih baik menggunakan lengan mekanis untuk mensimulasikan tulisan tangan daripada printer.
Saya menulis program ini hanya untuk bersenang -senang dan belajar karakter prinsip yang lebih dalam dengan berlatih. Jelas untuk membuat ini sempurna, menggunakan C ++ dan HTML bukanlah ide yang bagus, coba-coba penulis tangan-python3 sebagai gantinya.
Penulis tangan ditulis oleh Unbinilium. Semua preset font berasal dari internet, beberapa font Cina dari Hanyi.