1 Punkte von GN⁺ 10 시간 전 | 1 Kommentare | Auf WhatsApp teilen
  • Hershey Fonts sind eine der frühen digitalen Schriftdarstellungen, die 1967 entstanden; eine .jhf-Datei ist eine Textdatei, in der jede Zeile ein Glyph repräsentiert
  • Eine Glyph-Zeile besteht aus id[5], length[3], left[1], right[1], points[?], wobei ID und Anzahl der Punkte dezimal codiert sind
  • Punktkoordinaten stellen mit zwei Zeichen vorzeichenbehaftete x- und y-Werte dar; R entspricht 0, Q entspricht -1 und S entspricht +1
  • Die Zeichenwerte reichen von J=-8 bis Z=+8; zum Beispiel bedeutet NW die Koordinate -4,5
  • Stift abheben wird als " R" dargestellt, also als Leerzeichen gefolgt von einem großen R; das ist eine spezielle Aktion, bei der bis zur nächsten Position keine Linie gezeichnet wird

Formatüberblick

  • Hershey Fonts sind eine der frühen digitalen Schriftdarstellungen, die 1967 entstanden; eine Hershey-Vektor-Schriftdatei .jhf ist eine Textdatei, in der eine Zeile genau ein Glyph repräsentiert
  • Jede Glyph-Zeile ist in fünf Teile codiert
    • id[5]: die dezimal codierte ID des Glyphs
    • length[3]: ein Dezimalwert, der die Anzahl der Punkte angibt
    • left[1]: die linke Position der Bounding Box
    • right[1]: die rechte Position der Bounding Box
    • points[?]: eine Punktliste, die mit einem Zeilenumbruch endet
  • Ein einzelner Punkt besteht aus zwei Zeichen, die jeweils vorzeichenbehaftete x- und y-Werte darstellen
  • Eine Stelle wie " R", also ein Leerzeichen gefolgt von einem großen R, bedeutet, dass der Stift abgehoben wird und bis zur nächsten Position keine Linie gezogen wird

Wertezuordnung und Referenzen

  • Die Zeichenwerte laufen von J bis Z und entsprechen -8 bis +8, wobei R der Referenzwert 0 ist
    • 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
  • Zum Beispiel entspricht NW der Koordinate -4,5, weil N=-4 und W=+5 ist
  • Verwandte Materialien

