1 คะแนน โดย GN⁺ 10 시간 전 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 แบบเลขฐานสิบ ของ glyph
    • length[3]: ค่าเลขฐานสิบ ที่แสดงจำนวนจุด
    • left[1]: ตำแหน่งด้านซ้ายของกรอบขอบเขต
    • right[1]: ตำแหน่งด้านขวาของกรอบขอบเขต
    • points[?]: รายการจุดที่จบด้วยการขึ้นบรรทัดใหม่
  • หนึ่งจุดประกอบด้วยอักขระสองตัว โดยแต่ละตัวแทนค่า x, y แบบมีเครื่องหมาย
  • ตำแหน่งที่มี ตัวอักษร R พิมพ์ใหญ่หลังช่องว่าง เช่น " R" หมายถึงการยกปากกา ทำให้ไม่วาดเส้นไปยังตำแหน่งถัดไป

การแมปค่าและเอกสารอ้างอิง

  • ค่าอักขระเรียงจาก J ถึง Z เป็น -8 ถึง +8 โดยมี R เป็นจุดอ้างอิงของ 0
    • J=-8, K=-7, L=-6, M=-5, N=-4, O=-3, P=-2, Q=-1
    • R=0
    • S=+1, T=+2, U=+3, V=+4, W=+5, X=+6, Y=+7, Z=+8
  • ตัวอย่างเช่น NW คือ N=-4, W=+5 ดังนั้นจึงเท่ากับพิกัด -4,5
  • เอกสารที่เกี่ยวข้อง

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 ให้ตรงกับเส้นกึ่งกลางแนวตั้งที่สม่ำเสมอ
      ถ้ามีแค่การแมประหว่าง 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