一个「散装」字体引发的「惨案」
日期:2017 年 9 月 11 日 • 理论 & 教程
前一阵收到很多朋友的询问,Sketch 打开包含了 Apple 默认中文字体「苹方」的文档的时候,会有 bug。比如提示「找不到系统字体」或者在操作的时候字体选择框直接置灰无法选择,比如这样:

我自己电脑上也有类似的问题,当时猜测是 PingFang 字体文件里包含了不同的版本文件导致 Sketch 没法正常读取(因为打开 PingFang.TTC 文件问发现里面包含了 6 个字重以及两个不同的实体文件),而在 macOS 的非系统字体文件夹里还有另外的我自己装的 PingFang 字体的文件,可能产生了某种冲突。一开始我并没有意识到问题所在,只知道在我自己的 Sketch 的字体菜单里有整整 9 个粗细,但其中有一部分会导致上述的问题。

后来问了一下 Luxu 童鞋咨询了问题所在,他研究了一下很快找出其实原因,上图中虽然显示了 9 个磅重,但其实里面有三组是同一种粗细,只是名字不一样,这个 bug 产生的原因就是我自己安装的 PingFang 字体其实是个「散装货」,跟系统自带的字体产生了一定的冲突,而事实上只有「/System/Library/Fonts/PingFang.ttc」文件才是正宗的系统自带字体。所以其实解决的方法也就非常简单了:
直接删除自行安装的苹方字体,也就是「/Library/Fonts/」和「/Users/你的用户名/Library/Fonts/」目录下的 PingFang 命名的各种粗细和版本的字体文件
或者,更偷懒地,可以直接搜索「PingFang」,后缀是 TTC 的打包字体文件才是系统提供的正牌,其他所有 TTF 等版本的都是「散装」的,可以直接删除。
同时,Luxu 也提了一个很好的建议,因为 PingFang 字体所附的西文部分,其实和系统默认的 SF 还是不一样的,所以如果想要在 Sketch 里完美模拟中西混排的文字的时候,直接选择 SF 字体,然后调整一下粗细,Sketch 会自己去做匹配和 fallback。

我自己电脑上也有类似的问题,当时猜测是 PingFang 字体文件里包含了不同的版本文件导致 Sketch 没法正常读取(因为打开 PingFang.TTC 文件问发现里面包含了 6 个字重以及两个不同的实体文件),而在 macOS 的非系统字体文件夹里还有另外的我自己装的 PingFang 字体的文件,可能产生了某种冲突。一开始我并没有意识到问题所在,只知道在我自己的 Sketch 的字体菜单里有整整 9 个粗细,但其中有一部分会导致上述的问题。

后来问了一下 Luxu 童鞋咨询了问题所在,他研究了一下很快找出其实原因,上图中虽然显示了 9 个磅重,但其实里面有三组是同一种粗细,只是名字不一样,这个 bug 产生的原因就是我自己安装的 PingFang 字体其实是个「散装货」,跟系统自带的字体产生了一定的冲突,而事实上只有「/System/Library/Fonts/PingFang.ttc」文件才是正宗的系统自带字体。所以其实解决的方法也就非常简单了:
直接删除自行安装的苹方字体,也就是「/Library/Fonts/」和「/Users/你的用户名/Library/Fonts/」目录下的 PingFang 命名的各种粗细和版本的字体文件
或者,更偷懒地,可以直接搜索「PingFang」,后缀是 TTC 的打包字体文件才是系统提供的正牌,其他所有 TTF 等版本的都是「散装」的,可以直接删除。
同时,Luxu 也提了一个很好的建议,因为 PingFang 字体所附的西文部分,其实和系统默认的 SF 还是不一样的,所以如果想要在 Sketch 里完美模拟中西混排的文字的时候,直接选择 SF 字体,然后调整一下粗细,Sketch 会自己去做匹配和 fallback。