original

smooth
ระบบที่ใช้กริดสำหรับการออกแบบสัญลักษณ์และแบบอักษรง่าย ๆ รวมถึงตัวอย่างแบบอักษร ส่วนใหญ่มีไว้สำหรับภาพวาดพล็อตเตอร์
คำอธิบายสัญลักษณ์มีลักษณะเช่นนี้:
S4,9:DS6|S3DtRqS2eLp
คุณสามารถใช้ช่องว่างเพื่อแยกการเคลื่อนไหวเพื่อให้คุณสามารถเขียนได้เช่นนี้:
S4,9: DS6| S3 DtRq S2 eLp
ส่วนแรก (ซ้ายของ : คือส่วน info ซึ่งปัจจุบันมีขนาดของกริด (เป็น integers ) ที่นี่ความกว้างคือ 4 และความสูงคือ 9 นั่นคือมี 4 และ 9 จุดกริดในสองทิศทาง นั่นหมายถึงความกว้างของสัญลักษณ์จะเป็น 3 และ 8
ในเวลานี้ส่วนนี้อาจมีสิ่งอื่น ๆ เช่นคำสั่งแปล (สิ่งนี้อาจมีประโยชน์หากคุณวาดภาพภายในส่วนหนึ่งของกริดเท่านั้น)
ส่วนถัดไปคือเส้นทางอย่างน้อยหนึ่งเส้นทางคั่นด้วยสัญลักษณ์ท่อ | - โดยเฉพาะตัวอย่างข้างต้นควรส่งผลให้สองเส้นทางของตัวอักษร b :
| <-- p1
|
|/- <-- p2
| |
| |
|-/
นี่คือตัวอย่างบางส่วนของคำจำกัดความสัญลักษณ์ที่ซับซ้อนมากขึ้น:
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
เมื่อวาดเส้นทางใหม่เคอร์เซอร์จะถูกรีเซ็ตเป็น origin เสมอซึ่งอยู่ที่มุมซ้ายบน ระบบพิกัดหมุนแบบนี้:
-
|
- --o-- x+
|
y+
จากนั้นคุณสามารถทำการเคลื่อนไหวที่สัมพันธ์และสัมบูรณ์ เมื่อป้อนคำสั่ง D พา ธ จะเริ่มวาด ซึ่งหมายความว่าคุณสามารถย้ายเคอร์เซอร์ไปยังตำแหน่งก่อนที่จะเริ่มต้นแต่ละเส้นทาง
อนุญาตให้ใช้คำสั่งต่อไปนี้:
p N t
| /
L - o - R <-- o is the current position of the cursor
/ |
e S q
หมายเลขใด ๆ (ดูด้านล่าง) หลังจากคำสั่งทิศทางถูกตีความเป็นความยาวของขั้นตอนมิฉะนั้นขนาดขั้นตอนคือ 1 คุณยังสามารถใช้ตัวเลขสองตัวคั่นด้วยเครื่องหมายจุลภาค ตัวอย่างเช่น q2.5,3 จะย้ายเคอร์เซอร์สองขั้นและครึ่งก้าวไปทางขวาและสามขั้นตอนลง ในทำนองเดียวกัน p2,1/2 จะย้ายเคอร์เซอร์เหลืออีกสองขั้นตอนและครึ่งก้าวขึ้น
ตัวเลขที่ได้รับการยอมรับเป็นจำนวนเต็ม: 1 , เศษส่วน: 1/2 หรือทศนิยม: 3.5 โปรดทราบว่าทศนิยมทั้งหมดจะถูกแปลงเป็นเศษส่วน ทศนิยมเป็นความสะดวกสบายที่ช่วยให้คุณเขียน 4.5 แทน 9/2 อย่างไรก็ตามคุณควรใช้ 13/3 แทนที่จะเป็น 4.33... หลังมักจะไม่เพิ่มขึ้นภายในขอบเขตของกริด คุณยังสามารถใช้หลายคำสั่งในทิศทางเดียวกันหากคุณพบว่าง่ายขึ้น เช่น R4 R1/2
นั่นหมายความว่าหากคุณได้รับข้อผิดพลาดในขอบเขตอาจเป็นเพราะคุณใช้ทศนิยมที่ไม่ "เพิ่ม" อย่างถูกต้องภายในกริด หรือเพียงเพราะจำนวนผลลัพธ์อยู่นอกกริด
ตัวเลขจะถูกแปลงเป็นลอยก่อนที่จะถูกส่งออกไปยัง json หรือ svg
อนุญาตให้มีการเคลื่อนไหวสัมบูรณ์ต่อไปนี้
Mx,y เพื่อย้ายไปยังตำแหน่ง x,y เทียบกับ originZ ย้ายไปยังตำแหน่งแรกของเส้นทางที่วาด (ค่า origin )W ที่จะย้ายออกไปทางด้านขวามือของภาพวาดw ย้ายไปทางด้านซ้ายของภาพวาดH เพื่อย้ายไปด้านบนของภาพวาดh เพื่อเลื่อนไปที่ด้านล่างของภาพวาด คุณสามารถให้กลุ่มทดแทนในทรัพย์สินของ groups ของข้อกำหนด json ชื่อกลุ่มควรเริ่มต้นด้วย ( และลงท้ายด้วย a ) เสมอ (group) ใด ๆ ในนิยามเส้นทางจะถูกแทนที่คำต่อคำจนกว่าจะไม่มี ( หรือ ) เหลืออยู่ในข้อกำหนดของเส้นทาง (หมายเหตุ: ซึ่งหมายความว่าคุณสามารถทำให้ลูปที่ไม่มีที่สิ้นสุดและการรั่วไหลของหน่วยความจำ)
เส้นทางฟอนต์จะรวมอยู่ใน dat/*/res.json พร้อมกับ SVGs สำหรับแต่ละสัญลักษณ์ คำอธิบายดิบอยู่ใน dat/*.json
ในขณะนี้ฟอนต์ที่รวมอยู่คือ:
original : ตัวอักษรบล็อกsmooth : เวอร์ชันที่ราบรื่นขึ้น เพื่อใช้ห้องสมุดนี้
python3 setup.py install --user
จากนั้นคุณสามารถใช้ไลบรารีจากรหัสของคุณ ดู gridfont/__init__.py หรือ gridfont/writer.py เพื่อรับแนวคิด อาจมี การเพิ่มเอกสารเพิ่มเติมในภายหลังหากดูเหมือนว่าจะเป็นประโยชน์กับผู้คน
เพื่อดูการใช้ตัวเลือกอื่น ๆ :
gridfont --help
เพื่อแยกวิเคราะห์ไฟล์ .json เช่น dat/font.json เรียกใช้ต่อไปนี้เพื่อส่งออกผลลัพธ์ไป out ไดเรกทอรี
gridfont parse font.json out [--svg]
หากคุณรวมธง --svg SVG จะถูกสร้างขึ้นสำหรับแต่ละสัญลักษณ์
เมื่อคุณมีไฟล์สัญลักษณ์ที่แยกวิเคราะห์ (เช่น dat/original/res.json ) คุณสามารถเขียน SVGs ด้วยสิ่งนี้:
gridfont write res.json tmp.svg 'my text'
นี่เป็นโครงการที่ฉันเริ่มต้นเพราะฉันต้องการ "แบบอักษร" ที่เรียบง่ายซึ่งจะช่วยให้ฉันสามารถวาดร่ายมนตร์ที่ใช้สายได้อย่างง่ายดายในขณะที่พล็อต ฉันไม่รู้ว่าฉันจะพัฒนาสิ่งนี้ต่อไปหรือไม่ แต่ฉันเปิดรับคำแนะนำ
2 และ 3 ?AZสิ่งนี้คล้ายกับ Hershey Fonts: https://en.wikipedia.org/wiki/hershey_fonts ซึ่งคุณควรใช้เพราะพวกเขาได้รับมาระยะหนึ่งแล้ว
วิธีนี้ยังคล้ายกับการวาดในโลโก้: https://en.wikipedia.org/wiki/logo_(programming_language)
คำจำกัดความของพา ธ ก็คล้ายกับรูปแบบ SVG (แต่ง่ายกว่า): https://en.wikipedia.org/wiki/Scalable_Vector_Graphics
หากคุณพบว่าสิ่งนี้น่าสนใจคุณอาจชอบภาษาบรรจุภัณฑ์ที่รุนแรงซ้ำ ๆ : https://github.com/lingdong-/rrpl
metafont (latex): https://en.wikipedia.org/wiki/metafont
Leonsans: https://github.com/cmiscm/leonsans