web-dev-qa-db-ja.com

JavaFXフォントでアンチエイリアスを強制する方法は?

JavaFX 8アプリケーションのGUIをテストしているときに、一部のラベルにアンチエイリアステキストが表示されていないことに気付きました。少しググって苦労した後、私は起こっている非常に迷惑なことを見つけました。アンチエイリアスは、フォントサイズが80pxより大きいラベルにのみ適用されます。次に、AAを適用したJavaFXアプリケーションとSwingアプリケーションを比較する例を示します。

enter image description here

サンプルコード: 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]
26
Fernando Paz

デフォルトでは、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 に返信してくれた皆さん、ありがとう!

35
Fernando Paz