Я работаю над Java-программой, которая проверяет файлы XML на наличие символов, которые не имеют глиф-представления в определенном шрифте (с Font.canDisplay()
)
Файлы XML должны быть в кодировке utf-8 по умолчанию. Объекты в XML-коде анализируются и преобразуются в значение char / int, прежде чем они проверяются canDisplay
.
Для обеспечения гибкости программа принимает два параметра:
- Имя файла XML-файла
- Название шрифта
Я хотел бы проверить, существует ли указанный шрифт в системе, поскольку в противном случае нет смысла использовать canDisplay
.
Насколько я понимаю, Java 6 поддерживает OTF-шрифты. Однако, когда я использую getAvailableFontFamilyNames()
из java.awt. *, Он, по-видимому, перечисляет только шрифты TTF.
Я хотел бы знать, есть ли способ проверить, существует ли шрифт OTF (заданный его именем). И вообще, если использовать шрифты OTF в Java на Windows - это практично.
Цель этого: мы используем XEP для renderX, чтобы конвертировать xsl-fo в PDF-файлы. Я хотел бы иметь возможность определить, содержит ли файл xsl-fo символы, которые невозможно отобразить определенным шрифтом. XEP не выдает предупреждение и просто печатает пустые места вместо глифов. Что еще хуже, это то, что он, кажется, запутывает его вычисление интервала для выровненного текста, поэтому строки с этими пустыми местами длиннее или короче, чем текущий размер выровненного блока.
Я знаю, что есть определенные оговорки, например, Я должен был бы проверить, должен ли символ отображаться обычным, курсивом или полужирным шрифтом, а затем проверить наличие глифа в этом конкретном шрифте. Но сейчас достаточно более общего подхода, который проверяет, существует ли вообще символ для символа в шрифте обычного шрифта.