TIMES NEW ROMAN шрифт в iText (Java версия) - PullRequest
2 голосов
/ 17 декабря 2010

Мне нужно сделать что-то подобное в iText:

Font fuente=new Font(Font.getFamily("ARIAL"),30,Font.BOLD);

Но вместо того, чтобы использовать шрифт ARIAL, мне нужно использовать шрифт TIMES NEW ROMAN поверх абзаца. Как я мог сделать это?

Спасибо.

1 Ответ

5 голосов
/ 18 декабря 2010

У вас проблема.

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() нет.

...