質問

プロジェクトの BaseSDK を 10.6 に変更した後、カスタム描画テキストの見た目が異なることに気付きました (画像を見てください:描画用の同じコード)

10.5 BaseSDK 未満:画像1

10.6 BaseSDK の下:画像2

[(NSString *)myStringdrawInRect:myRect withAttributes:myAttributes] を使用して描画しています。

myAttributes = [[NSMutableDictionary alloc] initWithObjectsAndKeys: [NSColor myColor], NSForegroundColorAttributeName, [NSFont systemFontOfSize:18], NSFontAttributeName, paragraphStyle, NSParagraphStyleAttributeName, shadow, NSShadowAttributeName, nil];

このような違いの理由は何ですか、あるいはフォントの太さを減らすにはどうすればよいでしょうか?厚みを薄くしてみました

[NSFontManager convertWeight:NO ofFont:font]

しかし見た目はあまり良くありません...

前もって感謝します。

役に立ちましたか?

解決 2

これで、それが発生する理由とこの問題の解決策がわかりました。10.6ではフォントLCDスムージングオプションが追加されたようです。これは、設定->外観->「利用可能な場合はLCDフォントスムージングを使用する」チェックボックスで有効になっており、デフォルトでチェックされています。

プロジェクトの BaseSDK を 10.6 に変更した後、アプリケーション内のテキストが LCD スタイルで滑らかになり、見た目がまったく悪くなったのはそのためです。

したがって、コードの問題を解決するには、描画の前にグラフィックス コンテキストでスムージング オプションを変更します。

CGContextRef context = [[NSGraphicsContext currentContext] graphicsPort];
CGContextSetShouldSmoothFonts(context, NO);

このメソッドのドキュメントによると、このパラメータはグラフィックス状態の一部であるため、他のフォント描画でこのオプションを変更したくない場合は、グラフィックス状態を復元する必要があります。

この問題の原因を見つけてくれた @NSGod に感謝します。

他のヒント

両方の画像を拡大してよく見ると、すぐに違いがわかります (少なくとも私はそう感じました)。

enter image description here

上の画像のテキストは CRT スタイルのフォント スムージングを使用しており、下の画像のテキストは Medium LCD スタイルのフォント スムージングを使用しています。(LCD フォント スムージングの 3 つのスタイルはすべて、アンチエイリアス処理されたピクセルに色かぶりが発生します)。

なぜこれが起こっているのかを知るには、テスト設定に関する詳細情報が必要です。OS X のどのバージョンでこれをテストしていますか?たとえば、アプリが 10.5 の展開ターゲットを使用して 10.6 SDK に対してビルドされていた場合、上の画像は OS X 10.5.x (同じマシン上) でのテスト中に取得されたもので、下の画像は 10.6.x でのテスト中に取得されたものです。 ?それとも、すべてのテストは Mac OS X 10.6.x で行われ、10.5 SDK に対してビルドすると上のイメージが生成され、10.6 SDK に対してビルドすると下のイメージが生成されましたか?Mac のどのモデルを使用していますか?接続している外部 LCD または CRT ディスプレイがある場合は、どのようなタイプですか?

上記で求められた情報を持たない、いくつかのアイデアだけです。デフォルトのフォント スムージング スタイルは、10.5 では CRT だったと思いますが、10.6 ではデフォルトが「自動」になっています。したがって、LCD ディスプレイを備えたシステムがあり、10.5 でテストしていて、フォント スムージング スタイルをデフォルトの CRT スタイルから変更したことがない場合は、上のような画像が得られます。その後、同じシステムで 10.6 に切り替えた場合、10.6 の自動フォント スムージングが LCD ディスプレイを自動的に検出し、中程度の LCD スタイルのフォント スムージングが使用された可能性があります。その結果、下の画像のテキストが「重く見える」ことになります。 。

もう 1 つ留意すべき点は、フォント スムージング値がホストごとに保存されることです。たとえば、私のマシンでは、 AppleFontSmoothing 値は ~/Library/Preferences/ByHost/.GlobalPreferences.##########.plist に保存されます。########## はハードウェア UUID です。異なるホスト設定に対して 2 つの異なる値が保存される可能性があると思います。

あなたは求めているものを手に入れています

[NSFont systemFontOfSize:18]

これらは、10.5 と 10.6 の間で微妙に異なるフォントである可能性が高くなります。グラフィックデザイナーが何らかの理由でおかしくなってしまいました。

の出力をログに記録すると何が得られますか [NSFont systemFontOfSize:18]. 。10.5と10.6では違いますか?

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top