51

多くの Java アプリは、デフォルトではアンチエイリアスフォントを使用しませんが、Swing にはアンチエイリアスフォントを提供する機能があります。任意の Java アプリケーションに AA フォントを使用させるにはどうすればよいですか? (実行中のアプリケーションと開発中のアプリケーションの両方)

4

4 に答える 4

78

ソースにアクセスできる場合は、メイン メソッドでこれを行うことができます。

  // enable anti-aliased text:
  System.setProperty("awt.useSystemAAFontSettings","on");

または、(ソースにアクセスできない場合、またはその方が簡単な場合)、コマンド ラインに次のオプションを追加して、上記のシステム プロパティを jvm に渡すことができます。

-Dawt.useSystemAAFontSettings=on
于 2008-10-07T19:31:02.457 に答える
9

Java 6 / 7 の最新バージョンの Swing コントロールは、システム全体の設定に自動的に従う必要があります。(Windows OS で Windows L&F を使用している場合、システム全体で ClearType の設定を有効にしていれば、テキストは ClearType を使用してレンダリングする必要があります)。

開発中のアプリケーションで、独自のテキストを直接レンダリングする場合は、次のようなことも行う必要があります (電話Graphics.drawTextや友人に電話する前のある時点で):

if (desktopHints == null) { 
    Toolkit tk = Toolkit.getDefaultToolkit(); 
    desktopHints = (Map) (tk.getDesktopProperty("awt.font.desktophints")); 
}
if (desktopHints != null) { 
    g2d.addRenderingHints(desktopHints); 
} 

参照: http://weblogs.java.net/blog/chet/archive/2007/01/font_hints_for.html

于 2012-08-16T15:29:56.553 に答える
6

記録のために、私は自分の Windows 7 マシンで、

  • コードでこれを使用しない場合、ClearType サブピクセル レンダリングが適切に行われます。
  • しかし、これを使用すると、古典的な白黒アンチエイリアシングが得られますが、これははるかに醜いです。

したがって、このコードは慎重に使用する必要があります。すべての Linux ユーザーが、デフォルトでエイリアシングを適切に処理するバージョンの OpenJDK に更新されれば、まったく必要なくなると思います。

于 2011-01-25T12:41:22.877 に答える
0

情報をありがとう。私自身、これについて疑問に思っていました。私は SoapUI(www.eviware.com) を使用していますが、デフォルトでは AA テキストを使用していません。-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true を起動するバッチ ファイルに追加しましたが、違いはありませんでした。たぶん、私は彼らのフォーラムで尋ねなければなりません。

于 2008-10-07T19:42:50.870 に答える