泰山JDK8获取(宋体,12)中文问号?宽度为0的问题

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泰山JDK8获取(宋体,12)中文问号?宽度为0的问题相关的知识,希望对你有一定的参考价值。

  • 调用堆栈
FileFontStrike.getGlyphAdvance(int, boolean) line: 705	
FileFontStrike.getGlyphAdvance(int) line: 693	
FileFontStrike.getCodePointAdvance(int) line: 812	
FontDesignMetrics.handleCharWidth(int) line: 417	
FontDesignMetrics.charWidthFloat(char) line: 447	
FontDesignMetrics.charWidth(char) line: 439	
  • 代码分析

getCodePointAdvance()处,mapper.charToGlyph(cp)得到?的图元索引(66267)。

getGlyphAdvance():

if (glyphCode >= INVISIBLE_GLYPHS) 
    return 0f;

INVISIBLE_GLYPHS=65534

这么一判断,自然为0了。

这是因为

以上是关于泰山JDK8获取(宋体,12)中文问号?宽度为0的问题的主要内容,如果未能解决你的问题,请参考以下文章

泰山OFFICE技术讲座:网格的来源,可能是宋体小四?

泰山OFFICE技术讲座:段落边框的高度研究(0.25磅)

泰山OFFICE技术讲座:段落边框的高度研究(0.75磅)

泰山OFFICE技术讲座:怪异的宋体6.5

泰山OFFICE技术讲座:怪异的宋体6.5

泰山OFFICE技术讲座:段落边框的高度研究(1.50磅)