1 Kommentare

 
Lobste.rs-Kommentare
  • Falls es jemanden interessiert: Ich baue gerade eine kleine Sammlung von Hershey-Schriften
    Sie wirken ein wenig moderner als viele andere Schriften, die man online so sieht

    • Cool. Als ich noch mehr mit Plottern gearbeitet habe, war ich immer enttäuscht, wie wenige brauchbare Schriften es gab; diese hier wirken neu und ansprechend
      Es wäre auch schön, Fotos davon zu sehen, wie sie mit einem Plotter und mit normalen breiten Stiften aussehen
    • Sieht nützlich aus
      Besonders gut finde ich, dass die bereitgestellten .jhf-Dateien sauber strukturiert sind. Bei vielen Hershey-Schriften online steht im id-Feld aller Glyphen 12345, oder es gibt in manchen Glyphen erzwungene Zeilenumbrüche, was das Parsen der Dateien und das Zeichnen von Text unnötig erschwert
    • Das sind wirklich sehr ansehnliche Schriften
      Ich habe mich vor Kurzem mit einem Pimoroni-Inky-E-Ink-Display und einem Raspberry-Pi-Controller beschäftigt und bin dabei auf Hershey-Schriften und das .jhf-Dateiformat gestoßen. In der mitgelieferten Bibliothek gab es meiner Erinnerung nach eine Schrift namens „Futural“, und insgesamt funktioniert sie gut, aber ein Problem gibt es: Die schwedischen Buchstaben å, ä, ö fehlen
      Du scheinst jetzt mit Hershey-Schriften etwa 100-mal vertrauter zu sein als ich, daher wollte ich fragen, ob du schon einmal eine .jhf-Schriftdatei gesehen hast, die ungefähr die ersten 255 Zeichen der ASCII-Tabelle enthält. Ich weiß nicht, ob ich die Schrift nur nicht finde oder ob es sie tatsächlich nicht gibt, daher wollte ich fragen, ob du so etwas schon gesehen hast
  • Das hier ist eine vom Usenet Font Consortium (1986) überarbeitete Version der ursprünglichen Hershey-Daten, und bei der ursprünglichen Calligraphy for Computers-Datenstruktur (1967, PDF) / A contribution to computer typesetting techniques : tables of coordinates for Hershey's repertory of occidental type fonts and graphic symbols wurde ziemlich viel 1986er-C-Programmiererfreiheit walten gelassen
    Das ursprüngliche Fortran-Format mit festen Feldern wirkt eigentlich einfacher zu handhaben, aber das früher bei NTIS verfügbare Datenband gilt wohl als verloren. Im Usenet-Post gab es auch eine spöttische Bemerkung nach dem Motto: „als ob das Format wirklich jemand benutzen wollte …“
    Und danke, dass du mich wieder daran erinnert hast, dass ich den Hershey-OTF-Konverter, den ich mir zuletzt etwa 2016 angesehen habe, entweder fertigstellen, veröffentlichen oder endgültig aufgeben sollte: scruss/python-hershey. Grüße an alle, die sich schon einmal mit diesem verrückten Schriftformat angelegt haben
    Es gibt noch einen neuen Kaninchenbau für Vektorschriften: GIMMS, verwendet an der University of Edinburgh
    Frank Grießhammer hat einen guten Text mit Abbildungen über Hershey und seine Arbeit geschrieben: Frank Grießhammer

  • Für den Software-Renderer, an dem ich gerade schreibe, könnte dieses Format ziemlich nützlich sein
    Es ist ein Spielzeugprojekt, daher will ich OTF/TTF-Schriften weder unterstützen noch brauche ich sie, und Hershey-Schriften wirken wie eine bessere und kostengünstigere Verbesserung gegenüber der aktuell verwendeten Festbreiten-Bitmap-Schrift, die von olive.c inspiriert ist

  • Hm, gibt es keine Grundlinie?

    • Die Beispiele, die ich bisher gesehen habe, scheinen die Glyphen vertikal an einer gleichmäßigen Mittellinie auszurichten
      Wenn es eine Zuordnung zwischen Glyphen-ID und ASCII-/Unicode-Zeichen gibt, müsste sich die Grundlinie vielleicht aus den Maßen eines Referenzzeichens wie 0 berechnen lassen
  • Ich habe vor langer Zeit Hershey-Schriften nach JSON konvertiert
    Ziemlich ausführlich, aber leichter zu verarbeiten und zu lesen. Wer möchte, kann die 2,6-MB-Datei hier herunterladen

  • Sieht aus wie ein imperatives Format als Gegenstück zum deklarativen https://en.wikipedia.org/wiki/Metafont

  • Die BGI-Schriften hatten auch eine ähnliche Struktur

  • Einer der Gründe, warum Hershey-Schriften nützlich sind, ist ihr einfaches Vektorformat; dadurch lassen sich darauf leicht andere Effekte aufbauen, nicht nur für Stiftplotter, sondern auch für die Anzeige auf Bildschirmen
    In einer AoC-2024-Visualisierung für Tag 5 wurden zum Beispiel Punkte aus den Vektoren gesampelt und als Keimbildungsstellen für Blasen verwendet: https://hachyderm.io/deck/@bazzargh/113599143062296178
    An Tag 12 wurden die Linien langsam gezeichnet, um einen Effekt zu erzeugen, als würde man auf eine beschlagene Fensterscheibe schreiben: https://hachyderm.io/deck/@bazzargh/113639456289455465