1 pontos por GN⁺ 10 시간 전 | 1 comentários | Compartilhar no WhatsApp
  • 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 x e y usando dois caracteres, em que R corresponde a 0, Q a -1 e S a +1
  • Os valores dos caracteres vão de J=-8 até Z=+8, e por exemplo NW significa a coordenada -4,5
  • Levantar a caneta é indicado por " R", isto é, um R maiú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 glifo
    • length[3]: valor decimal que indica a quantidade de pontos
    • left[1]: posição esquerda da caixa delimitadora
    • right[1]: posição direita da caixa delimitadora
    • points[?]: lista de pontos terminada por quebra de linha
  • Um ponto é composto por dois caracteres, cada um representando valores com sinal de x e y
  • Uma ocorrência de R maiú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 J até Z, correspondendo de -8 a +8, com R como referência para 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
  • Por exemplo, NW corresponde à coordenada -4,5, já que N=-4 e W=+5
  • Materiais relacionados

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í

    • Ficou ótimo. Quando eu fazia mais trabalhos com plotter, sempre achei uma pena haver tão poucas fontes realmente utilizáveis, e estas parecem novas e bonitas
      Também seria legal ver fotos de como ficam quando desenhadas com um plotter e uma caneta comum mais grossa
    • Parece útil
      Especialmente porque os arquivos .jhf fornecidos são bem estruturados. Muitas fontes Hershey na internet vêm com o campo id de todos os glifos como 12345, 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íceis
    • São fontes realmente bonitas
      Recentemente, 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 .jhf contendo 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 tipo
  • Isto é 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?

    • Os exemplos que vi até agora parecem alinhar os glifos a uma linha central uniforme no eixo vertical
      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 0
  • Há 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