Рендеринг шрифтов в Mac против Windows - PullRequest
1 голос
/ 20 июля 2009

Я пишу графически интенсивное приложение, которое выводит JLabel за экран.

Когда я вызываю следующую строку, многоточие появляется на Mac, но не в окне Windows.

g2.setRenderingHint(RenderingHints.KEY_FRACTIONALMETRICS,
    RenderingHints.VALUE_FRACTIONALMETRICS_ON);

Теперь я предполагаю, что это вызвано тем, что Mac уже выполняет субпиксельный рендеринг шрифтов, но я просто хотел бы подтвердить это.

Кроме того, поскольку крайне важно, чтобы FRACTIONALMETRICS была включена в Windows (в противном случае приложение выглядит ужасно), может кто-нибудь предложить обходной путь, за исключением добавления проверки для проверки не Mac?

Спасибо.

1 Ответ

3 голосов
/ 21 июля 2009

RenderingHints для FractionalMetrics касаются округления значений с плавающей точкой до целых при определении размера или кернинге шрифтов. Эти настройки не влияют на сами глифы. Вы можете прочитать все об этом в Java 2D FAQ .

Вы правы, что Java в Mac OS X разрешает сглаживание текста на системном уровне, а Windows - нет, но проверка только для Mac не требуется. Вместо этого вы должны установить TextAntiAlias ​​RenderingHint.

gfx.setRenderingHint( 
        RenderingHints.KEY_TEXT_ANTIALIASING, 
        RenderingHints.VALUE_TEXT_ANTIALIAS_ON 
    );

Java 6 поддерживает рендеринг шрифтов ClearType, который намного лучше на ЖК-экранах, чем сглаживание, которое было в Java 5. ClearType часто нужно включать в Windows XP; это где-то в настройках дисплея в панели управления. Затем вам нужно запустить вашу Java-программу с правильными аргументами командной строки, чтобы включить ее (или вставить их в System.setProperty () перед отображением любых компонентов Swing):

java -Dawt.useSystemAAFontSettings=lcd [...your gubbins here...]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...