У вас проблема.
Font.getFamily (string) работает только для шрифтов "Base 14", Helvetica, Times Roman, Courier (плюс их варианты, выделенные жирным шрифтом и курсивом), а также Symbol и ZapfDingbats. Запрашивая что-либо, кроме одного из этих шрифтов, вернет FontFamily.UNDEFINED.
Ваш код работает не так, как вы думаете. Если вы оказались в Arial, это только потому, что это шрифт по умолчанию.
То, что вы хотите, это FontFactory.getFont(...)
. Прежде чем FontFactory сможет вернуть указанный шрифт по имени, вам необходимо зарегистрировать файл этого шрифта. Самый простой способ сделать это - вызвать FontFactory.registerDirectories()
, который перечислит все каталоги, используемые известными операционными системами для хранения шрифтов, и зарегистрирует все найденные там шрифты. Это займет больше времени, в зависимости от того, сколько у вас есть шрифтов и насколько они велики. Для регистрации многих шрифтов CJKV потребуется значительное количество времени ... менее 30 секунд по всей вероятности, но мой зверь системы может занять 10-20 секунд (но у меня МНОГО больших шрифтов).
Вы также можете зарегистрировать отдельные файлы с помощью FontFactory.register(fontPath)
, но для этого необходимо, чтобы вы знали, где их искать.
В любом случае, ваш код может выглядеть примерно так:
FontFactory.registerDirectories();
Font fuente = FontFactory.getFont("Times New Roman");
И FontFactory действительно игнорирует регистр при поиске шрифтов. Font.getFamily()
нет.