- 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 और सामान्य मोटे pen से खींचने पर ये कैसे दिखते हैं, इसकी तस्वीरें भी हों तो अच्छा होगा
खास तौर पर यह अच्छा है कि दिए गए
.jhffiles अच्छी तरह structured हैं। ऑनलाइन कई Hershey fonts में सभी glyphs काidfield12345होता है, या कुछ glyphs में जबरन line breaks डाल दिए जाते हैं, जिससे file parsing और text drawing बेवजह मुश्किल हो जाता हैहाल ही में Pimoroni Inky e-ink display और Raspberry Pi controller के साथ काम करते हुए मेरा सामना Hershey fonts और
.jhffile format से हुआ। दी गई library में, जहाँ तक याद है, “Futural” font था, और कुल मिलाकर वह ठीक चलता है, लेकिन एक समस्या है कि उसमें Swedish characterså,ä,öनहीं हैंअब लगता है कि आप Hershey fonts से मुझसे 100 गुना ज़्यादा परिचित होंगे, इसलिए पूछना चाहता हूँ: क्या आपने कभी ऐसा
.jhffont 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 नहीं है?
अगर 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