Гадкие / не сглаженные шрифты в приложениях Java-Swing

15

Недавно я переключился на Ubuntu и установил Oracle JDK 8u45 (32-разрядная версия) Oracle с использованием репозитория webupd8team / java.

Кажется, все работает нормально, за исключением того, что приложения Java-Swing имеют испорченные и ужасные шрифты без сглаживания. Смена шрифта не работает. Нативные приложения, такие как Gedit, хотя и имеющие один и тот же шрифт, не затрагиваются (равно как и не-Swing Java-приложения, такие как Eclipse) это влияет только на Swing-приложения.

Скриншоты: (jEdit v5.1)

Скриншот jEdit

Я использую Ubuntu 15.04 (последняя версия на 2015-06-15). Моя версия Java - 1.8.0_45, и 'java -version' дает следующий вывод:

java version "1.8.0_45"
Java(TM) SE Runtime Environment (build 1.8.0_45-b14)
Java HotSpot(TM) Server VM (build 25.45-b02, mixed mode)

Я пробовал исправления, приведенные в похожих вопросах (здесь и на других сайтах stackexchange), но они не работают. Я также добавил следующие строки в / etc / environment (как указано здесь: https://wiki.archlinux.org/index.php/Java_Runtime_Environment_Fonts ), но они не дают мне никаких видимых результатов.

JAVA_FONTS=/usr/share/fonts/truetype
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on'

Я уверен, что это должно быть исправлено. Те же Java-приложения работают так же, как и на Windows-7.

hexman
источник

Ответы:

16

Эта проблема уже давно решена, поэтому я решил опубликовать решение. Обратите внимание, что проблема по-прежнему существует по умолчанию, но ее можно исправить с помощью параметра.

Добавление этой строки:

_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=on -Dswing.aatext=true'

чтобы /etc/environmentисправить проблему.

Это исправление работает с Ubuntu 16.04 и OpenJDK 8u151 (не проверялось с Oracle JDK или Java 9).

Рабочий пример: введите описание изображения здесь

Примечание . Некоторые шрифты и настройки AA усложняют проблему. В jEdit я использую шрифты Java по умолчанию («Диалог», как он называется) для всего. Возможно, вы можете использовать другой шрифт для Text-Area, но Dialog лучше всего подходит для кнопок и т. Д. Лучшая настройка AA для Text-Area, которую я нашел, стандартная, но ваш пробег может отличаться.

hexman
источник
1
Ваше решение прекрасно работает!
Надав Б.
1
Снова требуется, начиная с Ubuntu 18.10 и OpenJDK 11. И все еще работает! :)
Танус