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

From ArchWiki
Jump to navigation Jump to search
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.

Ссылки по теме

- Шрифты
- Настройка шрифтов
- Шрифты Microsoft
- X Logical Font Description

Некоторые пользователи могут заметить, что шрифты в приложениях 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

Category:

- Fonts (Русский)