JavaFX 8アプリケーションのGUIをテストしているときに、一部のラベルにアンチエイリアステキストが表示されていないことに気付きました。少しググって苦労した後、私は起こっている非常に迷惑なことを見つけました。アンチエイリアスは、フォントサイズが80pxより大きいラベルにのみ適用されます。次に、AAを適用したJavaFXアプリケーションとSwingアプリケーションを比較する例を示します。
サンプルコード: https://Gist.github.com/anonymous/be60bb89181376ff12aa
すべてのフォントサイズでAAを強制する方法はありますか?これはあなたにも起こりますか? JavaFX Jira で同様のバグを検索しましたが、これまでのところ誰も文句を言っていません。多分私はこれのために1つを開く必要がありますか?
役立つかもしれないいくつかの情報:
Java version "1.8.0"
Java(TM) SE Runtime Environment (build 1.8.0-b132)
Java HotSpot(TM) 64-Bit Server VM (build 25.0-b70, mixed mode)
Windows 8.1 64 bits [Version 6.3.9600]
デフォルトでは、JavaFX 8はmodena.cssを使用してLCDアンチエイリアシングを設定します。これは、場合によってはフォントを滑らかにしないようです。フォントサイズが80より大きい場合、AAテクニックは変更されますグレースケールAA(パフォーマンスの問題)のため、任意のサイズで滑らかなエッジを実現するには、代わりにグレースケールAAを使用する必要があります。
これはCSSで実行できます。
.text{
-fx-font-smoothing-type: gray;
}
またはシステム引数を介して:
-Dprism.lcdtext=false
またはシステムプロパティの設定:
System.setProperty("prism.lcdtext", "false");
Jira に返信してくれた皆さん、ありがとう!