Указать шрифт для инструмента Java в Linux

Я пытаюсь настроить Java-инструмент kSar для визуализации данных sar. Все хорошо, кроме настроек шрифта.

kSar пользователь jfreechart для построения графиков, и он использует некоторые странные нечитаемые шрифты. Вот пример выходных данных:

Я установил новый шрифт в ~/.fonts (кстати, у меня нет прав root и я не могу вносить изменения в систему в целом), однако я не нашел способа указать, какой шрифт я бы хотел использовать напрямую в Java.

Я попытался изменить настройки шрифта в ~/.fonts.conf, и fc-match показывает мне:

 $ fc-match -s
DejaVuSans.ttf: "DejaVu Sans" "Book"
n019003l.pfb: "Nimbus Sans L" "Regular"
s050000l.pfb: "Standard Symbols L" "Regular"

Содержание ~/.fonts.conf:

<!--?xml version="1.0"?>-->
<!--DOCTYPE fontconfig SYSTEM "fonts.dtd">-->
<!-- ~/.fonts.conf for per-user font configuration -->
<fontconfig>
<alias>
    <family>sans-serif</family>
    <prefer>
        <family>DejaVu Sans</family>
    </prefer>
</alias>
<alias>
    <family>monospace</family>
    <prefer>
        <family>DejaVu Sans</family>
    </prefer>
</alias>
<match>
    <test name="family"><string>Arial</string></test>
    <edit name="family" mode="prepend" binding="strong">
        <string>DejaVu Sans</string>
    </edit>
</match>
<match>
    <test name="family"><string>helvetica</string></test>
    <edit name="family" mode="prepend" binding="strong">
        <string>DejaVu Sans</string>
    </edit>
</match>
</fontconfig>

и java читает этот файл (причина в случае опечатки в нем происходит ошибка), но ничего не меняется.

В другом окне он хорошо работает с читаемыми метками (в том же файле sar). Есть ли способ это исправить?

1 ответ

Решение

Наконец решение было найдено. Это довольно грязный хак, к сожалению, это единственный способ, который я нашел. Каждый раз, когда мне нужно запустить эту Java, я генерирую специальный.fonts.conf, чтобы запретить все шрифты, кроме одного, который мне нужен. Я делаю это с этим кодом:

echo '<!--?xml version="1.0"?>-->
<!--DOCTYPE fontconfig SYSTEM "fonts.dtd">-->
<!-- ~/.fonts.conf for per-user font configuration -->
<fontconfig>' > ~/.fonts.conf
# here fc-list will produce small warning about bad ~/.fonts.conf
# don't worry about it
fc-list | grep -vi EXCLUDE_FONT | while read FONT ; do 
echo "<rejectfont><pattern><patelt name=\"family\"><string>${FONT%%:*}</string></patelt></pattern></rejectfont>" >> ~/.fonts.conf ; 
done
echo "</fontconfig>" >> ~/.fonts.conf

Конечно, я делаю резервную копию существующего ~/.fonts.conf и помещаю его обратно после завершения работы Java.

Надеюсь, когда-нибудь кто-нибудь скажет мне реальное решение Unix Way (:

Другие вопросы по тегам