Hershey เป็นรูปแบบฟอนต์เวกเตอร์แบบข้อความ
(wiki.xxiivv.com)- Hershey Fonts เป็นหนึ่งในรูปแบบการแทนฟอนต์ดิจิทัลยุคแรกที่สร้างขึ้นในปี 1967 และไฟล์
.jhfเป็นไฟล์ข้อความที่แต่ละบรรทัดแทนหนึ่ง glyph - บรรทัดของ glyph ประกอบด้วย
id[5],length[3],left[1],right[1],points[?]โดย ID และจำนวนจุดถูกเข้ารหัสเป็นเลขฐานสิบ - พิกัดจุด ใช้อักขระสองตัวเพื่อแทนค่า
x,yแบบมีเครื่องหมาย โดยRคือ 0,Qคือ -1,Sคือ +1 - ค่าอักขระเรียงต่อจาก
J=-8ถึงZ=+8และตัวอย่างเช่นNWหมายถึงพิกัด-4,5 - การยกปากกา แสดงด้วย
" R"ซึ่งเป็นตัวอักษรRพิมพ์ใหญ่หลังช่องว่าง และเป็นคำสั่งพิเศษที่ไม่ลากเส้นไปยังตำแหน่งถัดไป
ภาพรวมของรูปแบบ
- Hershey Fonts เป็นหนึ่งในรูปแบบการแทนฟอนต์ดิจิทัลยุคแรกที่สร้างขึ้นในปี 1967 โดยไฟล์ฟอนต์เวกเตอร์ Hershey
.jhfเป็นไฟล์ข้อความที่หนึ่งบรรทัดแทนหนึ่ง glyph - แต่ละบรรทัดของ glyph ถูกเข้ารหัสเป็นห้าส่วน
id[5]: ID แบบเลขฐานสิบ ของ glyphlength[3]: ค่าเลขฐานสิบ ที่แสดงจำนวนจุดleft[1]: ตำแหน่งด้านซ้ายของกรอบขอบเขตright[1]: ตำแหน่งด้านขวาของกรอบขอบเขตpoints[?]: รายการจุดที่จบด้วยการขึ้นบรรทัดใหม่
- หนึ่งจุดประกอบด้วยอักขระสองตัว โดยแต่ละตัวแทนค่า
x,yแบบมีเครื่องหมาย - ตำแหน่งที่มี ตัวอักษร
Rพิมพ์ใหญ่หลังช่องว่าง เช่น" R"หมายถึงการยกปากกา ทำให้ไม่วาดเส้นไปยังตำแหน่งถัดไป
การแมปค่าและเอกสารอ้างอิง
- ค่าอักขระเรียงจาก
JถึงZเป็น-8ถึง+8โดยมีRเป็นจุดอ้างอิงของ 0J=-8,K=-7,L=-6,M=-5,N=-4,O=-3,P=-2,Q=-1R=0S=+1,T=+2,U=+3,V=+4,W=+5,X=+6,Y=+7,Z=+8
- ตัวอย่างเช่น
NWคือN=-4,W=+5ดังนั้นจึงเท่ากับพิกัด-4,5 - เอกสารที่เกี่ยวข้อง
- Hershey Renderer, Uxntal
- Hershey Vector Font, Paul Bourke
- Hershey Fonts
1 ความคิดเห็น
ความคิดเห็นจาก Lobste.rs
ถ้าใครสนใจ ผมกำลังทำ ชุดฟอนต์ Hershey เล็ก ๆ อยู่
มันให้ความรู้สึก ทันสมัยกว่า แบบอักษรอื่น ๆ ที่มักเห็นกันออนไลน์อยู่เล็กน้อย
ถ้ามีรูปให้ดูด้วยว่ามันออกมาเป็นอย่างไรเมื่อวาดด้วยพล็อตเตอร์และปากกาหัวหนาทั่วไปก็คงดี
โดยเฉพาะผมชอบที่ไฟล์
.jhfที่ให้มานั้น มีโครงสร้างที่ดี ฟอนต์ Hershey จำนวนมากบนอินเทอร์เน็ตมีฟิลด์idของทุก glyph เป็น12345หรือมีการขึ้นบรรทัดใหม่แบบบังคับในบาง glyph ทำให้การพาร์สไฟล์และการวาดข้อความยุ่งยากโดยไม่จำเป็นไม่นานมานี้ผมกำลังเล่นกับจอ e-ink Pimoroni Inky และคอนโทรลเลอร์ Raspberry Pi แล้วก็ได้เจอฟอนต์ Hershey กับฟอร์แมตไฟล์
.jhfไลบรารีที่ให้มาน่าจะมีฟอนต์ “Futural” ถ้าจำไม่ผิด และโดยรวมก็ทำงานได้ดี แต่มีปัญหาอยู่อย่างหนึ่งคือไม่มี อักษรสวีเดนå,ä,öตอนนี้ดูเหมือนคุณจะคุ้นกับฟอนต์ Hershey มากกว่าผมร้อยเท่า เลยอยากถามว่าคุณเคยเห็นไฟล์ฟอนต์
.jhfที่เก็บอักขระราว 255 ตัวแรกของตาราง ASCII ไหม ผมไม่แน่ใจว่าเป็นเพราะหาฟอนต์ไม่เจอ หรือจริง ๆ แล้วมันไม่มีอยู่ เลยอยากถามว่าเคยเห็นมาก่อนหรือเปล่านี่คือเวอร์ชันดัดแปลงของข้อมูลต้นฉบับ Hershey โดย Usenet Font Consortium (1986) ซึ่งใช้เสรีภาพแบบ โปรแกรมเมอร์ C ยุค 1986 กับฟอร์แมตข้อมูลจาก Calligraphy for Computers(1967, PDF) / A contribution to computer typesetting techniques : tables of coordinates for Hershey's repertory of occidental type fonts and graphic symbols พอสมควร
ฟอร์แมต fixed-field ของ Fortran ต้นฉบับดูเหมือนจะจัดการได้ง่ายกว่าเสียอีก แต่คาดว่าเทปข้อมูลที่ NTIS เคยแจกได้สูญหายไปแล้ว ในโพสต์ Usenet ยังมีคำเหน็บแนมประมาณว่า “จะมีใครอยากใช้ฟอร์แมตนั้นจริง ๆ เหรอ ...”
และยังทำให้ผมนึกขึ้นมาอีกว่าควรจะทำ ตัวแปลง Hershey OTF ที่ผมเปิดดูครั้งสุดท้ายราวปี 2016 ให้เสร็จ เปิดเผยแพร่ หรือเลิกมันไปเสียที: scruss/python-hershey. ขอคารวะทุกคนที่เคยลงไปปล้ำกับฟอร์แมตฟอนต์บ้า ๆ นี้
ยังมีโพรงกระต่ายฟอนต์เวกเตอร์ใหม่อีกอัน: GIMMS, ที่เคยใช้ใน University of Edinburgh
Frank Grießhammer เคยเขียนบทความและทำภาพประกอบดี ๆ เกี่ยวกับ Hershey และผลงานของเขาไว้: Frank Grießhammer
ฟอร์แมตนี้น่าจะมีประโยชน์มากกับ ซอฟต์แวร์เรนเดอเรอร์ ที่ผมกำลังเขียนอยู่ตอนนี้
มันเป็นโปรเจกต์เล่น ๆ เลยทั้งไม่อยากและไม่จำเป็นต้องรองรับฟอนต์ OTF/TTF ดังนั้นฟอนต์ Hershey จึงดูเป็นทางปรับปรุงที่ดีกว่าและต้นทุนต่ำกว่า เมื่อเทียบกับฟอนต์บิตแมปแบบ monospace ที่ใช้อยู่ตอนนี้ซึ่งได้แรงบันดาลใจมาจาก olive.c
อืม ไม่มี baseline เหรอ?
ถ้ามีแค่การแมประหว่าง glyph ID กับอักขระ ASCII/ยูนิโค้ด ก็น่าจะคำนวณ baseline ได้จากขนาดของ อักขระอ้างอิง อย่าง
0เมื่อนานมาแล้วผมเคยแปลงฟอนต์ Hershey เป็น JSON
มันค่อนข้างยืดยาว แต่ประมวลผลและอ่านได้ง่ายกว่า ถ้าใครต้องการ ก็โหลดไฟล์ 2.6MB ได้จาก ที่นี่
ดูเหมือนเป็น ฟอร์แมตเชิงคำสั่ง ที่สอดคล้องกับ https://en.wikipedia.org/wiki/Metafont แบบประกาศ
ฟอนต์ BGI ก็เคยมีโครงสร้างคล้ายกัน
เหตุผลหนึ่งที่ฟอนต์ Hershey มีประโยชน์คือมันเป็น ฟอร์แมตเวกเตอร์ที่เรียบง่าย ทำให้สร้างเอฟเฟกต์อื่น ๆ บนมันได้ง่าย ไม่ใช่แค่สำหรับพล็อตเตอร์ปากกา แต่รวมถึงการแสดงผลบนหน้าจอด้วย
ตัวอย่างเช่น ในภาพวิชวลไลซ์ของ AoC 2024 วันที่ 5 มีการสุ่มตัวอย่างจุดจากเวกเตอร์แล้วเอาไปใช้เป็นจุดกำเนิดของฟองอากาศ: https://hachyderm.io/deck/@bazzargh/113599143062296178
ส่วนวันที่ 12 มีการค่อย ๆ ลากเส้นเพื่อให้เกิดเอฟเฟกต์เหมือนเขียนตัวอักษรลงบนหน้าต่างที่มีน้ำค้างแข็ง: https://hachyderm.io/deck/@bazzargh/113639456289455465