2009-10-20 4 views
6

Я должен интернационализировать приложение и поэтому должен позволить пользователю выбрать шрифт для PDF, который я создам во время выполнения. Я хочу, чтобы иметь возможность отобразить список шрифтов выбора из системы пользователя с помощьюИспользование новых шрифтов с Apache FOP в Java

GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts(); 

Это прекрасно работает для получения шрифтов, но это, кажется, что я должен прыгать через несколько обручей, чтобы получить этот шрифт, чтобы играть хорошо с FOP, как указано here. Я могу выполнить все инструкции, которые они изложили, за исключением того, что я не уверен, как получить расположение шрифтов для запуска TTFReader.

  1. Кто-нибудь знает, как указать путь каждого шрифта, который java собирается с помощью команды getAllFonts()?
  2. Это хорошая идея для встраивания шрифтов в PDF-файлы? Например, файл Arial Unicode MS TFF составляет ~ 30 МБ.
  3. Это единственный способ создать интернационализированные pdf-файлы с FOP и XSL?

ответ

7

Там были значительные улучшения в конфигурации шрифтов с последнего выпуска (ФОП 0,95), поэтому, пожалуйста, просто обратитесь документ там гораздо более простой подход: http://xmlgraphics.apache.org/fop/0.95/fonts.html#basics

Метрики файлы XML шрифтов больше не необходимо.

на вопросы:

  1. Это невозможно. Java не даст вам эту информацию. Отчасти потому, что у FOP есть своя подсистема шрифтов.
  2. Да, это действительно рекомендуется. Обратите внимание, что FOP поддерживает подмножество шрифтов, поэтому в PDF-файлы встроены только глифы.
  3. Не уверен, что вы имеете в виду. С приведенной выше информацией и обновлением до последней версии должно быть достаточно просто.
+1

Веб-сайт, который вы опубликовали, отлично работает и правильно вложил шрифт. Однако он не отображает все символы правильно. Я использую Arial Unicode MS (у которого есть глифы для большинства символов Unicode), и я пытаюсь отобразить случайный китайский символ 丞, хотя это поддерживается в Arial Unicode MS, а шрифт PDF - Arial Unicode MS (который я проверил, встроен), он делает его как ä¸ Любые идеи? – Jon

Смежные вопросы