必须采取三个步骤才能使中文字符正确显示在使用FOP创建的PDF文件中(对于默认字体中不可用的所有字符也是如此,更常见的是使用非默认字体).
让我们使用这个简单的示例来显示FOP在出现问题时产生的警告:
博洛尼亚大学中国学生的毕业论文
处理此输入时,FOP会发出几个与此类似的警告:
org.apache.fop.events.LoggingEventListener processEvent
WARNING: Glyph “?” (0x535a) not available in font “Helvetica”.
…
在FO文件中没有任何明确的字体系列指示,FOP默认使用Helvetica,这是Base-14 fonts之一(各地都可用的字体,因此不需要嵌入它们).
每种字体都支持一组字符,为它们分配一个可见的字形;当字体不支持某个字符时,会产生上述警告,并且PDF显示“#”而不是缺少的字形.
第1步:在FO文件中设置font-family
如果默认字体不支持我们文本的字符(或者我们只是想使用不同的字体),我们必须使用font-family属性来声明所需的字体.
font-family的值是继承的,所以如果我们想对整个文档使用相同的字体,我们可以在fo:page-sequence上设置属性;如果我们只需要一些段落或单词的特殊字体,我们可以在相关的fo:block或fo:inline上设置font-family.
所以,我们的输入成为(使用我有一个字体作为例子):
博洛尼亚大学中国学生的毕业论文
但是现在我们得到了一个新的警告,除了旧警告!
org.apache.fop.events.LoggingEventListener processEvent
WARNING: F