Hershey est un format de police vectorielle basé sur du texte
(wiki.xxiivv.com)- Hershey Fonts est l’une des premières représentations numériques de polices, créée en 1967, et les fichiers
.jhfsont des fichiers texte où chaque ligne représente un glyphe - Une ligne de glyphe se compose de
id[5],length[3],left[1],right[1],points[?], l’ID et le nombre de points étant encodés en décimal - Les coordonnées des points représentent des valeurs signées
x,ysur deux caractères, oùRvaut 0,Qvaut -1 etSvaut +1 - Les valeurs des caractères vont de
J=-8àZ=+8, et par exempleNWsignifie les coordonnées-4,5 - Le lever de stylo est indiqué par
" R", soit unRmajuscule après un espace, et correspond à une opération spéciale où aucun trait n’est tracé jusqu’à la position suivante
Aperçu du format
- Hershey Fonts est l’une des premières représentations numériques de polices, créée en 1967, et les fichiers de police vectorielle Hershey
.jhfsont des fichiers texte où une ligne représente un glyphe - Chaque ligne de glyphe est encodée en cinq parties
id[5]: ID décimal du glyphelength[3]: valeur décimale indiquant le nombre de pointsleft[1]: position gauche de la boîte englobanteright[1]: position droite de la boîte englobantepoints[?]: liste de points se terminant par un saut de ligne
- Un point est composé de deux caractères, chacun représentant une valeur signée
x,y - Un emplacement comme
" R", c’est-à-dire un R majuscule après un espace, signifie une opération de lever de stylo et indique qu’aucune ligne ne doit être tracée jusqu’à la position suivante
Correspondance des valeurs et ressources
- Les valeurs des caractères vont de
JàZ, de-8à+8, avecRcomme référence pour 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
- Par exemple,
NWcorrespond aux coordonnées-4,5puisqueN=-4etW=+5 - Ressources associées
- Hershey Renderer, Uxntal
- Hershey Vector Font, Paul Bourke
- Hershey Fonts
1 commentaires
Commentaires sur Lobste.rs
Si ça intéresse du monde, je suis en train de constituer une petite collection de polices Hershey
Elles ont un aspect un peu plus moderne que d’autres polices qu’on voit souvent en ligne
Ce serait bien d’avoir aussi des photos montrant le rendu au traceur et avec un stylo épais classique
J’aime particulièrement le fait que les fichiers
.jhffournis soient bien structurés. Beaucoup de polices Hershey en ligne ont le champidde tous les glyphes à12345, ou bien des retours à la ligne forcés dans certains glyphes, ce qui complique inutilement le parsing des fichiers et le rendu du texteJ’ai récemment bricolé avec un écran e-ink Pimoroni Inky et un contrôleur Raspberry Pi, et c’est là que je suis tombé sur les polices Hershey et le format de fichier
.jhf. La bibliothèque fournie contenait, si je me souviens bien, la police « Futural », et dans l’ensemble ça fonctionne bien, mais il y a un problème : il manque les caractères suédoiså,ä,öComme tu sembles maintenant 100 fois plus familier que moi avec les polices Hershey, je voulais demander si tu avais déjà vu un fichier de police
.jhfcontenant à peu près les 255 premiers caractères de la table ASCII. Je ne sais pas si c’est moi qui ne trouve pas la police, ou si elle n’existe tout simplement pas, donc je me demandais si tu en avais déjà croisé uneIl s’agit d’une version retravaillée en 1986 par l’Usenet Font Consortium des données originales de Hershey, qui prend des libertés très programmeur C de 1986 avec le format de données de 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
Le format original à champs fixes en Fortran a l’air au contraire plus facile à manipuler, mais on suppose que la bande de données fournie par le NTIS a été perdue. Le message Usenet contenait même une pique du genre « qui voudrait vraiment utiliser ce format, de toute façon… »
Et merci de me rappeler qu’il faut que je termine, publie ou abandonne enfin le convertisseur Hershey vers OTF que j’avais regardé pour la dernière fois vers 2016 : scruss/python-hershey. Salutations à tous ceux qui se sont déjà attaqués à ce format de police complètement fou
Il y a aussi un nouveau terrier de lapin des polices vectorielles : GIMMS, utilisé à la University of Edinburgh
Frank Grießhammer a publié un bon texte, avec illustrations, sur Hershey et son travail : Frank Grießhammer
Ce format pourrait être assez utile pour le rasterizer logiciel que je suis en train d’écrire
C’est un projet perso, donc je n’ai ni l’envie ni le besoin de prendre en charge les polices OTF/TTF ; les polices Hershey semblent être une amélioration raisonnable et peu coûteuse par rapport à la police bitmap monospace dont je m’inspire actuellement, dans olive.c
Hmm, il n’y a pas de ligne de base ?
Tant qu’on a une correspondance entre les ID de glyphes et les caractères ASCII/Unicode, on devrait pouvoir calculer la ligne de base à partir des dimensions d’un caractère de référence comme
0Il y a longtemps, j’ai converti des polices Hershey en JSON
C’est assez verbeux, mais plus simple à traiter et à lire. Si ça intéresse quelqu’un, le fichier de 2,6 Mo est disponible ici
Ça ressemble à un format impératif en face du https://en.wikipedia.org/wiki/Metafont déclaratif
Les polices BGI avaient aussi une structure similaire
L’un des intérêts des polices Hershey, c’est que leur format vectoriel simple facilite la création d’autres effets par-dessus, pas seulement pour les traceurs à stylo mais aussi pour l’affichage à l’écran
Par exemple, pour la visualisation de l’AoC 2024 jour 5, des points ont été échantillonnés à partir des vecteurs pour servir de points de nucléation de bulles : https://hachyderm.io/deck/@bazzargh/113599143062296178
Et pour le jour 12, les lignes étaient tracées lentement afin de produire un effet donnant l’impression d’écrire sur une fenêtre couverte de givre : https://hachyderm.io/deck/@bazzargh/113639456289455465