Указать шрифт для инструмента 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 (: