Java Runtime Environment fonts (Русский)

From ArchWiki
Jump to navigation Jump to search

Некоторые пользователи могут заметить, что шрифты в приложениях 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 всегда добавлять шрифты оттуда в качестве запасной последовательности глифов — то есть не зависимо, какие шрифты запрашивает приложение, недостающие глифы этих шрифтов берутся из указанной директории.

Смотрите также