Подтвердить что ты не робот

Как заставить сглаживание в шрифтах JavaFX?

Во время тестирования GUI моего приложения JavaFX 8 я заметил, что некоторые ярлыки не отображают сглаженный текст. После некоторого поиска и борьбы я обнаружил очень неприятную вещь, которая происходит. Сглаживание применяется только на этикетках, размер шрифта которых превышает 80 пикселей. Ниже приведен пример сравнения приложений JavaFX и Swing с примененным AA:

enter image description here

Пример кода: https://gist.github.com/anonymous/be60bb89181376ff12aa

Есть ли способ заставить АА во всех размерах шрифтов? С этим тоже случается? Я искал аналогичную ошибку в JavaFX Jira, но никто до сих пор не жалуется на это. Может быть, я должен открыть его для этого?

Некоторая информация, которая может помочь:

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]
4b9b3361

Ответ 1

По умолчанию в JavaFX 8 используется modena.css, чтобы установить сглаживание ЖК-дисплея, которое, по-видимому, не сглаживает шрифты в некоторых случаях. Когда размер шрифта больше 80, метод AA меняется на шкалу АА (для обеспечения производительности). Таким образом, для достижения гладких краев любого размера вместо этого следует использовать шкалу серого AA.

Это можно сделать с помощью CSS:

.text{
    -fx-font-smoothing-type: gray;
}

Или через системные аргументы:

-Dprism.lcdtext=false

Или задание системных свойств:

System.setProperty("prism.lcdtext", "false");

Спасибо всем, кто ответил на Jira!