多くの Java アプリは、デフォルトではアンチエイリアスフォントを使用しませんが、Swing にはアンチエイリアスフォントを提供する機能があります。任意の Java アプリケーションに AA フォントを使用させるにはどうすればよいですか? (実行中のアプリケーションと開発中のアプリケーションの両方)
4 に答える
ソースにアクセスできる場合は、メイン メソッドでこれを行うことができます。
// enable anti-aliased text:
System.setProperty("awt.useSystemAAFontSettings","on");
または、(ソースにアクセスできない場合、またはその方が簡単な場合)、コマンド ラインに次のオプションを追加して、上記のシステム プロパティを jvm に渡すことができます。
-Dawt.useSystemAAFontSettings=on
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
記録のために、私は自分の Windows 7 マシンで、
- コードでこれを使用しない場合、ClearType サブピクセル レンダリングが適切に行われます。
- しかし、これを使用すると、古典的な白黒アンチエイリアシングが得られますが、これははるかに醜いです。
したがって、このコードは慎重に使用する必要があります。すべての Linux ユーザーが、デフォルトでエイリアシングを適切に処理するバージョンの OpenJDK に更新されれば、まったく必要なくなると思います。
情報をありがとう。私自身、これについて疑問に思っていました。私は SoapUI(www.eviware.com) を使用していますが、デフォルトでは AA テキストを使用していません。-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true を起動するバッチ ファイルに追加しましたが、違いはありませんでした。たぶん、私は彼らのフォーラムで尋ねなければなりません。