5

-[NSString drawInRect:withAttributes:]を使用する場合、主に組み込みのHelvetica Neueを使用する場合、および他のフォントを使用する場合、カーニングは非常に悪くなります。ただし、同じ文字列がテキストエディット(NSTextViewを使用)でレンダリングされる場合、カーニングは優れています。次の2つの文字列について考えてみます。

悪いカーニング

良いカーニング

ポイントサイズが小さい場合、最初のケース(Cocoaでレンダリング)はほとんど判読できませんが、2番目のケース(テキスト編集から)の方がはるかに優れています。ここではカーニング情報は一切使われていないと思います。値0.0のNSKernAttributeを適用すると(ドキュメントによるとカーニングがオフになります)、同じ結果が得られます。一番上にあります。

CTLineDrawでCoreTextを使用してみましたが、それでもカーニングが悪くなりました。だから私の質問は、Cocoaテキストシステムでカーニングを有効にするために私がする必要がある特別なことはありますか?そうでない場合、NSTextViewはどのようにカーニングを適用しますか?

4

1 に答える 1

1

上の例は「タイト」で、下の例は「ルーザー」です。を参照-[NSTextView tightenKerning]してください-[NSTextView loosenKerning]。ここでAppleは、他の誰もが「追跡」と呼んでいるものを「カーニング」と混同して呼んでいます。フォントで指定された「文字の前進」の後に、各グリフの間に一定量の追加スペース(正または負)を均一に適用して、テキストをよりきつく、またはより緩く表示します。

デフォルトの「タイトネス」または「ルーズネス」は、フォントではなくレンダリングエンジンのプロパティであり、OSXのバージョン、アプリ、またはUI要素によって簡単に異なる可能性があります。

フォントでは、カーニングテーブルは、特定のグリフのペアに必要な文字の前進を調整するためのものです。たとえば、私の架空のフォントでは、「AV」はカーニングのペアとしてリストされています。その後に「V」が続きます。

OSXフォントのHelveticaとHelveticaNeue(および他の多くのフォント)にはカーニング情報がまったくないため、例でカーニング情報が使用されていないことは間違いありません。

フォントにカーニング情報がない場合は、「Cocoaテキストシステムでカーニングを有効にするにはどうすればよいですか?」という質問があります。意味がないか、あなたがそれが何を意味すると思うかを意味しません(?)。

于 2012-08-29T11:42:41.707 に答える