泰山OFFICE技术讲座:粗体并不改变字体宽度,仅仅通过布局来处理(全网首发)

Posted 柳鲲鹏

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了泰山OFFICE技术讲座:粗体并不改变字体宽度,仅仅通过布局来处理(全网首发)相关的知识,希望对你有一定的参考价值。

  在WORD中,粗体会引起布局变化。通常理解是因为粗体导致字的宽度发生变化,布局自然变化。泰山OFFICE之前也是这样处理的,布局结果与WORD相差太大。有一次吾改JDK字体处理代码,正好路过了宽度处理,当时效果就明显改善。之后分析下来空欢喜。因为字体引擎在粗体时宽高明显增加,所以吾专门在JDK/FREETYPE两处增加了代码,屏蔽了字体大小变化。

  那么,能不能分析在WORD中,粗体变化规律,找到宽度变化呢?大家都是这样想的,吾也是。然后就通过穷举法查找规律。举例来说,宋体,五号,汉字:

  • 前10个字增加一个像素。由此可知,增加宽度应该是1/10。
  • 之后,18个字又增加一个像素。增加宽度又变成了1/18。

  哪个为准?今天又制作了文档,进行了研究,结论是很奇怪的:粗体引起的变化,仅仅是布局的处理变化,实际上字体宽度保持不变。

  这个结论真是石破天惊啊!那么有没有证据?当然有:

  在上述案例中:

  • 当柳由普通变为粗体的时候,鲲、鹏位置发生了变化。
  • 按理来说,鲲位置发生了变化,鲲之后的字位置都应该变化。
  • 事实上,只有鲲、鹏两个字发生了变化。其他的字位置都保持不变。

  据此,我们可以下结论:粗体时,字的位置给固定了(大约是类似网格的东西)。怎么固定的,这个要深入研究。

  

以上是关于泰山OFFICE技术讲座:粗体并不改变字体宽度,仅仅通过布局来处理(全网首发)的主要内容,如果未能解决你的问题,请参考以下文章

泰山OFFICE技术讲座:使用字体粗体的四种情形

泰山OFFICE技术讲座:微软雅黑字体故意设置的坑,粗体错误

泰山OFFICE技术讲座:已有斜体的字体,斜粗体是怎样产生的?

泰山OFFICE技术讲座:验证字体的宽度计算

泰山OFFICE技术讲座:有的字体空格有两种宽度

泰山OFFICE技术讲座:有的字体空格有两种宽度