Я перечислил все доступные шрифты в системе, позвонив
GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
Font[] fontNames = graphicsEnvironment.getAllFonts();
for (Font s : fontNames) {
System.out.println(s);
}
На консоли я вижу много шрифтов, но список выглядит очень незавершенным. Например: Моя ОС установила шрифт "Система" , но на выходе я не вижу этот шрифт:
...
java.awt.Font[family=Sylfaen,name=Sylfaen,style=plain,size=1]
java.awt.Font[family=Symbol,name=Symbol,style=plain,size=1]
java.awt.Font[family=Tahoma,name=Tahoma,style=plain,size=1]
...
Установленные шрифты (извините за полировку ОС):
Почему это?
Другое дело, что в WordPad я вижу шрифт "System". Однако в MS Word 2010 шрифт "Система" недоступен.
Проблема не в этом конкретном шрифте "Система" . В Java установлено несколько шрифтов, но отсутствует.
EDIT: Почему я спрашиваю? Мое приложение использует BIRT Report Designer для генерации файлов .rpt с шаблонами отчетов. Затем я использую эти файлы для отображения компонентов Swing, таких как JLabel, JTextField и т.д. Основная проблема: пользователь может генерировать отчет с полями, которые используют шрифт, который не может обрабатывать Java Swing.
Часть образца XML файла, созданного BIRT:
<property name="fieldName">Blablabla{Label}</property>
<property name="fontFamily">"System"</property>
<property name="fontSize">16pt</property>
В нашем требовании клиента указано, что шрифт не может отличаться между сгенерированным отчетом и компонентами Swing Java.
То, что я хочу сделать, это либо обработать все системные шрифты в Java, либо исключить из BIRT-шрифтов, которые java не может обрабатывать.