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

From ArchWiki
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.
Состояние перевода: На этой странице представлен перевод статьи Java Runtime Environment fonts. Дата последней синхронизации: 25 апреля 2019. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

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

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