在SVG中发出渲染truetype字体

Cro*_*ked 3 fonts svg truetype batik apache-fop

我有一个问题,即通过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字体并渲染它但这似乎不起作用.任何帮助将不胜感激.谢谢,Crocked

Jer*_*rki 5

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

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

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