Использование новых шрифтов с Apache FOP в Java

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

GraphicsEnvironment.getLocalGraphicsEnvironment().getAllFonts();

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

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

person Jon    schedule 20.10.2009    source источник


Ответы (1)


В последнем выпуске (FOP 0.95) были внесены значительные улучшения в конфигурацию шрифтов, поэтому просто обратитесь к этому документу, чтобы узнать о гораздо более простом подходе: http://xmlgraphics.apache.org/fop/0.95/fonts

Файлы метрик шрифтов XML больше не нужны.

На ваши вопросы:

  1. Это невозможно. Java не даст вам эту информацию. Отчасти поэтому FOP имеет собственную подсистему шрифтов.
  2. Да, это действительно рекомендуется. Обратите внимание, что FOP поддерживает подмножество шрифтов, поэтому в PDF-файл встраиваются только необходимые глифы.
  3. Не уверен, что вы имеете в виду. С приведенной выше информацией и обновлением до последней версии это должно быть достаточно просто.
person Jeremias Märki    schedule 20.10.2009
comment
Веб-сайт, который вы разместили, работал отлично и правильно внедрил шрифт. Однако он не отображает все символы правильно. Я использую Arial Unicode MS (у которого есть глифы для большинства символов Unicode), и я пытаюсь отобразить случайный китайский символ, 丞, хотя он поддерживается в Arial Unicode MS, а шрифт PDF — Arial Unicode MS (который, как я проверил, встроен), он отображает его как ä¸ Есть идеи? - person Jon; 20.10.2009