我在通过fop渲染生成pdf时,遇到了一个关于truetype字体在svg内的呈现问题。
最终生成的pdf中,这个字体显示为Times New Roman,而不是我预期的truetype字体。
文档的主要字体族使用Type 1字体,并且使用了我生成的字体度量标准,这些都显示正确。我认为,过去只是为图表添加了该字体的truetype版本。
奇怪的是,在某个阶段它还能正常工作,但现在似乎已经停止工作了,我现在无法让它重新工作,因为我不明白它一开始是如何工作的。为了尝试让它重新工作,我尝试了Java 6、Java 5和FOP 0.95、0.93以及最新的FOP trunk的不同组合,但都没有成功。即使在fop生成中启用了完整跟踪,我也看不到任何有关字体被替换为Times New Roman的提及,但我认为这是因为Batik负责此呈现。
我运行了一些示例Java代码,TrueType字体似乎被AWT正确识别,我相信这就是Batik所使用的。
我还尝试在fop.xconf文件中使用font-substitions,但似乎没有效果。在fop.xconf中,我只定义了Type 1字体和另外一个True Type字体Zapfdingbats,在pdf中都能正确处理。我是否应该在这里添加其他truetype字体,但是查看我们的版本历史记录,似乎过去没有出现过。
我是否遗漏了什么,因为我认为Batik会使用Windows ttf字体进行呈现,但似乎并没有起作用。任何帮助都将不胜感激。 谢谢, Crocked