3

我在通过 fop 将 svg 中的 truetype 字体渲染为 pdf 时遇到问题。

在最终的 pdf 中,字体是 Times New Roman,而不是我所期望的 truetype 字体。

文档的主要字体系列使用 Type 1 字体,并且还使用了我生成的字体规格,并且这些字体显示正确。我认为字体的 truetype 版本只是为过去的图表添加的。

奇怪的是,这在一个阶段工作,似乎已经停止工作,我现在无法让它恢复工作,因为我不明白它最初是如何工作的。为了尝试让它恢复工作,我经历了 Java 6、Java 5 和 FOP 0.95 和 0.93 以及最新的 FOP 主干的不同组合,但都没有成功。即使在 fop 生成中启用了完整的跟踪,我也没有看到字体被 Times New Roman 取代,但我认为这是因为 Batik 对此渲染负责。

我已经运行了一些示例 Java 代码,并且 AWT 似乎正确地看到了 TrueType 字体,我相信这是 Batik 正在使用的。

我也尝试在 fop.xconf 文件中使用字体替换,但这似乎没有效果。在 fop.xconf 中,我只定义了 Type 1 字体和另一种在 pdf 中正确处理的 True Type Font Zapfdingbats。我是否还应该在此处添加其他 truetype 字体,但检查我们的版本历史,它似乎过去并不存在。

有什么我在这里遗漏的,因为我认为蜡染会采用 windows ttf 字体并渲染它,但这似乎不起作用。任何帮助将不胜感激。谢谢,撞坏了

4

1 回答 1

5

查看 FOP 用户邮件列表中的以下答案:

因此,要完成这项工作,您应该执行以下操作:

  • 使用 FOP 0.95
  • 不要使用通过 TTFReader 生成的 XML 字体度量文件。这些不再是必需的。
  • 确保您要使用的字体已安装在您的操作系统中(因此 Batik 可以通过 AWT/Java2D 访问它们)并为 FOP 配置(最简单的方法: http: //xmlgraphics.apache.org/fop/0.95/fonts .html#basics )
  • 在 SVG 中使用正确的字体系列名称。字体的 PostScript 名称将不起作用。
于 2009-12-24T07:17:27.610 回答