Задать вопрос
Ответы пользователя по тегу Java
  • Как изменить (подменить) стандартный шрифт Dialog в Java?

    heavyrail
    @heavyrail Автор вопроса
    Короче, разобрался сам. Пришлось посмотреть исходники OpenJDK.
    Оказалось, что, по крайней мере под Linux, JRE файлы fontconfig* в /opt/java игнорирует (спрашивается, зачем они там вообще лежат). Вместо этого она смотрит системную конфигурацию Fontconfig, т.е., например, в качестве шрифта Dialog берётся тот шрифт, который выдаёт команда fc-match sans
    Таким образом, подменив этот шрифт путём шаманства с файлами из директории /etc/fonts/conf.d, мы изменим шрифт Dialog в Java. Одна беда - в остальных программах шрифт по умолчанию тоже поменяется. Я менял на Arimo - смотрится, мягко говоря, не очень.

    Но есть выход. В директории /etc/fonts/ есть файл fonts.conf, создаём его копию под именем /etc/fonts/fonts.conf.alt, там исправляем строчку
    <include ignore_missing="yes">/etc/fonts/conf.d</include>
    на
    <include ignore_missing="yes">/etc/fonts/conf.d.alt</include>

    После этого создаём директорию /etc/fonts/conf.d.alt, копируем в неё все нужные нам файлы и (или) символические ссылки из /etc/fonts/conf.d и корёжим их, как нам заблагорассудится (только если это символические ссылки - не забываем, что изменится и соответствующий "основной" файл, так что в этом случае лучше копировать, а не делать ссылку).
    Проверяем результат командой
    FONTCONFIG_FILE=/etc/fonts/fonts.conf.alt fc-match sans

    Если результат (выводимое имя шрифта) нас устраивает, запускаем Java-приложение аналогичным образом, например FONTCONFIG_FILE=/etc/fonts/fonts.conf.alt netbeans
    При этом для остальных приложений всё остаётся по-прежнему.
    Ответ написан
    Комментировать