1 पॉइंट द्वारा GN⁺ 10 시간 전 | 1 टिप्पणियां | WhatsApp पर शेयर करें
  • Hershey Fonts 1967 में बनाया गया शुरुआती digital font representation में से एक है, और .jhf फ़ाइल एक text file होती है जिसमें हर पंक्ति एक glyph को दर्शाती है
  • glyph line id[5], length[3], left[1], right[1], points[?] से बनी होती है, और ID तथा point count को decimal में encode किया जाता है
  • point coordinates दो characters के रूप में signed x, y values को दर्शाते हैं, और R का मतलब 0, Q का -1, S का +1 होता है
  • character values J=-8 से Z=+8 तक चलते हैं, और उदाहरण के लिए NW का मतलब -4,5 coordinate है
  • pen lift को space के बाद आने वाले uppercase R, यानी " R", से दिखाया जाता है; यह एक special action है जिसमें अगली position तक line नहीं खींची जाती

फ़ॉर्मैट का अवलोकन

  • Hershey Fonts 1967 में बनाया गया शुरुआती digital font representation में से एक है, और Hershey vector font file .jhf एक text file होती है जिसमें एक पंक्ति एक glyph को दर्शाती है
  • हर glyph line को पाँच हिस्सों में encode किया जाता है
    • id[5]: glyph का decimal ID
    • length[3]: points की संख्या बताने वाली decimal value
    • left[1]: bounding box की बाईं position
    • right[1]: bounding box की दाईं position
    • points[?]: newline पर समाप्त होने वाली points की सूची
  • एक point दो characters से बना होता है, जो signed x, y values को दर्शाते हैं
  • " R" की तरह space के बाद uppercase R आने पर pen उठाने की क्रिया होती है, यानी अगली position तक line नहीं खींची जाती

value mapping और संदर्भ सामग्री

  • character values 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 coordinate को दर्शाता है
  • संबंधित सामग्री

1 टिप्पणियां

 
Lobste.rs की राय
  • अगर किसी की रुचि हो, तो मैं एक छोटा Hershey font collection बना रहा हूँ
    इसमें ऑनलाइन आम तौर पर दिखने वाले दूसरे टाइपफेस की तुलना में थोड़ा अधिक modern feel है

    • बढ़िया है। जब मैं plotter के साथ ज़्यादा काम करता था, तब उपयोगी fonts बहुत कम होने का अफसोस रहता था, और ये fonts नए और देखने में अच्छे लगते हैं
      अगर plotter और सामान्य मोटे pen से खींचने पर ये कैसे दिखते हैं, इसकी तस्वीरें भी हों तो अच्छा होगा
    • उपयोगी लग रहा है
      खास तौर पर यह अच्छा है कि दिए गए .jhf files अच्छी तरह structured हैं। ऑनलाइन कई Hershey fonts में सभी glyphs का id field 12345 होता है, या कुछ glyphs में जबरन line breaks डाल दिए जाते हैं, जिससे file parsing और text drawing बेवजह मुश्किल हो जाता है
    • fonts सच में बहुत अच्छे दिखते हैं
      हाल ही में Pimoroni Inky e-ink display और Raspberry Pi controller के साथ काम करते हुए मेरा सामना Hershey fonts और .jhf file format से हुआ। दी गई library में, जहाँ तक याद है, “Futural” font था, और कुल मिलाकर वह ठीक चलता है, लेकिन एक समस्या है कि उसमें Swedish characters å, ä, ö नहीं हैं
      अब लगता है कि आप Hershey fonts से मुझसे 100 गुना ज़्यादा परिचित होंगे, इसलिए पूछना चाहता हूँ: क्या आपने कभी ऐसा .jhf font file देखा है जिसमें ASCII table के शुरुआती 255 या इतने characters हों? समझ नहीं आ रहा कि मैं font ढूँढ नहीं पा रहा हूँ, या सच में ऐसा कोई है ही नहीं, इसलिए सोचा आपसे पूछ लूँ
  • यह Hershey के मूल डेटा का Usenet Font Consortium (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 data format पर इसने काफ़ी 1986-era C programmer जैसी छूट ले ली है
    असली Fortran fixed-field format उलटे ज़्यादा आसान लगता है, लेकिन NTIS पर उपलब्ध data tape के खो जाने की आशंका है। Usenet पोस्ट में “असल में कौन उस format का इस्तेमाल करना चाहेगा …” जैसी तंजभरी बात भी थी
    और यह याद दिलाने के लिए धन्यवाद कि मुझे वह Hershey OTF converter जो मैंने लगभग 2016 में आख़िरी बार देखा था, या तो पूरा करना चाहिए, या जारी करना चाहिए, या छोड़ देना चाहिए: scruss/python-hershey. इस पागल font format से कभी न कभी भिड़ चुके सभी लोगों को सलाम
    एक और नया vector font rabbit hole भी है: GIMMS, जो University of Edinburgh में इस्तेमाल होता था
    Frank Grießhammer ने Hershey और उसके काम पर अच्छा लेख और चित्र छोड़े हैं: Frank Grießhammer

  • जो software renderer मैं अभी लिख रहा हूँ, उसके लिए यह format काफ़ी उपयोगी लग रहा है
    यह एक toy project है, इसलिए मैं OTF/TTF fonts को support न तो करना चाहता हूँ, न ही उसकी ज़रूरत है; उस हिसाब से Hershey fonts, olive.c से प्रेरित मौजूदा fixed-width bitmap font की तुलना में बेहतर और कम-लागत वाला सुधार लगते हैं

  • हम्म, क्या इसमें baseline नहीं है?

    • अब तक जो उदाहरण मैंने देखे हैं, उनमें glyphs को vertical direction में एक समान centerline पर align किया गया लगता है
      अगर glyph ID और ASCII/Unicode character के बीच mapping हो, तो शायद 0 जैसे किसी reference character के dimensions से baseline निकाली जा सकती है
  • बहुत पहले मैंने Hershey fonts को JSON में convert किया था
    यह काफ़ी verbose है, लेकिन process करना और पढ़ना आसान है। जिसे चाहिए, वह 2.6MB file यहाँ से ले सकता है

  • यह declarative https://en.wikipedia.org/wiki/Metafont के मुकाबले एक imperative format जैसा लगता है

  • BGI fonts की भी मिलती-जुलती संरचना थी

  • Hershey fonts के उपयोगी होने की एक वजह यह है कि यह सरल vector format है, इसलिए pen plotter के अलावा screen display के लिए दूसरे effects भी इसके ऊपर बनाना आसान होता है
    उदाहरण के लिए, AoC 2024 दिन 5 के visualization में vector से points sample करके उन्हें bubble nucleation points की तरह इस्तेमाल किया गया था: https://hachyderm.io/deck/@bazzargh/113599143062296178
    दिन 12 में lines को धीरे-धीरे draw करके ऐसा effect बनाया गया था मानो पाले जमी खिड़की पर लिख रहे हों: https://hachyderm.io/deck/@bazzargh/113639456289455465