我在我的项目中使用FOP 1.1 jar。 问题就是这样,当我在我的xsl fo模板中用法语打印静态文本如“Numérodecommande”时,出现了奇怪的字符而不是“é”。我在fo root标签中使用了base 14的字体系列(Times Roman),但仍然出现了这个问题。 最后,请帮我解决这个问题。
答案 0 :(得分:1)
(发布您的FO文件的简短示例可能真的有助于找到一个精确的解决方案;没有它,我们只能尝试猜测...)
提及"奇怪的角色"而不是期望的那些指向编码问题;否则可能是字体配置问题。
如果您打开FO文件,重音字符是否按预期显示?
如果没有,输入文件中存在一个问题,而FOP只是表现正常。
可能的原因和暂定的解决方案:
FO文件包含重音字符,但PDF显示"#"代替吗
然后它肯定是FOP字体配置的问题。请注意,如果使用Base-14字体,则无需进行字体配置。
例如,这个简单的FO文件产生正确的输出,没有任何配置,也没有任何与字体相关的属性:
<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="one">
<fo:region-body />
</fo:simple-page-master>
</fo:layout-master-set>
<fo:page-sequence master-reference="one">
<fo:flow flow-name="xsl-region-body">
<fo:block>à è ê é ì ò ù ç</fo:block>
</fo:flow>
</fo:page-sequence>
</fo:root>
角色&#34;#&#34;当您使用 font-family 属性设置的字体没有正确的字形时,会出现在PDF中(请参阅http://xmlgraphics.apache.org/fop/1.1/fonts.html#missing-glyphs)。
所以: