Hershey é um formato de fonte vetorial baseado em texto
(wiki.xxiivv.com)- Hershey Fonts é uma das primeiras representações de fontes digitais, criada em 1967, e o arquivo
.jhfé um arquivo de texto em que cada linha representa um glifo - A linha de um glifo é composta por
id[5],length[3],left[1],right[1],points[?], e o ID e a quantidade de pontos são codificados em decimal - As coordenadas dos pontos representam valores com sinal de
xeyusando dois caracteres, em queRcorresponde a 0,Qa -1 eSa +1 - Os valores dos caracteres vão de
J=-8atéZ=+8, e por exemploNWsignifica a coordenada-4,5 - Levantar a caneta é indicado por
" R", isto é, umRmaiúsculo após um espaço, e representa uma operação especial em que nenhuma linha é desenhada até a próxima posição
Visão geral do formato
- Hershey Fonts é uma das primeiras representações de fontes digitais, criada em 1967, e o arquivo de fonte vetorial Hershey
.jhfé um arquivo de texto em que cada linha representa um glifo - Cada linha de glifo é codificada em cinco partes
id[5]: ID decimal do glifolength[3]: valor decimal que indica a quantidade de pontosleft[1]: posição esquerda da caixa delimitadoraright[1]: posição direita da caixa delimitadorapoints[?]: lista de pontos terminada por quebra de linha
- Um ponto é composto por dois caracteres, cada um representando valores com sinal de
xey - Uma ocorrência de
Rmaiúsculo após um espaço, como em" R", significa a ação de levantar a caneta, então nenhuma linha é desenhada até a próxima posição
Mapeamento de valores e materiais de referência
- Os valores dos caracteres vão de
JatéZ, correspondendo de-8a+8, comRcomo referência para 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
- Por exemplo,
NWcorresponde à coordenada-4,5, já queN=-4eW=+5 - Materiais relacionados
- Hershey Renderer, Uxntal
- Hershey Vector Font, Paul Bourke
- Hershey Fonts
1 comentários
Comentários do Lobste.rs
Se interessar a alguém, estou montando uma pequena coleção de fontes Hershey em que venho trabalhando
Tem uma aparência um pouco mais moderna do que outras fontes que se vê com frequência por aí
Também seria legal ver fotos de como ficam quando desenhadas com um plotter e uma caneta comum mais grossa
Especialmente porque os arquivos
.jhffornecidos são bem estruturados. Muitas fontes Hershey na internet vêm com o campoidde todos os glifos como12345, ou com quebras de linha forçadas em alguns glifos, o que só torna parsing do arquivo e renderização de texto desnecessariamente mais difíceisRecentemente, mexendo com um display e-ink Pimoroni Inky e um controlador Raspberry Pi, acabei conhecendo as fontes Hershey e o formato de arquivo
.jhf. Se bem me lembro, a biblioteca fornecida incluía a fonte “Futural”, e no geral funciona bem, mas há um problema: faltam as letras suecaså,ä,öComo agora você provavelmente conhece fontes Hershey 100 vezes melhor do que eu, queria perguntar se já viu algum arquivo de fonte
.jhfcontendo algo como os primeiros 255 caracteres da tabela ASCII. Não sei se eu que não estou encontrando uma fonte assim, ou se ela realmente não existe, então queria saber se você já viu algo do tipoIsto é uma versão retrabalhada pelo Usenet Font Consortium (1986) dos dados originais do Hershey, e é uma edição que exerceu bastante daquela liberdade bem típica de programador em C de 1986 sobre o formato de dados 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
O formato original em campos fixos de Fortran até parece mais fácil de lidar, mas presume-se que a fita de dados fornecida pelo NTIS tenha se perdido. O post da Usenet ainda tinha uma ironia do tipo “como se alguém realmente quisesse usar esse formato...”
E obrigado por me lembrar de novo que eu preciso terminar, publicar ou abandonar de vez o conversor Hershey para OTF em que mexi pela última vez por volta de 2016: scruss/python-hershey. Saudações a todo mundo que já tentou enfrentar esse formato de fonte maluco
Há também outra toca de coelho de fontes vetoriais novas: GIMMS, usado na University of Edinburgh
Frank Grießhammer escreveu um bom texto com ilustrações sobre Hershey e seu trabalho: Frank Grießhammer
Acho que esse formato pode ser bem útil para o renderizador de software que estou escrevendo agora
É um projeto de brincadeira, então eu não quero nem preciso oferecer suporte a fontes OTF/TTF, e as fontes Hershey parecem uma melhoria melhor e mais barata do que a fonte bitmap monoespaçada usada hoje, inspirada em olive.c
Hum, não existe linha de base?
Se houver um mapeamento entre IDs de glifo e caracteres ASCII/Unicode, talvez dê para calcular a linha de base a partir das dimensões de um caractere de referência como
0Há muito tempo converti fontes Hershey para JSON
Fica bem verboso, mas é mais fácil de processar e ler. Se alguém quiser, pode baixar o arquivo de 2,6 MB aqui
Parece um formato imperativo, em contraste com o https://en.wikipedia.org/wiki/Metafont declarativo
As fontes BGI também tinham uma estrutura parecida
Um dos motivos de as fontes Hershey serem úteis é que, por serem um formato vetorial simples, fica fácil construir em cima delas outros efeitos não só para plotters de caneta, mas também para exibição em tela
Por exemplo, na visualização do AoC 2024 dia 5, pontos foram amostrados dos vetores e usados como pontos de nucleação de bolhas: https://hachyderm.io/deck/@bazzargh/113599143062296178
No dia 12, as linhas foram desenhadas lentamente para criar um efeito de escrita sobre uma janela embaçada: https://hachyderm.io/deck/@bazzargh/113639456289455465