扯闲篇
首发于扯闲篇

修正思源黑体在 Adobe 软件中文本选区过高的问题

很多人都知道思源黑体有这个问题, 就像上图这样. 这与传统的行高问题并不相同, 它是由字体中的 FontBBox 这项属性引起的.

修正它需要重新编译一下字体, 所以先从 GitHub 上拖下来所需的文件, 以 CN 地区子集版的 Regular 字重为例, 只需这几个文件就够了:

- UniSourceHanSansCN-UTF32-H
- FontMenuNameDB.SUBSET
- Regular/
  |- features.CN
  |- cidfontinfo.CN
  |- cidfont.ps.CN

然后找一个 Hex 编辑工具, 打开 cidfont.ps.CN 这个文件. 这是一个文本与二进制内容混合的文件, 使用 Hex 编辑工具修改比较保险. 在其中搜索文本 "FontBBox", 会看到类似这样的一段:

/FontBBox {-1002 -1048 2928 1808} def

FontBBox 属性是用于描述字体定界框 (font bounding box) 的左下角和右上角位置, 换言之数组中四个值分别为:

{left bottom right top}

因为字体定界框计算起来太麻烦了, 所以干脆按照字身框 (em box) 设置它就好了, 也就是:

{0 -120 1000 880}

然后保存文件, 并通过 GitHub 上给出的命令编译字体:

makeotf -f cidfont.ps.CN -ff features.CN -fi cidfontinfo.CN -mf ../FontMenuNameDB.SUBSET -r -nS -cs 25 -ch ../UniSourceHanSansCN-UTF32-H
 

安装上看看行高问题是不是正常了:

编辑于 2014-11-07

文章被以下专栏收录