吐槽一下:感觉这个问题不算是什么疑难杂症啊, 为啥没查到多少解决办法
这是在 stackoverflow 上找到的一篇描述同样问题的帖子, 但时间是在9年前。。。。
问题描述
同一自定义字体, 同样 fontsize,在 mac windows 同一款浏览器(Chrome)中 ,渲染不一致,具体表现如下(蓝色阴影为审查元素时文本实际占用大小,我设置的 div 定宽, 高度没有设置):
说明:上面数字的 font-family 是苹果字体 DIN Condensed Bold, 为了将此样式通用到 windows 端的浏览器中, 我将它从 mac 的字体册导出并通过 @font-face 作为自定义字体引入;
然后, 就出现了上面这样渲染不一致的情况- -, 而这种差异对于整体布局影响很大(如垂直居中啊什么的)
分享两个搜索该问题的过程中看到的好文:
原因
简单来说就是, 字体文件包(我这里用的是.ttf的)在 mac 中和在 windows 中关于文字垂直位置的配置参数 是分别配置的, 所以很有可能出现渲染不一致的情况;
解决方法
- 下载软件 fontforge(免费的), 并用该软件打开你需要修改的字体文件(如后缀为.ttf的)
- 点击 Element 后选择 FontInfo,再在左侧栏选择 OS/2,并切换到 Metric, 如图:
(说明: 蓝框为 windows 对应的配置, 红框为 mac 对应的配置;)
4.选择file -> Generate Fonts ,选择字体格式,输出为你需要的字体文件
以上是我的解决方法, 至于这些参数具体是什么含义,建议看上面分享的文章, 解释的很详细了。
另外, 修改出来的字体是垂直居中的, 但是字体上下自带了很大的 gap, 这个可以通过设置字体的 line-height 为 font-size 大小 来解决
或者你也可以通过对 fontforge 这些配置参数的进一步理解找到更好的解决方案
欢迎遇到相同问题的同学分享讨论~~