Java Runtime Environment fonts (Русский)
Некоторые пользователи могут заметить, что шрифты в приложениях Java отображаются неприятно. Доступно несколько методов, чтобы улучшить отображение шрифтов в приложениях, работающих с Java Runtime Environment (JRE). Эти методы могут использоваться по отдельности, но многие пользователи предпочтут использовать их вместе, чтобы получить лучший результат.
Для использования с Java лучшим поддерживаемым форматом шрифтов будет TrueType.
Anti-aliasing (Сглаживание)
Запуск демона xsettings
Java устанавливает свои настройки по умолчанию при помощи xsettings. В GNOME автоматически работает демон gnome-settings-daemon
, но в качестве альтернативы можно использовать утилиту Xsettingsd.
Базовые настройки
Сглаживание доступно с версии Java 1.6. Чтобы активировать его для всей системы, добавьте следующую строку в /etc/environment
:
_JAVA_OPTIONS='-Dawt.useSystemAAFontSettings=setting'
Где setting
это одно из значений:
Установка | Описание |
---|---|
off , false , default
|
Без сглаживания |
on
|
Полное сглаживание |
gasp
|
Использовать встроенные в шрифт инструкции хинтинга |
lcd , lcd_hrgb
|
Сглаживание настроенное для большинства популярных ЖК-мониторов |
lcd_hbgr , lcd_vrgb , lcd_vbgr
|
Альтернативные настройки для ЖК-мониторов |
Параметры gasp
и lcd
в большинстве случаев хорошо работают.
Чтобы приложения Java ощущались и выглядели как приложения, использующие GTK, используйте следующую строку:
_JAVA_OPTIONS='-Dswing.defaultlaf=com.sun.java.swing.plaf.gtk.GTKLookAndFeel'
- Описанные варианты работают только для приложений, которые используют графический интерфейс, основанный на Java, таких как например JDownloader, а не для приложений, которые используют Java только в качестве бэкэнда, как OpenOffice.org или Matlab.
- Шрифты TrueType содержат grid-fitting and scan-conversion procedure (GASP) — таблицу с рекомендациями дизайнера для отображения шрифта в разных размерах pt. Для некоторых размеров рекомендуется использовать полное сглаживание, другим требуется только хинтинг, а некоторые будут отображаться только в виде растровых изображений. Для некоторых размеров шрифта могут быть использованы комбинации.
Чтобы изменения вступили в силу, требуется выполнить перелогин, но можно указать переменную в командной строке перед выполнением, чтобы попробовать новую настройку сразу:
_JAVA_OPTIONS=настройка java Main
Патч OpenJDK
В результате сглаживание может выглядеть хуже нативных приложений, даже с опциями, но это может быть исправлено с помощью патча в OpenJRE, доступному в AUR:
- Исправленный OpenJRE 7 доступен как jre7-openjdk-infinalityAUR; используется с ключом
--enable-infinality=yes
- Исправленный OpenJRE 8 доступен как jre8-openjdk-infinalityAUR
Исправленные версии хорошо сочетаются с патчами fontconfig и freetype, однако стоит заметить, что используют только API от fontconfig.
Выбор шрифта
Шрифты TrueType
Некоторые приложения Java могут требовать определенного шрифта TrueType. Эти приложения должны быть в курсе пути каталога с нужным шрифтом. TrueType шрифты устанавливаются в каталог /usr/share/fonts/TTF
. Добавьте следующую строку в /etc/environment
чтобы включить эти шрифты в приложениях.
JAVA_FONTS=/usr/share/fonts/TTF
Перелогинтесь, чтобы изменения вступили в силу.
Исправление Mojibake (для JRE8)
Поместите файлы шрифтов в подкаталог. Создайте каталог, если он не существует.
$JAVA_HOME/jre/lib/fonts/fallback/
Этот функционал удалён начиная с Oracle JDK 9, так как Oracle посчитала это ошибкой, заставляющей пользователей перемещать каталог lib, и поэтому переместила эти файлы в каталог conf, назвав поведение до этого ошибочным. Вместо этого следует использовать вызов sun.awt.FontConfiguration.getInstalledFallbackFonts()
, что заставит Java всегда добавлять шрифты оттуда в качестве запасной последовательности глифов — то есть не зависимо, какие шрифты запрашивает приложение, недостающие глифы этих шрифтов берутся из указанной директории.
Смотрите также
- Font Configuration Files в руководстве по интернационализации приложений Java
- Font Configuration Files для Java 8