2017-07-25 28 views
1

私はSharpFont、C#FreeTypeライブラリを使用しています。 Times New Roman OpenTypeファイルをロードした後、すべてのグリフのメトリックを取得します。 文字 'f'、 'w'、 'y'、 'A'、 '/'、 '\'のHorizo​​ntalAdvanceが標準幅より小さく、char '@'のVerticalAdvanceがその高さ。これはどのように可能ですか?私はいつもHorizo​​ntalAdvanceが幅といくつかのパディング(bearingX)であると思っていました。グリフのHorizo​​ntalAdvanceがグリフの幅よりも小さいのはどうでしょうか?

答えて

1

水平送りについては、これは正常です。多くの要素がフォントファイル内の文字の間隔を決定する可能性があります。また、先行幅は、最も単純で最も重大なものであり、大多数の状況で機能することを意図しています。それは、最も一般的、電子Rのような小文字の前に来るので例えば、Fは、そのクロスバーより少し広い事前幅を有しています。そのカーブした上昇はその幅を越え、次のキャラクターのスペースにぶら下がります。これは、またはbまたはTのような背の高い文字を取得した場合にのみ問題になります。この場合の衝突は、カーニングまたは合字の作成によって回避されます。

フォントデザイナーは、他の標準文字間にスペースを置くことによって、文字の先行幅を視覚的に判断することが一般的です。首都は通常、同じように、資本OとHsとの間で間隔を置いて配置されています

OOOFOOO HHHFHHH

と小文字は小文字のOSとNSの間で間隔を置いて配置されています

ooofoooを

nnnfnnnこれらは 'に慎重に調整されていますよく見えます。その後、カーニングは、文字ペアの間に多すぎたり小さすぎたりする問題の状況を処理します。それがために必要な何だから F VワットYVのような文字、WY/は、多くの場合、彼らの事前幅をオーバーシュート終わりますスペーシングを正しく見せる。

@の縦方向の前進に関しては、これは誤りである可能性があります。垂直送りはCJKスクリプトや、モンゴル語の​​ような文字を水平方向ではなく垂直方向に垂直方向に読み取る場合に使用されます。誤って垂直送りが含まれている可能性があります。中国語の縦書き。それは、それがわずかに上下のスペースに広がっているだけかもしれないし、それは問題ではないと思われた。

関連する問題