当你以为自己用的是苹果系统字体

2024-04-11

一个与一组字体

下面这张图里的字体是「苹果系统字体」吗?

如果对字体有所关注,你可能知道图里用的是 macOS、iOS 等苹果操作系统内置的「苹方-简」(PingFang SC),可能也在不少网页、应用和设计图中见过类似的效果。但如果你觉得这跟「苹果系统字体」是一回事,那最好……再去想想?

为了说明问题出在哪里,首先要明确到底什么是「苹果系统字体」,或者说得更完整些:苹果系统显示界面文本所用的默认字体。其实,苹果系统字体并不是固定指某一个字体,而更适合描述为一组字体加上一套调用规则。你可以从系统中的 /System/Library/Fonts 路径找到这些字体;PingFang.ttc(包含了 PingFang SC/TC/HK 三种变体及其各字重的合集字体)只是其中之一。

/System/Library/Fonts 目录的内容

具体来说,系统在显示每个字符时,都会根据 (1) 该字符所属文种和 (2) 系统语言设置,选择不同的字体来调用:

  • 对于简体中文用户最熟悉的 PingFang SC,仅当 (1) 显示汉字,且 (2) 简体中文在系统语言设置中排在靠前位置时,它才会被优先调用。
  • 包括字母和数字在内的大多数拉丁字符,都将使用 SF 家族字体(macOS 和 iOS 上的 SF Pro、watchOS 上的 SF Compact)显示。
  • 如果在系统语言设置中,将其他使用汉字的选项排到简体中文之前,汉字也会优先用相应选项的默认字体来显示(如港台繁中字体 PingFang HK/TC、日文字体 Hiragino Sans、韩文字体 Apple SD Gothic Neo),只有遇到这些字体未收录的字符(例如日文字体不需要的简化字),才会「回退」到排序在后选项对应的默认字体,例如 PingFang SC 来显示。

因此,开头图中的字体不能称之为「苹果系统字体」的原因有二:

  1. 苹果系统会用 SF 字体来显示其中的英文和数字,而不是直接使用苹方字体中的英文和数字;
  2. 即使是中文部分,是否用 PingFang SC 显示也取决于系统语言设置。

将「真假系统字体」并排对比,就能很明显地看出差异:

注意繁体苹方的不同字形,以及日文冬青黑体因缺字回退到苹方显示的部分(「伤」)

SF 和苹方已经「上岗」快十年了。遗憾的是,直到今天,直接把 PingFang SC 当作「苹果系统字体」来使用的错误,在中文开发和设计圈中还是随处泛滥,以至于都可以用它来鉴别设计品质和「原产地」:如果哪个号称重视设计的应用还在混淆苹方和系统字体,那么它对设计的在意程度至少是值得怀疑的;而如果某个全英文界面出现了苹方的西文和数字,几乎可以百分之百确定其背后是一个国内团队,无论它多么努力地想掩饰这一点。

别以你的名字呼唤我

那苹方到底应该怎么用呢?或许有点激进,但本文的主张是:几乎在任何开发、设计和排版场合,都不要「指名道姓」、即通过指定字体名称的方式调用苹方,或者至少不要将其作为第一顺位的选项(对于网页等可以指定字体列表的场合)。这么主张的原因包括审美、技术和法律等几个层面,下面具体说明。

首先,对于用户界面的开发和设计,如果你的目标是和系统的原生风格一致(这也应该是多数情况下的默认选择),那么直接指定苹方从一开始就是错的。原因已经在上面讨论了:它不符合系统字体调用机制。而如苹果在其《人机界面指南》中指出,「除非你的 app 迫切需要使用自定义字体,例如为了宣传品牌或者创造沉浸式的游戏体验,否则请首选系统字体」——系统不会用苹方的西文和数字,也不会在非简体中文语言设置下优先用国标字形的 PingFang SC。

当然,实践中很多开发和设计之所以将苹方用作系统字体,并非故意犯错,而是因为没有注意到更合适的设置方式。实际上,在很多场合,苹果系统字体都可以通过专用的「代称」来调用,从而免去了直接指定字体名称的必要。例如:

  • 对于苹果系统上的应用开发,可以使用常量 Font.Design.default 在所有平台上获取系统字体,不需要直接指定字体名称。
  • 对于网页开发,system-ui 是目前已被广泛支持(Chrome 56+, Edge 79+, Safari 11+, Firefox 43+)的系统字体代称,将其写在 font-family 属性的靠前位置,文本在苹果系统上就会按原生方式显示为 SF Pro、苹方等字体的适当组合。顺带一提,野外还能见到诸如 -apple-system(仅 Safari 支持)、BlinkMacSystemFont(仅 Mac 版 Chrome 53+ 支持)等代称,但这些属于历史上出现的权宜之计,支持面较窄,可以出于兼容目的保留,但不应依赖其效果。
  • 界面设计可能是相对较为麻烦的情况。由于 Figma、Sketch 等主流工具都是国外开发,难免对于中英混排的需求欠考虑,无法分别指定中英文字体。作为一种妥协方案,可以使用一些插件来避免手动调整,例如 Sketch 上的 Automate Sketch 和 Figma 上的 Multilingual Font Mixer

