Skip to content
Go back

CSS font-size-adjust 属性详解

font-size-adjust 是一个很有用但可能不太常见的 CSS 属性,它的主要作用是在需要回退字体时,维持网页文字的实际显示大小和视觉比例的一致性

简单来说,当您的首选字体不可用而回退到备用字体时,它能防止文字看起来过大或过小,从而保持版面的稳定。

为什么需要 font-size-adjust

不同的字体即使被设置为相同的 font-size 值,它们实际显示出来的视觉大小也可能差异很大。这是因为 font-size 设置的是字体的高度(em-square),但不同字体大写字母的高度与小写字母(尤其是x高度)的比例不同。

当网页使用 font-family: "Arial", "Helvetica", sans-serif; 这样的规则时,如果用户没有安装Arial,浏览器会使用Helvetica。如果两种字体的x高度差异很大,即使字号相同,Helvetica渲染出的文字可能突然变得比Arial显得小很多,从而打乱布局。

font-size-adjust 的工作原理

这个属性允许您设定一个期望的 x高度与字体大小的比率(即 aspect ratio,宽高比)。浏览器在应用回退字体时,会根据这个比率动态调整回退字体的实际显示大小,使其x高度与首选字体保持一致。

计算公式大致为: 回退字体的实际显示大小 = 设定的 font-size * (首选字体的 aspect ratio / 回退字体的 aspect ratio)

语法与用法

/* 使用关键字 */
font-size-adjust: none; /* 默认值,不调整回退字体的大小 */

/* 设置 aspect ratio 值 */
font-size-adjust: 0.5; /* 数字值,表示期望的 x-height / font-size 比率 */

/* 全局值 */
font-size-adjust: inherit;
font-size-adjust: initial;
font-size-adjust: unset;

示例说明

假设您首选一款名为 “优雅体” 的字体,它的x高度与字号比为 0.58。您担心用户没有安装这款字体,回退到普通 sans-serif 字体时(假设其比率为0.52),文字会显得小。

/* 为段落设置字体和调整比率 */
p {
  font-family: "优雅体", sans-serif;
  font-size: 16px;
  font-size-adjust: 0.58; /* 告诉浏览器,尽量保持所有文字的x高度为 16px * 0.58 ≈ 9.28px */
}

效果:

  1. 如果用户有”优雅体”,字体显示为 16px,x高度约为 9.28px
  2. 如果用户没有”优雅体”,回退到 sans-serif,浏览器会自动计算 sans-serif 的x高度比率,并等比放大字号,使其x高度也尽量接近 9.28px,从而在视觉上与首选字体的大小保持一致。

实用技巧

总结


Share this post on:

Previous Post
开箱即用的webUI组件库汇总
Next Post
CSS 设置高度技巧 - calc-size() 和 stretch