2009-07-20 32 views
1

私は、JLabelをオフスクリーンでレンダリングするグラフィカルなアプリケーションを書いています。MacでのフォントレンダリングとWindowsの比較

私が次の行を呼び出すと、省略記号はMacでは表示されますが、Windowsでは表示されません。

g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS, 
    RenderingHints.VALUE_FRACTIONALMETRICS_ON); 

今、私はそれがMacはすでにフォントのいくつかのサブピクセルレンダリングを行うことによって引き起こされます推測しているが、私はちょうどそれを確認したいと思います。

また、WindowsではFRACTIONALMETRICSを有効にする必要があります(アプリは恐ろしく見えます)ので、Mac以外のユーザーのチェックを追加する手間を省くことができますか?

ありがとうございました。

答えて

3

FractionalMetricsのRenderingHintsは、フォントのサイジングやカーニングを行うときにfloatからintに丸められます。グリフ自体はこの設定の影響を受けません。これについてはJava 2D FAQですべて読むことができます。

Mac OS XのJavaがシステムレベルでテキストアンチエイリアスを有効にしていて、Windowsはそうではありませんが、Macのみのチェックは必要ありません。あなたがするべきことは、代わりにTextAntiAlias RenderingHintをオンに設定することです。 ;

gfx.setRenderingHint( 
     RenderingHints.KEY_TEXT_ANTIALIASING, 
     RenderingHints.VALUE_TEXT_ANTIALIAS_ON 
    ); 

のJava 6は、Java 5のClearTypeにあったアンチエイリアシングは、多くの場合、Windows XPで切り替える必要があるよりも、LCD画面上のはるかに優れているのClearTypeフォントレンダリングをサポートしていますそれはコントロールパネルの表示設定のどこかにあります。そして、あなたは(あなたが任意のSwingコンポーネントを表示する前、またはするSystem.setProperty()に挿入して)、それを有効にするには、正しいコマンドライン引数を使用してJavaプログラムを実行する必要があります。

java -Dawt.useSystemAAFontSettings=lcd [...your gubbins here...] 
+0

おかげで、ClearTypeのトリックはにいいです知っているが、悲しいことに、私がターゲットにしているバージョンを超えている。一方で省略記号を引き起こす原因は何ですか?または、アンチエイリアシングがサイズを上げていますか? –

+0

レンダリングされる文字列は同じで、同じフォントですか? Mac JavaアプリがLucida Grandeをデフォルトで使用するかどうかはわかりません。時には、大文字のWのような幅の広い字形が、JLabelの省略記号を呼び出すことがあります。あなたのレイアウトマネージャが許せば、それを少し広げてみてください。 – banjollity

関連する問題