Halfkernは、基本的に、Kerning監査ツールに装備されたフォントの自動カーニングツールです。
ツールの仕組みは、考慮される文字のペアごとに、レンダリングと2つのスペースを曖昧にし、ぼやけた画像が一定の量を重複させることです。この一定の量は、「LL」、「NN」、および「OO」ペアを使用して最初に校正することによって見つかります。
このツールは現在、フォントに結果の結果を保存していません。
$ 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
最初の値は、カーンへの手紙のペアです。 2番目の値は、EMユニットでは、推奨されるカーニング値であり、最後の値は現在フォントにあるカーニングです。 2つのカーニング値が耐性量によって異なるペアのみが表示されます。この耐性は、 -tまたは--toleranceを使用して設定できます。デフォルトの許容範囲は3.3%です。
-lまたは--letters-onlyツールは2文字の間のkerningのみを考慮します(つまり、句読点なし)。また、このツールは数字を無視します。これは、通常、幅が固定されており、設計によるカーニングがないためです。
ファイルkerned.pdfは常に生成され、各ページは1つのペアを紹介し、ツールは調整が必要だと考えています:kerned.pdf
報告されたペアを検査するには、 kern_pair.pyツールを再度使用できます。
$ python3 kern_pair.py Roboto-Regular.ttf To
To autokern: -9 (-184 units) existing kern: -5 (-99 units)
Saving kern.png
この場合、ツールはペアがロボトで十分にkernedしていないと考えています。明らかにそれは味です。ただし、ツールによって生成された2つのファイルkern.pngとkerned.pdf次のとおりです。

kern.png画像では、最初の行にはカーニングがありません。 2番目の行はツールの提案であり、3番目の行は既存のフォントKerningです。 kerned.pdf 、ペアは下部と上部の文字の間で展示されます。同様に、3列は、ノーカーニング、ツールの提案、および既存のカーンを示しています。
このツールには、各グリフの周りに封筒を形成する2つの異なる方法があります。これは--envelope sdf (デフォルト)または--envelope gaussianを使用して設定できます。
また、2つのグリフエンベロープの重複を要約する2つの異なる方法もあります。これは--reduce sum (default)または--reduce maxを使用して設定できます。
これにより、ツールを実行するモードの4つの異なる組み合わせが提供されます。プロジェクトに最適なのは主観的であり、実験する必要があります。私の意見では、デフォルトは最良の結果を生み出します
このツールで使用する言語ごとの辞書を作成するには、AOSP-Test-Textsリポジトリ、LibreOffice SpellCheck Dictionaries、またはHarfbuzz-Wikipedia-Testingを使用できます。
TODO:これらの使用方法を展開します。
LinuxおよびMacプラットフォームの単純な英語のワードリストの場合/usr/share/dict/wordsを使用できます。
1つのキャラクターの封筒を見るには、次を使用します。
$ python3 kern_pair.py fontfile.ttf X
これにより、 Xのエンベロープ画像が生成され、 envelope.pngに保存されます。