【问题】
在编译docbook为pdf过程中,出现警告:
Aug 3, 2012 5:10:19 PM org.apache.fop.events.LoggingEventListener processEvent
WARNING: Glyph "?" (0xff1a, colonmonospace) not available in font "CambriaMath".
其中,当然docbook字体配置为:
<!-- 标题的字体 --> <xsl:param name="title.font.family">Microsoft YaHei</xsl:param> <!-- 主体内容,即普通内容的字体 --> <xsl:param name="body.font.family">Microsoft YaHei</xsl:param> <!-- 注意下面的monospace字体,包括了(programlisting)代码,所以如果代码中有中文, 那么此处设置的字体必须是支持中文的字体,否则代码中的中文都会显示###--> <xsl:param name="monospace.font.family">Microsoft YaHei</xsl:param> <!-- 符号类的字体 --> <xsl:param name="symbol.font.family">Cambria Math</xsl:param>
【解决过程】
1.关于Glyph的方面问题,其实之前就遇到过一种,而且已经解决掉了:
2.后来通过HTML中的Unicode Lookup,找到了0xFF1A所对应的字符:
Unicode character | Oct | Dec | Hex | HTML |
:fullwidth colon | 0177432 | 65306 | 0xFF1A | : |
即,中文输入法中所输入的冒号’:’这个字符。
3.然后猜测是否会出现之前的状况:
字体中没有的字符,无法用相应字体显示出来,就会以#代替,
所以就去生成的pdf中搜了下#,结果没有发现那些中文的冒号被#代替的情况,即中文的冒号,也都正常显示了。
4.本以为只有个别的中文冒号呢,结果去3个相关的xml文件中找了下,共有好几十个冒号,所以我此处,没法用加symbol的方法去解决此问题了,否则要加几十个的,明显不是正常的解决方法。
5.现在尝试,对于3个xml文件,按xml以此地,把中文冒号:替换为英文冒号:,看看哪个文件影响的,还是所有文件都影响。
最后的结论是,所有的中文的冒号都会导致这个警告。
中文冒号在此处,都会被识别为Glyph,然后调用Cambria Math字体去显示,但是Cambria Math字体库中没有此字符,所以最后fallback回来用monospace或body的字体Microsoft YaHei来显示,所以不会出现中文冒号被#所代替的情况。
【总结】
即,中文冒号这个字符此处虽然也出现警告,但是实际上并不影响中文冒号这个字符的显示的。
所以,暂时的结论是可以忽略此警告。
转载请注明:在路上 » 【基本解决】docbook编译生成pdf中出现警告:WARNING: Glyph "?" (0xff1a, colonmonospace) not available in font "CambriaMath".