字体族排版

这段文字用哪一套字,以及系统里找不到那套字时按什么顺序往下退。

  • 换一种字体
  • 用系统默认的那套字
  • 这个字看着不对
  • 字体族
  • 字型家族
  • 字体家族

示例

Webfont-family原生支持点选数值,样本实时变化

把说不清的东西,变成能说清的词。

font-family: var(--font-sans);

Web / iOS / Android 对照

Web原生支持

平台通用范围

font-family

CSS: font-family

官方定义是「指定一个按优先级排列的字体族名或通用族名列表」。它与另两端最不同的一点写在后文:字体选择「不是在列表里第一个可用的字体处就停下」,而是逐字符进行 —— 某个字体缺这个字的字形时,会继续往后找。所以备选列表不是摆设。

iOS原生支持

平台通用范围

custom

也叫 Font.custom(_:size:)

SwiftUI: Font.custom(_:size:)

官方描述是「用给定的名字和尺寸创建一个自定义字体,并随正文文字样式缩放」。这里字体与尺寸是一起给的,没有单独的「只换字体族」入口;而且同一族有三个变体分别对应随动态字体缩放、固定尺寸、相对某个文字样式缩放 —— 选哪个直接决定它跟不跟系统字号走。

Android原生支持

平台通用范围

fontFamily

Compose: TextStyle.fontFamily

官方描述是「渲染文字时使用的字体族」。类型是 FontFamily,它可以由一组 Font 构成 ——官方对 FontListFontFamily 的说明是「用一组 Font 定义一个字体族」,示例里那组 Font 用 weight 与 style 区分同一族的不同字重字形,也就是变体选择。至于 Web 那种「缺字时逐级换到下一个族」的语义,官方这两页都没有陈述 —— 这里只记录文档写了什么,不据此断言 Android 没有回退。

使用规范

什么时候用

  • 品牌要求特定字形时
  • 中英文混排需要分别指定字体时

什么时候别用

  • 只是想让字更粗 → 那是字重,不是换字体
  • 没有备选族名,缺字时会退到无法预期的字体上

容易混淆

给 AI 的提示词

这条词条还没有经过验证的实现提示词。