如何获取符合视觉预期的MS Gothic与Liberation Mono字符宽度数值?
如何获取FontForge中符合视觉预期的字符宽度数值
你遇到的问题核心是FontForge显示的宽度是字体内部的设计单位数值,不同字体的基准em框大小不同,直接对比数值无法反映视觉宽度。以下是具体解决方法:
原因说明
FontForge里的字符宽度是基于字体设计时的「em框」单位,不同字体的em框尺寸差异极大:
- 像Liberation Mono这类西文字体,em框通常设为1000或1200单位;
- MS Gothic这类日文字体,em框大多是2048单位。
你看到的“あ”宽度256、“=”宽度1229,是各自相对于自身em框的比例值,跨字体直接对比没有意义。
解决方法
1. 直接测量视觉像素宽度
在FontForge中,将两种字体设置为完全相同的显示字号(比如统一设为14pt),然后使用「度量工具」(Metrics Tool,快捷键M),直接拖动测量字符的视觉像素宽度,这个数值就是符合你视觉预期的宽度。
2. 将设计单位转换为统一物理单位
如果需要精确的数值对比,可以用公式将字体设计单位宽度转换为实际显示的像素宽度:
实际像素宽度 = (字符设计宽度 / 字体em大小) × 显示字号(pt) × 屏幕DPI / 72
举个例子:
- 假设MS Gothic的em大小为2048,“あ”设计宽度256,显示字号12pt,屏幕DPI为96:
(256/2048) × 12 × 96 / 72 = 16px - 假设Liberation Mono的em大小为1000,“=”设计宽度1229,同样参数:
(1229/1000) × 12 × 96 / 72 ≈ 19.66px
转换后就能得到视觉上的真实宽度差异。
3. 查看FontForge的「实际宽度」参数
选中目标字符后,打开「元素」→「字符信息」(快捷键Ctrl+I),在面板中找到「实际宽度」(Actual Width)项,这个数值是基于当前显示缩放的真实像素宽度,直接对比该数值即可。
额外注意
- MS Gothic这类日文字体采用全角/半宽设计,全角字符的视觉宽度通常是半角字符的2倍,但设计单位数值是相对于自身em框的,必须统一基准后再对比;
- 若需批量处理字符宽度,可以用FontForge的Python脚本批量读取设计单位宽度,再统一转换为相同单位后计算差异。
内容的提问来源于stack exchange,提问作者Uarcin
相关产品推荐
相关产品推荐

