本页面借助 AI 辅助翻译。英文原文为权威版本。
字距——在 CSS 术语中即 letter-spacing——是对一段文本中所有字符间距的统一调整,有别于字偶距(kerning),后者调整的是单个字符对。本章 2005 年的版本建议为屏幕上的文本块适度增加字母间距,理由是粗糙的像素渲染让字形显得拥挤,多一点空气有帮助。那条建议是其渲染环境的产物,如今已不再作为普遍规则成立。更新后的立场更有条件性:字距是一个随字号而变的工具,在字号标尺的两端有帮助,而在正文所在的中段通常有害。
2005 年以来的变化
三件事推翻了原来的建议。第一,渲染改善了。2005 年,屏幕字体按粗糙网格做 hinting,字母间距只能按整像素增减——原文明确指出了这一限制。次像素定位、高密度显示器和 CSS 的小数值(letter-spacing: 0.01em 完全合法)同时消除了拥挤问题和整数限制。为屏幕设计的正文字体如今以其预期间距呈现,设计师为其"松绑"的理由已基本蒸发。
第二,研究图景成熟了——也变得不那么整齐。2010 年代初,针对阅读障碍读者增加字母间距的研究曾广受关注,一些研究报告儿童的阅读速度和准确率有实质提升。但后续研究结果不一:效果随读者、字体、语言以及字母间距与词距的相互作用而变化。对低视力读者,证据同样模棱两可——额外的间距可以减轻拥挤效应(边缘视野和低敏度视觉中真实存在的知觉现象),但它也拉长了行、推开了词,这本身就有代价。2026 年的诚实总结是:增加间距在某些条件下帮助某些读者,不存在一个让所有人受益的普适设置。这不支持把一个折中值固化进样式表,而支持确保读者能够应用自己的设置。
第三,这正是 WCAG 所形式化的内容。成功标准 1.4.12 文本间距(WCAG 2.1 与 2.2 中的 AA 级)要求内容能容忍用户施加的 0.12 倍字号的字母间距——连同 0.16em 的词距和 1.5 的行高——而不损失内容或功能。设计师的义务不是选出完美的字距,而是构建当读者选择自己的字距时依然成立的布局。
字距随字号而变
本章最经久的原则是:合适的字距与字号成反比。字体设计师为目标字号区间调校间距;当你把文字排在该区间之外很远时,间距就需要修正。
在小字号下——图注、脚注、数据标签、界面微文案——即便度量上正确,字形在知觉上也会拥挤,小幅的正向字距(约百分之一到百分之二 em)确实能改善易读性。全大写和小型大写的排布是最有力的例子:大写字母是为引领小写单词而设计的,不是为了彼此相邻;纯大写标签几乎总是受益于加宽的字距,常常是 0.05 到 0.1 em。
在正文字号下,默认间距是设计师的意图,偏离通常是损失。正向字距削弱词形——读者用于快速识别单词的"bouma"轮廓——并稀释字母间距与词间距之间标示词界的对比。正文字号下的负向字距更糟,它重新引入了对低视力读者伤害最大的拥挤。
在展示字号下,修正方向反转:大标题在默认间距下往往显得松散,因为度量是为较小字号调校的,轻微的负向字距能把它收紧。这是一种精修,不是要求,而且绝不能应用于用户可能放大到正文阅读用途的文字。
可变字体对阵机械字距
机械字距——在为另一种节奏绘制的字形之间插入均匀空隙——永远是一种妥协。可变字体提供了更好的东西。带光学字号轴的字体会随字号改变实际的字形绘制:较小的光学字号带有更宽的间距、更结实的笔画和更大的x字高,而展示字号则收紧、精修。当该轴存在时,浏览器通过 font-optical-sizing: auto 自动应用。凡是可变字体提供光学字号(或更罕见的专用字级或间距轴)之处,都应优先使用它而非手动 letter-spacing:设计师已经整体地解决了逐字号的间距问题,而不是靠均匀填充。机械字距仍是静态字体的后备手段,也适用于全大写标签这类没有轴可对应的惯例。
实务注意事项
始终以 em 为单位指定 letter-spacing,使其随字号缩放;一个在 16px 下不起眼的像素值,在用户缩放或放大文字时会变得破坏性十足。记住,附加的字距实际上会覆盖字偶距对——这是保持数值小的又一理由。并在 1.4.12 的覆盖值下测试每个组件:固定宽度容器中加宽字距的导航标签,是读者自行添加 0.12em 时文字被裁切或灾难性换行的常见位置。
CSS 实践
p { letter-spacing: normal; } /* body text: hands off */
.caps-label { letter-spacing: 0.08em; } /* open short caps runs */
/* Must survive the WCAG 1.4.12 user override without breaking:
letter-spacing: 0.12em applied to all text */
建议
- 不要为正文加字距;字体的默认间距就是正确的默认值。
- 为极小的文字添加适度的正向字距(约 0.01–0.02em),为全大写或小型大写标签添加更多(约 0.05–0.1em)。
- 只在大的展示字号下施加轻微的负向字距,且只在检查过用户放大后的效果之后。
- 优先选择带光学字号轴的可变字体而非机械字距;启用 font-optical-sizing。
- 所有 letter-spacing 一律用 em 单位,绝不用像素。
- 验证当用户应用 WCAG 1.4.12 间距覆盖时,没有裁切、重叠或功能丢失。
- 把间距个性化当作读者的特权:构建容忍度,而不是单一的"无障碍"字距值。