什么是字号阶梯?

字号阶梯是设计系统允许使用的一组有序字号,通常由一个基准字号乘以固定比例生成。把文字限制在这些档位上,正是多人协作的界面能保持排版一致的原因。

一套字号阶梯是怎么来的

先定一个基准字号,通常是 16px,因为它是浏览器默认值,也是正文一般应有的大小。再定一个比例,向上和向下相乘。

以 16px 为基准、取 1.25(大三度)的比例,大致得到:

12px  ← 16 / 1.25 / 1.067
14px
16px  ← 基准
20px
25px
31px
39px

然后把这些值圆整成好用的数。常用比例从 1.125(克制,适合信息密集的界面)到 1.5(戏剧化,比起应用更适合营销页面)。

为什么要限制字号

没有阶梯,字号就会被一个一个单独挑出来,一个应用里会攒下 13px、14px 和 15px 的文字,而没有人本意要让它们不同。读起来会觉得整体差着一口气,却又指不出具体哪里错了。

阶梯也让垂直节奏变得可控。当字号之间以一个已知比例相关联,行高和间距就能以可预期的方式挂靠上去,而不必逐个组件去调。

光有字号还不够

字号只是排版决定的一部分。一套完整的 Token 会给每一档配上:

  • 行高:标题紧一些,正文松一些。展示级字号 1.2 左右、正文 1.5 左右是合理的默认。
  • 字重:哪些字号上可以用哪些字重
  • 字距:大号展示字通常需要稍微收紧,小字往往需要稍微放开

只把字号 Token 化的体系,把其余三项留给每个组件重新决定一遍,而不一致正是从那里回来的。

语义命名

按角色而不是按尺寸给档位命名,理由和颜色那边是一样的:

--font-size-body: 16px;
--font-size-heading-2: 25px;

--text-lg 描述的是一个尺寸。--font-size-heading-2 描述的是一个决定,改变它的指向不需要把每个标题都找出来。

怎么选字体

常见的搭配是标题用一款有性格的展示字体,正文用一款可读性很强的实用字体。会出问题的做法是选两款相似但不相同的字体,那读起来像是失误而不是决定。要么形成对比,要么就用同一款;不要停在"差不多一样"。

这与 Flash DSM 的关系

生成的体系包含一组字体搭配和一整套阶梯,每一档都带有字号、字重、行高和字距的 Token,并且是按提示词里描述的产品来选的。