本页面借助 AI 辅助翻译。英文原文为权威版本。
2005 年的原始建议直截了当:连续文本要用直立的罗马正体,因为倾斜的字形对低视力读者更难辨认。二十年的屏幕渲染进步、更高分辨率的显示器和更完善的研究细化了这条建议,却没有推翻它。直立字体依然是正文的正确默认。改变的是我们对为什么的理解,以及当倾斜字体确有用处时该怎么做。
倾斜并非一件事。真斜体是一种独立的设计——常有不同的字母结构(单层的 a 和 g、连笔式的起笔与收笔、更窄的比例)。倾斜体(oblique)是把直立设计以机械或光学方式倾斜。而合成倾斜是软件在没有斜体字库时的伪造:浏览器把罗马正体的字形横向剪切。这三种情况的易读性表现截然不同,而 2005 年的文本把它们当成了一回事。
自 2005 年以来的变化
第一版建议完全避免斜体,用粗体替代强调。对于渲染带微调位图的 96 DPI 屏幕,这是合理的建议——倾斜的笔画锯齿化成阶梯,字形真的会散架。在具备次像素与灰度抗锯齿的现代高密度显示器上,绘制精良的斜体渲染清晰,针对简短片段的一刀切禁令已不再成立。
当前的共识——见于服务低视力读者的机构所发布的指导——是按比例行事:连续文本避免斜体——段落、长图注、长引文——但接受其传统的语义角色:对词或短语的强调、作品标题、外来语。问题从来不在几个倾斜的词,而在满页都是。
另一大变化是可变字体。OpenType 可变技术自 2018 年前后起获得所有主流浏览器支持,引入了两个与此相关的注册轴:slnt(倾斜),通常以负角度表示的连续角度;以及 ital(斜体),通常是罗马正体与真斜体结构之间的二元开关。CSS 通过 font-style 属性暴露它们——font-style: italic 应选中 ital 轴或斜体字库文件,而 font-style: oblique 8deg 可以在支持的字体上请求特定的倾角。这给了设计师在 2005 年根本不存在的精确、有意图的控制。
真斜体、倾斜体与合成倾斜
易读性的高下次序是一致的。真斜体是按斜体绘制的:笔画为倾角做了平衡,字腔保持开放,间距经过调校。由字体设计师设计的倾斜体(常见于怪诞体无衬线)低一档,但仍经过有意修正——曲线被重新绘制,在剪切之下不会变形。合成倾斜是最坏情形:简单粗暴的剪切让每条曲线一侧变细、字腔闭合、间距紊乱。这个结果从未经过任何设计师之眼。
实践规则:绝不依赖伪斜体。如果你交付的字体没有斜体,要么加载一款,要么干脆不用斜体样式。在 CSS 中,font-synthesis: none(或 font-synthesis-style: none)会禁用浏览器伪造的倾斜,让缺失的斜体退化为直立,而不是变形的剪切。审计你的字体加载——数量惊人的线上站点请求了从未真正加载的斜体样式,而那些片段全都渲染成了合成倾斜。
低视力考量
2005 年的核心观察对视敏度下降、中心视野缺损或白内障相关模糊的读者依然成立:倾斜的字形呈现出更陌生的形状、看起来更紧的间距,以及——在带连笔风味的斜体中——与读者练熟的罗马正体不同的字母结构。WCAG 并不禁止斜体,但与低视力用户需求相关的指导一致建议限制使用,放大文本的读者也反馈,在模糊之下斜体比直立体劣化得更快。
粗体依然是有力的强调替代方案,当被强调的内容在功能上重要时——警告、关键术语、可操作的短语——它往往是更好的选择,因为字重变化比倾斜变化更能挺过模糊与低对比。但粗体与斜体在语义上不可互换。斜体低语,粗体高喊。用粗体做所有强调的页面,读起来像通篇都在喊叫。合理的模式是:粗体留给读者绝不能错过的信息,斜体承担常规的排版强调,且两者都不超过一个短语的长度。
再加两条告诫。其一,小字号避免使用斜体——低于约 14 像素时,倾角加上缩小的字腔会迅速叠加恶化。其二,避免把斜体与其他削弱易读性的手法叠加:斜体加全大写、斜体加轻字重、斜体加低对比。单独一种劣化尚可承受;叠加起来就不行了。
可变轴的实践
当可变字体提供 slnt 轴时,请抵制在正文中把中间角度当装饰使用的诱惑。标题上 4 度的轻微倾斜是正当的风格手段;正文用任意倾角则不是。如果你为倾斜做动画(有些界面会,用于悬停状态或强调过渡),请尊重 prefers-reduced-motion——字形的形变就是运动,前庭敏感的读者正是这样体验它的。
也请检查你的可变字体的斜体行为与你的 CSS 是否一致。有些字族只带 slnt 轴,font-style: italic 会毫无效果或选中错误的实例;显式的 font-variation-settings,或在正确的 font-face 声明中写明 font-style: oblique 0deg 10deg 范围,可以消解这种歧义。
CSS 实现
em, cite { font-style: italic; } /* short spans only */
/* Never let the browser fake an italic the family lacks */
body { font-synthesis-style: none; }
/* Variable slant, when the family offers the axis */
.aside { font-variation-settings: "slnt" -6; }
建议
- 所有连续文本一律直立排印;2005 年的结论依然成立。
- 允许真斜体用于简短的强调片段、作品标题和外来语——一个短语,而不是一个段落。
- 当被强调的内容在功能上关键时,优先用粗体而非斜体。
- 绝不交付合成倾斜:加载真正的斜体文件,或设置 font-synthesis-style: none。
- 优先选择斜体经过修正设计、而非生硬剪切的字体。
- 约 14px 以下避免斜体,且绝不把斜体与全大写、轻字重或低对比叠加。
- 使用可变字体时,语义上的斜体用 ital 轴或真正的斜体实例;把 slnt 轴当作展示手段,若为其做动画则尊重 prefers-reduced-motion。