O Halfkern é essencialmente uma ferramenta de mata automática de fonte, mascarada como uma ferramenta de auditoria de kerning.
A maneira como a ferramenta funciona é que, para cada par de letras que são consideradas, ela embaçará suas renderizações e espaço os dois, de modo que as imagens borradas se sobreponham uma certa quantidade. Essa certa quantidade é encontrada pela primeira calibração usando os pares "LL", "NN" e "OO".
Atualmente, a ferramenta não armazena resulta na fonte.
$ python3 kern_pair.py FontFile.ttf --dict dictionary.txt
$ python3 kern_pair.py FontFile.ttf PairString
$ python3 kern_pair.py Roboto-Regular.ttf --dict /usr/share/dict/words -l
fi 0 -4
yt 4 0
Te -9 -5
To -9 -5
TA -8 -4
DT -5 -1
O primeiro valor é o par de letra para Kern. O segundo valor é, nas unidades EM, o valor de Kerning sugerido, e o último valor é o kerning atualmente na fonte. Somente pares em que os dois valores de Kerning diferem por uma quantidade de tolerância são mostrados. Essa tolerância pode ser definida usando -t ou --tolerance . A tolerância padrão é de 3,3%.
O -l ou --letters-only faz a ferramenta considerar o Kerning entre duas letras (ou seja, sem pontuação). A ferramenta também ignora os dígitos, pois eles normalmente têm uma largura fixa e sem kerning por design.
Um arquivo kerned.pdf é sempre gerado, com cada página mostrando um par que a ferramenta acha que precisaria de ajuste: kerned.pdf
Para inspecionar os pares relatados, você pode usar a ferramenta kern_pair.py novamente:
$ python3 kern_pair.py Roboto-Regular.ttf To
To autokern: -9 (-184 units) existing kern: -5 (-99 units)
Saving kern.png
Nesse caso, a ferramenta acha que o par "para" não é o suficiente em Roboto. Obviamente, isso depende do gosto. Mas aqui estão os dois arquivos kern.png e kerned.pdf gerados pela ferramenta:

Na imagem kern.png , a primeira linha é sem kerning. A segunda linha é a sugestão da ferramenta, e a terceira linha é o kerning de fonte existente. O kerned.pdf , o par é exibido entre letras inferiores e superiores. As três linhas, da mesma forma, mostram sugestão de não-mamãe, ferramenta e Kern existente.
A ferramenta tem duas maneiras diferentes de formar um envelope em torno de cada glifo. Isso pode ser definido usando --envelope sdf (padrão) ou --envelope gaussian .
Ele também tem duas maneiras diferentes de resumir a sobreposição de dois envelopes de glifos. Isso pode ser definido usando --reduce sum (padrão) ou --reduce max .
Isso fornece quatro combinações diferentes de modos para executar a ferramenta. O que funciona melhor para um projeto é subjetivo e deve ser experimentado. Os padrões, na minha opinião, geram os melhores resultados
Para produzir dicionários por linguagem a ser usada com esta ferramenta, você pode usar o repositório de textos de teste AOSP, ou os dicionários de verificação ortográfica do LibreOffice, ou o teste de Harfbuzz-Wikipedia.
TODO: Expanda como usá -los.
Para uma lista de palavras em inglês simples nas plataformas Linux e Mac, você pode usar /usr/share/dict/words .
Para ver o envelope para um personagem, use:
$ python3 kern_pair.py fontfile.ttf X
Isso gerará a imagem do envelope para X e salvá -la para envelope.png .