original
smooth
Sistem berbasis grid untuk merancang simbol dan font sederhana. termasuk contoh font. Terutama dimaksudkan untuk gambar plotter.
Deskripsi simbol terlihat seperti ini:
S4,9:DS6|S3DtRqS2eLp
Anda dapat menggunakan spasi untuk memisahkan gerakan, sehingga Anda dapat menulisnya seperti ini:
S4,9: DS6| S3 DtRq S2 eLp
Bagian pertama (kiri : adalah bagian info . Yang saat ini berisi ukuran kisi (sebagai integers ). Di sini lebarnya adalah 4 dan tingginya 9 . Artinya, ada 4 dan 9 poin grid di dua arah. Itu berarti lebar simbol adalah 3 dan 8 .
Pada waktunya, bagian ini mungkin berisi hal -hal lain. Seperti perintah terjemahan. (Ini mungkin berguna jika Anda hanya menggambar dalam bagian tertentu dari kisi.)
Bagian selanjutnya adalah satu atau lebih jalur, dipisahkan oleh simbol pipa | . Secara khusus, contoh di atas harus menghasilkan dua jalur huruf b :
| <-- p1
|
|/- <-- p2
| |
| |
|-/
Berikut adalah beberapa contoh definisi simbol yang lebih kompleks:
asterisk: S3,9:M1,3DS|S3.75Dq1,0.25t1,0.25|M0.25,5Dt0.75,1q0.75,1
w: S5,9:S2D q1,4 t1,4 q1,4 t1,4
y: S4,9:S2Dq1.5,4|M3,2De1.5,4e0.5,1e
Saat menggambar jalur baru, kursor selalu disetel ulang ke origin , yaitu di sudut kiri atas. Sistem koordinat diputar seperti ini:
-
|
- --o-- x+
|
y+
Dari sana Anda dapat melakukan gerakan relatif dan absolut. Setelah perintah D dimasukkan, jalan akan mulai ditarik. Yang berarti Anda dapat memindahkan kursor ke posisi sebelum memulai setiap jalur.
Perintah berikut diizinkan:
p N t
| /
L - o - R <-- o is the current position of the cursor
/ |
e S q
Angka apa pun (lihat di bawah) setelah perintah arah ditafsirkan sebagai panjang langkah, jika tidak ukuran langkahnya adalah 1 . Anda juga dapat menggunakan dua angka yang dipisahkan oleh koma. Misalnya q2.5,3 akan memindahkan kursor dua setengah langkah ke kanan, dan tiga langkah ke bawah. Demikian pula p2,1/2 akan menggerakkan kursor dua langkah ke kiri, dan setengah langkah ke atas.
Angka yang diterima adalah bilangan bulat: 1 , pecahan: 1/2 atau desimal: 3.5 . Perhatikan bahwa semua desimal dikonversi menjadi pecahan. Desimal adalah kenyamanan yang memungkinkan Anda menulis 4.5 , bukannya 9/2 . Namun, Anda lebih baik menggunakan 13/3 daripada 4.33... Yang terakhir kemungkinan besar tidak akan bertambah di dalam batas grid. Anda juga dapat menggunakan beberapa perintah dalam arah yang sama, jika Anda merasa lebih mudah. Misalnya R4 R1/2 .
Itu berarti bahwa jika Anda keluar dari kesalahan batas, itu baik karena Anda menggunakan desimal yang tidak "bertambah" dengan benar di dalam jaringan. Atau hanya karena angka yang dihasilkan berada di luar jaringan.
Angka dikonversi menjadi mengapung sebelum diekspor ke json atau svg
Gerakan absolut berikut diizinkan
Mx,y untuk pindah ke posisi x,y relatif ke origin .Z Pindah ke posisi pertama dari jalur yang ditarik. (default ke origin )W bergerak untuk pindah ke sisi kanan gambar.w bergerak ke sisi kiri gambar.H untuk pindah ke bagian atas gambar.h untuk bergerak ke bagian bawah gambar. Anda dapat memberikan kelompok substitusi dalam properti groups dari spesifikasi json . Nama kelompok harus selalu dimulai dengan ( dan diakhiri dengan A ) . Setiap (group) dalam definisi jalur akan diganti kata demi kata sampai tidak ada lagi ( atau ) yang tersisa dalam spesifikasi jalur. (Catatan: Ini berarti Anda dapat menyebabkan loop tak terbatas serta kebocoran memori.)
Jalur font termasuk dalam dat/*/res.json , bersama dengan SVG untuk setiap simbol. Deskripsi mentah ada di dat/*.json .
Saat ini font yang disertakan adalah:
original : Huruf Blockysmooth : Versi yang lebih halus. Untuk menggunakan perpustakaan ini
python3 setup.py install --user
Anda kemudian dapat menggunakan perpustakaan dari kode Anda. Lihat gridfont/__init__.py atau gridfont/writer.py untuk mendapatkan ide. Lebih banyak dokumentasi mungkin ditambahkan nanti, jika ini tampaknya berguna bagi orang -orang.
Untuk melihat opsi lain digunakan:
gridfont --help
Untuk menguraikan simbol .json file seperti dat/font.json menjalankan berikut, untuk mengeluarkan hasil ke direktori out
gridfont parse font.json out [--svg]
Jika Anda memasukkan bendera --svg , SVG juga akan dibuat untuk setiap simbol.
Ketika Anda memiliki file simbol parsed (seperti dat/original/res.json ), Anda dapat menulis svgs dengan itu seperti ini:
gridfont write res.json tmp.svg 'my text'
Ini adalah proyek yang saya mulai karena saya ingin "font" sederhana yang memungkinkan saya untuk dengan mudah menggambar mesin terbang berbasis garis saat merencanakan. Saya tidak tahu apakah saya akan akhirnya mengembangkan ini lebih jauh, tetapi saya terbuka untuk saran.
2 dan 3 ?AZIni sangat mirip dengan font Hershey: https://en.wikipedia.org/wiki/hershey_fonts. Yang mungkin harus Anda gunakan, karena telah ada selama beberapa waktu
Metode ini juga mirip dengan menggambar logo: https://en.wikipedia.org/wiki/logo_(programming_language)
Definisi jalur juga mirip dengan format SVG (tapi lebih sederhana): https://en.wikipedia.org/wiki/scalable_vector_graphics
Jika Anda menganggap ini menarik, Anda mungkin juga menyukai bahasa pengemasan radikal rekursif: https://github.com/lingdong-/rrpl
Metafont (lateks): https://en.wikipedia.org/wiki/metafont
Leonsans: https://github.com/cmiscm/leonsans