2012-08-29 11 views
5

を使用しているときのカーニングが悪い - 主に組み込みのHelvetica Neueを使用しているときに - [NSString drawInRect:withAttributes:]を使用するとき、他のフォントでもカーニングが本当に悪いです。しかし、同じ文字列がText Edit(NSTextViewを使用)でレンダリングされた場合、カーニングは素晴らしいです。 (テキスト編集)から第二の場合はずっと良好である(ココアでレンダリング)最初のケースは、ほとんど判読不能である、小さなポイントサイズの- [NSString drawInRect:withAttributes:]

Bad kerning

Good kerning

:これら2つの文字列を考えます。私はここでカーニング情報が使われているとは思わない。私がNSKernAttributeを0.0の値で適用すると(ドキュメントによればカーニングがオフになります)、私は同じ結果を得ます。

また、CTLineDrawでCore Textを使用しようとしましたが、まだ悪いカーニングがありました。ですから私の質問は、ココアのテキストシステムでカーニングを有効にするために必要なことは何ですか?そうでない場合、NSTextViewはカーニングをどのように適用しますか?

+0

実行中のOSは何ですか?私の10.7.4には違いはありません。 72ピクセルのH.Neueで10.6.8の2ピクセルの違いがありますが、これはまだスクリーンショットよりもはるかに低いです。あなたのNSTextViewのデフォルトのタイピング属性にまだ値が含まれていないことを確かめてください。 'useStandardKerning:'を送信しようとしましたか? – hamstergene

+0

これはHelvetica Neue標準(バージョン7.0d27e1)の10.7.4です。 2番目のスクリーンショットは、テキストエディット(アプリケーション)のもので、新しいドキュメントを使用しています。 – Aderstedt

+0

すべて選択、書式、フォント、カーン、デフォルト/使用なし - 何も変更されますか? TextEditとカスタム描画属性文字列の違いはありません。どのようなNSTextFieldCellとNSButtonCellについては、彼らもあなたのために悪く描くか? – hamstergene

答えて

1

上部の例は「よりタイト」で、下部は「緩く」です-[NSTextView tightenKerning]-[NSTextView loosenKerning]を参照してください。ここでAppleは、他の誰もが 'Tracking'を 'Kerning'と呼んでいることを混乱さげている。フォント内で指定された「文字送り」の後に、各グリフの間に均等に適用される一定量の追加のスペース(正または負)を使用して、テキストを表示します。

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

カーニングテーブルは、特定のグリフのペア、たとえば仮想フォントで必要な文字の前進を調整するためのものです。「AV」はカーニングペアとしてリストされています。「A」は小さいそれに続くキャラクターが「V」の時に前進する。

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

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

+0

実際のフォントで 'kern'テーブルを見ると、Helvetica Neueには98個のカーニングペアがあるカーニングテーブルが含まれています。あなたは何を言っていないのですか? – Aderstedt

+0

あなたは正しいです、それはいくつか持っています。私は驚いていて、それは何も持っていなかったことを確信しています。それでも、与えられた例には関係しないでしょうか?すなわち、 - 数字を含むペアはありません – hooleyhoop

+0

はい、ほとんどのペアはマイナス調整のみです。だから、あなたはおそらく正しいでしょう、それは違う追跡です。私はなぜデフォルトトラッキングが10.7と10.8の間でどう違うのだろうかと思います。これに対する私の解決策は、10.7ユーザーのために出力が「窮屈」に見えるようにし、それに気を遣う人々に10.8にアップグレードするように指示することです。 – Aderstedt