Ошибка рендеринга шрифта TrueType в SVG - PullRequest
3 голосов
/ 23 декабря 2009

У меня проблема с рендерингом шрифта TrueType внутри SVG, который отображается в PDF через FOP.

В последнем файле PDF шрифт выходит с Times New Roman вместо шрифта TrueType, который я ожидал.

Основное семейство шрифтов документа использует шрифты типа 1, а также использует метрики шрифтов, которые я сгенерировал, и они отображаются правильно. Я думаю, что версия шрифта TrueType была добавлена ​​просто для диаграммы в прошлом.

Странно то, что это работало на одном этапе и, похоже, перестало работать, и теперь я не могу вернуть его к работе, так как не понимаю, как это могло бы сработать. Чтобы попытаться вернуть его в рабочее состояние, я прошел через различные комбинации Java 6, Java 5 и FOP 0,95 и 0,93 и последнюю магистраль FOP - все безуспешно. Даже при включенной полной трассировке в генерации fop я не вижу упоминания о замене шрифта Times New Roman, но я предполагаю, что это потому, что Batik берет на себя ответственность за этот рендеринг.

Я запустил некоторый пример Java-кода, и шрифт TrueType, похоже, правильно виден AWT, который, как мне кажется, использует Батик.

Я также пытался использовать font-substitions в файле fop.xconf, но, похоже, это не дало эффекта. В файле fop.xconf я определил только шрифты Type 1 и еще один Zapfdingbats со шрифтами True Type, которые правильно обрабатываются в pdf. Если бы я также добавил сюда другой шрифт TrueType, но, проверяя нашу историю версий, похоже, его там не было в прошлом.

Есть ли что-то, что я здесь упускаю, так как я думал, что батик возьмет шрифт windows ttf и отобразит его, но это, похоже, не работает. Любая помощь будет принята с благодарностью. Спасибо, Замотанный

1 Ответ

5 голосов
/ 24 декабря 2009

Взгляните на следующие ответы, сделанные в списке рассылки пользователей FOP:

Итак, чтобы сделать эту работу, вы должны сделать следующее:

  • Использовать FOP 0,95
  • Не работать с файлами метрик шрифтов XML, созданными с помощью TTFReader. Они больше не нужны.
  • Убедитесь, что шрифты, которые вы хотите использовать, установлены в вашей операционной системе (чтобы Batik имел к ним доступ через AWT / Java2D) и были настроены для FOP (самый простой способ:, http://xmlgraphics.apache.org/fop/0.95/fonts.html#basics)
  • Используйте правильное имя семейства шрифтов шрифта в SVG. Имя PostScript шрифта не будет работать.
...