多くのJavaアプリはデフォルトでアンチエイリアスフォントを使用しませんが、Swingがそれらを提供する機能があります。任意のJavaアプリケーションを強制する方法AAフォントを使用しますか?(実行中のアプリケーションと開発中のアプリケーションの両方)
ソースにアクセスできる場合は、mainメソッドでこれを行うことができます。
// enable anti-aliased text:
System.setProperty("awt.useSystemAAFontSettings","on");
または、(およびソースにアクセスできない場合、またはこれが簡単な場合)コマンドラインに次のオプションを追加することで、上記のシステムプロパティをjvmに渡すだけです。
-Dawt.useSystemAAFontSettings=on
Java 6/7の最新バージョンのSwingコントロールは、システム全体の設定に自動的に準拠する必要があります(Windows OSでWindows L&Fを使用している場合、テキストをClearTypeでレンダリングする必要があります。その設定をシステム全体で有効にします。)したがって、おそらく1つの解決策は、ネイティブのルックアンドフィールを有効にすることです。
開発中のアプリケーションで、独自のテキストを直接レンダリングする場合は、次のようなことも行う必要があります(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マシンで、
したがって、このコードは慎重に使用する必要があります。デフォルトでエイリアシングを適切に処理するOpenJDKのバージョンにすべてのLinuxユーザーが更新すると、必要がなくなると思います。
情報をありがとう。私自身、これについて疑問に思っていました。私はSoapUI(www.eviware.com)を使用していますが、デフォルトではAAテキストを使用しません。起動するバッチファイルに-Dawt.useSystemAAFontSettings = on -Dswing.aatext = trueを追加しましたが、違いはありませんでした。推測、私は彼らのフォーラムで尋ねなければなりません。