在SVG中发出渲染truetype字体

时间:2009-12-23 16:18:53

标签: fonts svg apache-fop true-type-fonts batik

我遇到了通过fop渲染到pdf的svg中呈现truetype字体的问题。

在最终的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文件中使用font-substitions,但这似乎没有效果。在fop.xconf中,我只定义了Type 1字体和另一个True Type Font Zapfdingbats,它们在pdf中正确处理。我是否还应该在这里添加其他truetype字体,但检查我们的版本历史记录,它似乎过去没有。

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

1 个答案:

答案 0 :(得分:5)

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

因此,为了使这项工作,您应该执行以下操作:

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