其次,即使不以和系统默认风格一致为目标,也有很多理由优先使用 SF Pro 而不是苹方来显示英文和数字。和大多数中文字体一样,苹方内置的西文部分在用心程度上基本就是「充话费送的」:即使没有 Windows 内置的宋体和黑体那样惨绝人寰,也跟精致美观搭不上什么关系,就连最基础的斜体都只能靠强制拉伸来显示。

相比之下,SF Pro 经过多年更新,已经成为一个字重和宽窄无极变换的可变字体家族;支持多种实用的 OpenType 特性,例如可以开启适合制作表格的等宽数字、标点垂直居中等;还可以通过 SF Symbols 显示出五千多种苹果原生风格的图标。即使在中文环境里,这些功能也是非常实用的,而只选择苹方就等于直接说了再见。

SF Pro 字体在字重和宽度两个轴上的无极变换(来源:苹果)

风物长宜放眼量

应当承认,上面的讨论只考虑了针对苹果系统开发和设计的情况,但是……你可能也没什么必要操心其他情况?如果你的目标是符合原生风格,那么在面向非苹果平台设计时,就应该也入乡随俗,采用相应平台的原生字体(例如 Windows 上的 Segoe UI 和雅黑/正黑,Android 上的 Roboto 和思源黑体),而不是强行把苹果系统字体用在其他平台上。

退一步说,即使你真的对苹果字体爱到死去活来,恐怕也得先看看苹果法务的脸色——剧透一下,并不是很热情。诚然,一般而言,苹果系统中内置的字体是可以用于包括商用在内的用途的,依据是《macOS 软件许可协议》(目前最新版是适用于 macOS Sonoma 的协议)第 E 条:「用户可在运⾏ Apple 软件时,使⽤包含在 Apple 软件内的字体来显示和打印内容」。

问题在于,默认情况下,macOS 上的字体选单里根本找不到 SF 字体——苹果有意把它排除了。如果想在第三方设计、排版软件中使用 SF,唯一的方法就是在苹果开发者网站的设计资源板块下载一个独立安装版。而这个版本包含的 License Agreement for The Apple SF Pro Font 第 2 条规定,「仅在创作软件用户界面的演示图像(mock-ups),且该软件运行于苹果系统时,方可使用该字体」,相比于《macOS 软件许可协议》的范围大大缩减。

听谁的呢?这里值得解释一句:版权保护的对象不是「字体造型」,而是「字体软件」,也就是包含着字符形态和字体功能的字体文件。与系统中内置的 SF 相比,从苹果开发者网站上下载的 SF 虽然是同一套设计,但由于封装在不同字体文件中,在版权意义上就是两套不同的字体,分别受到不同许可协议的约束。使用哪个版本,就要遵守相应的条款。

总之,内置的 SF 只能在开发时通过代称来调用,可以直接使用的安装版 SF 则严格限制用途。因此,除非你就是苹果、或者得到苹果的明确许可,在任何针对苹果系统开发和设计以外的场合,使用 SF 字体在法律上都是不可行的。苹方倒是可以在第三方软件中直接选用,但在没有 SF 搭配的情况下,也就没有什么单独使用的意义了。

(实践中,另一个常见的迷惑行为是将 SF 系列字体直接打包到应用内——上述两种条款协议都禁止将 SF 嵌入其他软件或产品使用。一些非常知名的软件至今还在犯这样的低级错误,这里就不点名了。)

但你也没有损失什么。SF 和苹方固然是不错的字体,但也没有不错到非它不可的程度。例如,流行的开源字体 Inter 就是一个风格接近、技术特性也基本看齐的替代;中文用户还可以考虑直接用将 Inter 和思源黑体缝合而得的更纱黑体(Sarasa Gothic)。至于用来搭配的中文字体,除了经典选项思源黑体,很多国产厂商近年也都推出了可以免费商用的品牌 UI 字体,可堪考虑。

Inter 字体样张

总之,对于苹果系统字体,用得上的时候就不要乱用,用不上的时候也不要硬用。遵守规范,思维放开,才是正道。

A version of this article appears on Apr. 11, 2024 on SSPAI.