最新消息:20210816 当前crifan.com域名已被污染,为防止失联,请关注(页面右下角的)公众号

【基本解决】docbook编译生成pdf中出现警告:WARNING: Glyph "?" (0xff1a, colonmonospace) not available in font "CambriaMath".

Docbook crifan 1883浏览 0评论

【问题】

在编译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的方面问题,其实之前就遇到过一种,而且已经解决掉了:

【已解决】Docbook用fop生成pdf过程中出现警告:WARNING: Glyph "?" (0x21b5, carriagereturn) not available in font "MicrosoftYaHei".

2.后来通过HTML中的Unicode Lookup,找到了0xFF1A所对应的字符:

Unicode character

Oct

Dec

Hex

HTML

:fullwidth colon

0177432

65306

0xFF1A

&#65306;

即,中文输入法中所输入的冒号’:’这个字符。

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".

发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
82 queries in 0.169 seconds, using 22.34MB memory