CSS 字体模块 第5级

W3C 工作草案,

关于本文档的更多详细信息
本版本:
https://www.w3.org/TR/2026/WD-css-fonts-5-20260303/
最新发布版本:
https://www.w3.org/TR/css-fonts-5/
编辑草案:
https://drafts.csswg.org/css-fonts-5/
以前的版本:
历史:
https://www.w3.org/standards/history/css-fonts-5/
反馈:
CSSWG Issues 仓库
在规范内内联
编辑:
Chris Lilley (W3C)
前编辑:
(Formerly of Apple Inc.)
为本规范建议修改:
GitHub 编辑
增量规范:
测试套件:
https://wpt.fyi/results/css/css-fonts/

摘要

本规范定义了对已有 CSS Fonts 4 规范的修改,同时增加了更多功能。

CSS 是一种用于描述结构化文档(如 HTML 和 XML)如何在屏幕、纸张等媒介上渲染的语言。

本文档状态

本节描述了本文档发布时的状态。 当前 W3C 出版物列表及本技术报告的最新修订版, 可在 W3C 标准与草案索引 中查阅。

本文档由 CSS 工作组 发布, 类型为 工作草案,采用 推荐路线。 作为工作草案发表,并不意味着 W3C 及其成员的认可。

本文档为草稿文件, 可能会随时被更新、替换或废弃为其他文档。 除作为进行中的工作外,引用本文档是不合适的。

欢迎通过 在 GitHub 提交 issue 提出反馈(推荐), 包括规范代码 “css-fonts” 在标题中,如: “[css-fonts] …意见摘要…”。 所有问题和意见均在 归档。 或者也可发送反馈到(已归档)公共邮件列表 www-style@w3.org

本文档受 2025年8月18日 W3C 流程文档 管理。

本文档由一个依照 W3C 专利政策运作的小组生成。 W3C 维护一份 与本组交付物相关的专利公开的公开列表; 该页面也包括披露专利的说明。 已知包含 核心权利要求 的专利, 需依照 W3C 专利政策第6节 披露相关信息。

1. 介绍

CSS Fonts Level 4 规范([CSS-FONTS-4])描述了 CSS 在文档中选择和使用字体方面提供的控制, 包括对可变字体和彩色字体的支持。 此处的想法是对 CSS Fonts Level 4 中定义的属性和 规则的补充或修改。

本规范当前作为对 CSS Fonts Level 4 规范的增量(delta)。 不要假定如果某些内容未出现在此处,则已被删除。

1.1. 值定义

本规范遵循来自 CSS 属性定义约定(来自 [CSS2]), 并使用来自 [CSS-VALUES-3]值定义语法。 本规范中未定义的值类型在 CSS 值与单位([CSS-VALUES-3])中定义。 与其他 CSS 模块的组合可能会扩展这些值类型的定义。

除了在各自定义中列出的特定属性值之外, 本规范中定义的所有属性 也接受作为其属性值的 CSS 通用关键字。 为了可读性,这些关键字未被重复列出。

2. Text-Scale meta 元素

用户代理必须通过将 16px 乘以 文本缩放因子 来计算 medium 的计算值。 用户代理在确定其他 <absolute-size> 关键字的计算大小时也必须应用该因子。 然而,用户代理应对这些其他关键字进行非线性缩放 以保留可读性。

注:对所有关键字应用线性缩放会使大字号变得过大。参见 关于最小和最大关键字体大小的 WCAG 讨论

含有以下 meta 标签且其 name 属性与 "text-scale" 做 ASCII 不区分大小写匹配的文档, 被识别为控制 文本缩放因子

content 属性的值必须与若干被识别的关键字之一做 ASCII 不区分大小写匹配,否则该标签被忽略。

未包含该 meta 标签的文档将假定默认值为 legacy

<meta name="text-scale" content="scale" />

每个文档中不得存在多于一个 meta 元素,其 name 属性值与 ASCII 不区分大小写 匹配的 text-scale

2.1. 关键字

text-scale meta 元素中被识别的关键字为:

legacy
preferred-text-scale 环境变量在移动设备上返回用户操作系统级别的字体因子, 但在桌面设备上返回 1。 文本缩放因子 包含 UA 级别的字体偏好,但忽略操作系统级别的字体偏好。

注: 等价于省略 text-scale meta 标签或包含一个无法识别的 content 属性关键字。

scale
preferred-text-scale 环境变量返回 用户在操作系统中设置的字体偏好。 文本缩放因子 同时包含 UA 级别和操作系统级别的字体偏好。

2.2. legacy” 关键字

text-scale content 属性的值为 legacy 时, 文本缩放因子 为用户仅通过用户代理(user agent)提供的任何设置所选择的字体缩放因子。 preferred-text-scale 环境变量的值在桌面平台上必须为 1。

在移动平台上:

2.3. 当使用 scale 关键字时

text-scale content 属性的值为 scale 时, 文本缩放因子 等于用户偏好的段落文本大小(由操作系统和 UA 偏好组合确定)除以 16px。

preferred-text-scale 环境变量必须返回 文本缩放因子

此外,当 text-scale content 属性的值为 scale 时,用户代理 应跳过其为自动尊重用户偏好而可能实施的所有字体大小干预(例如移动设备上的文本自动调整(参见 CSS Size Adjustment 1 § 1 引言)和全应用缩放(例如 Windows 上的流行浏览器会这样做))。

注: 作者预期在样式表中使用 <meta name="text-scale" content="scale">, 以便 medium 字号能反映用户的字体偏好(无论该偏好是在操作系统层面还是 UA 层面指定)。 作者之后就可以在页面中使用 rem 来尊重用户的字体偏好。

如果作者不更改 :root 的字体大小, 使用 rem 单位尺寸的内容将相对于首选文本缩放
<!DOCTYPE html>
<html> <!-- leave this element’s font-size as the default -->
  <head>
    <meta name="text-scale" content="scale" />
  </head>
  <body>
    <div style="font-size: 1rem;">
      This font size obeys the user’s font preferences, **whether
      those preferences are specified at the operating system level
      or the user agent level**
    </div>
    <div style="font-size: 20px;">
      This font size does NOT respect the user’s font preferences.
      <div style="font-size: 1rem;">
        But this font size does!
      </div>
    </div>
  </body>
</html>

3. 基础字体属性

w3c/csswg-drafts/126[css-fonts] 指定回退字体参数的更改

3.1. 字体家族:font-family 属性

3.1.1. 通用字体家族

除了 CSS Fonts Level 4 中的 CSS Fonts 4 § 2.1.5 通用字体家族 之外,还定义了下列新的通用字体家族。

w3c/csswg-drafts/4910[meta] [css-fonts] 通用字体家族的准则
xxx
xxx 通用字体家族的占位文本。
w3c/csswg-drafts/4566[css-fonts] 我们是否应为附加通用字体启动注册表?

3.2. 字体粗细:font-weight 属性

w3c/csswg-drafts/2690[css-fonts-4] font-weight 中相对权重的百分比

3.3. 字体样式:font-style 属性

w3c/csswg-drafts/4044[css-fonts] 垂直文本与 font-style 和 font-stretch 配合不佳

3.4. 相对缩放:font-size-adjust 属性

Name: font-size-adjust
Value: none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ]
Initial: none
Applies to: 所有元素和文本
Inherited:
Percentages: 不适用
Computed value: 关键字 none,或由一个度量关键字与一个 <number> 组成的对
Canonical order: 按语法
Animation type: 若关键字不同则为离散,否则按计算值类型

对于任意给定字体大小,文本的表观大小和有效可读性会随字体的设计而变化。 例如, 对于区分大小写的双系脚本(如拉丁文或西里尔文), 小写字母相对于大写字母的相对高度 是可读性的决定性因素。 在发生字体回退的情况下, 回退字体的关键排版度量可能与所需字体家族不一致, 因此看起来会是不同的大小, 并且可能不那么易读。

Tests
w3c/csswg-drafts/8792[css-fonts-5] font-size-adjust: ic-height

font-size-adjust 属性提供了一种在发生字体回退时 保持文本可读性和表观大小的方法。 它通过调整被使用的字体大小来实现,使得所指定的度量在所用字体之间保持一致。

各值含义如下:

none
不应用特殊的 font-size 调整。
ex-height | cap-height | ch-width | ic-width | ic-height
指定要规范化的字体度量, 默认为 ex-height
ex-height
规范化字体的 纵横比值, 使用 x-height 除以字体大小。
cap-height
规范化字体的 cap-height, 使用 cap-height 除以字体大小。
ch-width
规范化字体的水平窄间距, 使用“0”(数字零,U+0030)的 advance width 除以字体大小。
ic-width
规范化字体的水平宽间距, 使用“水”(CJK 水表意符,U+6C34)的 advance width 除以字体大小。
ic-height
规范化字体的垂直宽间距, 使用“水”(CJK 水表意符,U+6C34)的 advance height 除以字体大小。
<number [0,∞]>
每个字体的 used 大小被规范化, 使所选择的度量与该 computed font-size 的指定比例相匹配。 换言之, 对于每个字形, 要使用的调整后字体大小 u 计算为:
u  =  ( m / m′ ) s

其中:

s  =  computed 'font-size!!property' value
m  =  metric as specified by the 'font-size-adjust' property
m′ =  metric as specified in the actual font
u  =  adjusted font-size to use

负值为无效。

from-font
计算为对应于 <number> 的指定度量,取自 首个可用字体(若存在)。 否则,与 none 相同。
Tests
下面定义的样式将 Verdana 设为所需字体家族, 但如果 Verdana 不可用则使用 Futura 或 Times。 有一段也指定了 font-size-adjust。
p {
  font-family: Verdana, Futura,
  Times;
}
p.adj {
  font-size-adjust: 0.545;
}

<p>Lorem ipsum dolor sit amet, ...</p>
<p class="adj">Lorem ipsum dolor sit amet, ...</p>

Verdana 的纵横比值相对较高,为 0.545, 意味着小写字母相对于大写字母比较高, 因此在小字号下文本看起来仍然可读。 Times 的纵横比值较低为 0.447, 因此如果发生回退, 文本在小字号下的可读性会比 Verdana 差, 除非也指定了 font-size-adjust。

注:对于使用变音符号的文本, 过大的 x-height 实际上会降低可读性, 因为变音符号会变得拥挤。

下面展示了这些字体各自渲染的对比,列分别显示 Verdana、Futura 和 Times 渲染的文本。 每行中单元格使用相同的 font-size 值,并用红线显示 x-height 的差异。 在上半部分,每行使用相同的 font-size 值。 在下半部分亦然, 但在下半部分 font-size-adjust 也设置为 0.545, 因此实际字体大小被调整以在每行中保持 Verdana 的 x-height。 注意下半部分的小字号在每行中仍相对可读。

使用与不使用 font-size-adjust 的文本

font-size-adjust 的值影响 used 值的 font-size, 但不影响 computed 值。 因此它可以影响基于字体度量的相对单位的大小,如 exch, 但不影响 em 单位的大小。 由于数值形式的 line-height 指的是 computedfont-sizefont-size-adjust 也不会影响 usedline-height 的值。

注:由于 font-size-adjust 不参与 line-height 的计算, 指定过紧的行高可能导致文本行重叠。 例如,当回退字体具有较低的 纵横比值 被规范化以匹配具有较高 纵横比值 的字体时, 其上升部和下降部可能会在 line-height: 1 的情况下延伸出行框。

font-size-adjust 调整适用于所选择的任意字体, 但在典型用法中它通常基于 font-family 列表中第一个(最期望的)字体的相应度量值。 如果该值被准确指定, 则调整公式中的 (m/m′) 项 对于第一种字体将解析为 1 而不会发生调整; 其余字体将被调整以匹配。 如果该值指定不准确, 在不支持 font-size-adjust 的旧用户代理中, 使用字体族列表中第一个字体渲染的文本将显示不同的效果。

作者可以通过比较具有相同内容但不同 font-size-adjust 属性的 span 来计算某个字体的 纵横比值。 如果使用相同的 font-size,当 font-size-adjust 值 对于给定字体是准确的,两个 span 将匹配。

使用带边框的两个 span 来确定字体的 纵横比值。 两个 span 的 font-size 相同, 但 font-size-adjust 仅在右侧 span 中指定。 从 0.5 开始, 可以调整纵横比值直到两个字母周围的边框对齐。

p {
  font-family: Futura;
  font-size: 500px;
}

span {
  border: solid 1px red;
}

.adjust {
  font-size-adjust: 0.5;
}

<p><span>b</span><span class="adjust">b</span></p>
Futura 的 纵横比值 为 0.5

右侧的框比左侧稍大,因此该字体的 纵横比值 小于 0.5。 调整该值直到框对齐。

注:如果在 @font-face 中覆盖了指定的度量,例如通过 size-adjust, 那么在 font-size-adjust 的计算中将使用被覆盖的度量。 因此,同时应用 font-size-adjustsize-adjust 时, 看起来 size-adjust 无效。

4. 字体资源

4.1. @font-face 规则

注: 描述符按每个字体应用而非按每个元素。 单个元素中可以使用多个字体, 例如用于不被 首个可用字体 支持的字符。

4.2. 字体引用:src 描述符

4.2.1. 解析 src 描述符

src 描述符的值必须按照 CSS Syntax 3 § 5.3.11 解析以逗号分隔的组件值列表 来解析。 然后按下列语法解析每个组件值:

<url> [ format(<font-format>)]? [ tech( <font-tech>#)]? | local(<family-name>)
<font-format>= [<string> | collection | embedded-opentype | opentype
 | svg | truetype | woff | woff2 ]
<font-tech>= [<font-features-tech> | <color-font-tech>
  | variations | palettes | incremental ]
<font-features-tech>= [features-opentype | features-aat | features-graphite]
<color-font-tech>= [color-COLRv0 | color-COLRv1 | color-SVG | color-sbix | color-CBDT ]

如果组件值被正确解析且是受支持的 CSS Fonts 4 § 11.2 字体格式CSS Fonts 4 § 11.1 字体技术, 将其加入受支持来源列表。 如果解析组件值时产生解析错误或其 format 或 tech 不被支持, 则不要将其加入受支持来源列表。

如果在此过程结束时没有受支持的条目, 则 src 描述符的值为解析错误。

这些解析规则允许对不支持特定字体技术或字体格式的用户代理进行平滑回退。

例如, 当不支持增量传输时, 提供字体的 woff2 压缩版本, 以获得最佳性能。 然后,对于 incremental transfer, 提供原始未压缩的 OpenType 字体, 其部分内容将按需加载。
@font-face {
  font-family: "MyIncrementallyLoadedWebFont";
  src: url("FallbackURLForBrowsersWhichDontSupportIncrementalLoading.woff2") format("woff2");
  src: url("MyIncrementallyLoadedWebFont.otf") format(opentype)  tech(incremental);
}

4.3. 字体属性描述符:font-size

w3c/csswg-drafts/806[css-fonts-5] 为 @font-face 添加允许范围的 font-size 描述符(用于光学字号)
w3c/csswg-drafts/731[css-fonts] 用于 ex 单位的 font-size 描述符
Name: font-size
For: @font-face
Value: auto | [<number>]{1,2}
Initial: auto
auto
该字体匹配任意字体大小
<number>
如果只给出单个 <number>, 则字体只匹配该特定字体大小。 如果给出两个 <number>, 则它们指定一个字体大小范围,该范围内的字体将匹配。

4.4. 字形尺寸乘数: size-adjust 描述符

Name: size-adjust
For: @font-face
Value: <percentage [0,∞]>
Initial: 100%

size-adjust 描述符定义了一个用于该字体的字形轮廓和度量的乘数, 以允许作者在以相同 font-size 渲染时协调不同字体的设计。

与该字体相关的所有度量——包括字形 advance、基线表,以及由 @font-face 描述符提供的覆盖——以及渲染的字形图像, 都按所给百分比缩放。 因此,任何来自该字体并由字体度量导出的值 (例如 exch 单位, 或 text-decoration-thicknessfrom-font 值) 在从该字体获取时也会受到影响。 然而,computedfont-size (从而任何由其派生的值,例如 em 单位、text-underline-offset 中的百分比等) 保持不变。

注: size-adjust 描述符的功能类似于 font-size-adjust 属性, 后者实质上通过匹配 ex 高度来为每个字体计算调整,但同样不会影响 computedfont-size

Tests

4.5. 行高字体度量覆盖: ascent-overridedescent-overrideline-gap-override 描述符

Name: ascent-override
For: @font-face
Value: [ normal | <percentage [0,∞]> ]{1,2}
Initial: normal
Name: descent-override
For: @font-face
Value: [ normal | <percentage [0,∞]> ]{1,2}
Initial: normal
Name: line-gap-override
For: @font-face
Value: [ normal | <percentage [0,∞]> ]{1,2}
Initial: normal

ascent-overridedescent-overrideline-gap-override 描述符分别指定字体的 上行度量(ascent metric)下行度量(descent metric)行间距度量(line gap metric)。 第一个值为 x 轴的值, 第二个值为 y 轴的值 (若省略则默认为 normal)。

normal
相应的度量值按通常方式从字体中获取, 就好像此描述符不存在于 @font-face 块中一样。

注: 由于某些字体格式中此类度量可能有多个来源, 这可能导致不同用户代理/平台之间的文本布局不一致。

<percentage>
相应的度量被替换为给定百分比乘以调整后的有效字体大小。
Tests

font-size-adjust 属性在 size-adjust 描述符之后应用。

注:font-size-adjustsize-adjust 之后应用的结果是 size-adjust 看起来没有效果。

注: 这些描述符都不影响 font-sizeline-heightfont-relative lengths 的计算(computation)。 然而,它们可以影响 line-height: normal 的行为, 以及更一般地影响内联级(inline-level)内容的基线对齐。

注: 由于这些度量仅适用于 block axis, y 轴的值仅在垂直排版的 typesetting upright 情况下使用(即垂直排版的排印模式中)。

该百分比相对于不同元素的不同字体大小进行解析。
@font-face {
  font-family: overridden-font;
  ascent-override: 50%;
  ...
}

<span style="font-family: overridden-font; font-size: 20px;">
  Outer span content
  <span style="font-size: 150%;">Inner span content</span>
</span>

外层 span 使用的 ascent 值为 10px,而内层 span 使用的是 15px。

我们可以覆盖本地回退字体的度量以匹配主字体(即 web 字体)。这能在从回退字体切换到主字体时减少布局位移。
@font-face {
  font-family: cool-web-font;
  src: url("https://example.com/font.woff");
}

@font-face {
  font-family: fallback-to-local;
  src: local(Some Local Font);
  /* Override metric values to match cool-web-font */
  ascent-override: 125%;
  descent-override: 25%;
  line-gap-override: 0%;
  size-adjust: 96%;
}

<div style="font-family: cool-web-font, fallback-to-local">Title goes here</div>
<img src="https://example.com/largeimage" alt="A large image that you don’t want to shift">

当用户代理加载完成并切换为使用 web 字体时(假设覆盖值与 web 字体的自然度量相似),图像的位移将不会那么明显。

4.6. 上标和下标度量覆盖: superscript-position-override, subscript-position-override,superscript-size-overridesubscript-size-override 描述符

Name: superscript-position-override
For: @font-face
Value: [ normal | from-font | <percentage> ]{1,2}
Initial: normal
Name: subscript-position-override
For: @font-face
Value: [ normal | from-font | <percentage> ]{1,2}
Initial: normal
Name: superscript-size-override
For: @font-face
Value: [ normal | from-font | <percentage [0,∞]> ]{1,2}
Initial: normal
Name: subscript-size-override
For: @font-face
Value: [ normal | from-font | <percentage [0,∞]> ]{1,2}
Initial: normal

superscript-position-override, subscript-position-override, superscript-size-overridesubscript-size-override 描述符分别指定字体的上标偏移、下标偏移、上标大小和下标大小度量, 这些度量用于在 font-variant-position 需要时合成字形。 第一个值为 x 轴的值, 第二个值为 y 轴的值 (若省略则默认为第一个值)。

normal
用户代理决定使用哪个度量值, 无论是从字体获取还是通过某种启发式确定。
from-font
使用字体数据中相应的度量(如果存在)。 (若该度量缺失,则与 normal 相同。)
<percentage>
相应的度量被替换为给定百分比乘以 used 字体大小。

注: 由于这些度量仅适用于 块轴, y 轴的值仅在 直立排印垂直排印模式 中使用。

5. 字体特性属性

5.1. 字体语言重写:font-language-override 属性

w3c/csswg-drafts/5484[css-fonts-5] 删除 font-language-override

6. 字体特性和变体解析

w3c/csswg-drafts/5635[CSS-Fonts] 需要一种方法来插值可变字体设置

7. 字体变体属性

7.1. 光学字号控制:font-optical-sizing 属性

w3c/csswg-drafts/5466[css-text][css-fonts] 行的光学边界

8. 字体技术与格式

8.1. 字体技术(Font tech)

本节扩展了 CSS Fonts 4 § 11.1 字体技术(Font tech) 的内容。

avar2 技术指对 OpenType 轴变体版本 2 的支持 [avar2], 用于更灵活的变体轴重映射。

例如,只有在支持变体轴重映射时才会加载使用该特性的字体:
@font-face {
  font-family: 'Roboto Flex';
  src: url('RobotoFlex-VF-avar2.woff2') format(woff2) tech(variations, avar2);
  src: url('RobotoFlex-VF.woff2') format(woff2) tech(variations);
  font-weight: 100 1000;
  font-stretch: 25% 151%;
}

9. 对象模型

本节扩展了 CSS Fonts 4 § 12. 对象模型 的内容。

@font-face@font-feature-values 规则的内容 可以通过对 CSS 对象模型的下列扩展来访问。

测试

9.1. CSSFontFaceRule 接口

CSSFontFaceRule 接口表示一个 <@font-face> 规则。

[Exposed=Window]
interface CSSFontFaceDescriptors : CSSStyleDeclaration {
  attribute [LegacyNullToEmptyString] CSSOMString src;
  attribute [LegacyNullToEmptyString] CSSOMString fontFamily;
  attribute [LegacyNullToEmptyString] CSSOMString font-family;
  attribute [LegacyNullToEmptyString] CSSOMString fontStyle;
  attribute [LegacyNullToEmptyString] CSSOMString font-style;
  attribute [LegacyNullToEmptyString] CSSOMString fontWeight;
  attribute [LegacyNullToEmptyString] CSSOMString font-weight;
  attribute [LegacyNullToEmptyString] CSSOMString fontStretch;
  attribute [LegacyNullToEmptyString] CSSOMString font-stretch;
  attribute [LegacyNullToEmptyString] CSSOMString fontWidth;
  attribute [LegacyNullToEmptyString] CSSOMString font-width;
  attribute [LegacyNullToEmptyString] CSSOMString fontSize;
  attribute [LegacyNullToEmptyString] CSSOMString font-size;
  attribute [LegacyNullToEmptyString] CSSOMString sizeAdjust;
  attribute [LegacyNullToEmptyString] CSSOMString size-adjust;
  attribute [LegacyNullToEmptyString] CSSOMString unicodeRange;
  attribute [LegacyNullToEmptyString] CSSOMString unicode-range;
  attribute [LegacyNullToEmptyString] CSSOMString fontFeatureSettings;
  attribute [LegacyNullToEmptyString] CSSOMString font-feature-settings;
  attribute [LegacyNullToEmptyString] CSSOMString fontVariationSettings;
  attribute [LegacyNullToEmptyString] CSSOMString font-variation-settings;
  attribute [LegacyNullToEmptyString] CSSOMString fontNamedInstance;
  attribute [LegacyNullToEmptyString] CSSOMString font-named-instance;
  attribute [LegacyNullToEmptyString] CSSOMString fontDisplay;
  attribute [LegacyNullToEmptyString] CSSOMString font-display;
  attribute [LegacyNullToEmptyString] CSSOMString fontLanguageOverride;
  attribute [LegacyNullToEmptyString] CSSOMString font-language-override;
  attribute [LegacyNullToEmptyString] CSSOMString ascentOverride;
  attribute [LegacyNullToEmptyString] CSSOMString ascent-override;
  attribute [LegacyNullToEmptyString] CSSOMString descentOverride;
  attribute [LegacyNullToEmptyString] CSSOMString descent-override;
  attribute [LegacyNullToEmptyString] CSSOMString lineGapOverride;
  attribute [LegacyNullToEmptyString] CSSOMString line-gap-override;
  attribute [LegacyNullToEmptyString] CSSOMString superscriptPositionOverride;
  attribute [LegacyNullToEmptyString] CSSOMString superscript-position-override;
  attribute [LegacyNullToEmptyString] CSSOMString subscriptPositionOverride;
  attribute [LegacyNullToEmptyString] CSSOMString subscript-position-override;
  attribute [LegacyNullToEmptyString] CSSOMString superscriptSizeOverride;
  attribute [LegacyNullToEmptyString] CSSOMString superscript-size-override;
  attribute [LegacyNullToEmptyString] CSSOMString subscriptSizeOverride;
  attribute [LegacyNullToEmptyString] CSSOMString subscript-size-override;
};

[Exposed=Window]
interface CSSFontFaceRule : CSSRule {
  [SameObject, PutForwards=cssText] readonly attribute CSSFontFaceDescriptors style;
};

10. 安全性注意事项

在本规范中未报告新的安全性注意事项。

11. 隐私注意事项

在本规范中未报告新的隐私注意事项。

12. 致谢

首先,编辑们要感谢所有对本模块先前版本作出贡献的人,见 以前级别的贡献者名单

其次,我们要感谢以下人士对第 5 级改进所做的贡献: Dave Crossland(Google), Bernhard Fey(RealObjects), Xiaocheng Hu(Google), Jonathan Kew(Mozilla), 以及 Laurence Penney。

13. 修订记录

13.1. 2024 年 2 月 6 日 工作草案 以来的变化

13.2. 2021 年 12 月 21 日 工作草案 以来的变化

13.3. 2021-07-29 工作草案 以来的变化

13.4. 2021-06-29 候选发布草案 以来的变化

符合性说明

文档约定

符合性要求以描述性断言与 RFC 2119 术语的组合来表达。规范性部分中的关键词 “MUST”、 “MUST NOT”、“REQUIRED”、“SHALL”、“SHALL NOT”、“SHOULD”、“SHOULD NOT”、 “RECOMMENDED”、“MAY” 和 “OPTIONAL” 应按 RFC 2119 中的描述来解释。 然而,为了可读性,这些词在本规范中未全部大写呈现。

除非明确标注为非规范性、示例或注释,否则本规范的全部文本均为规范性内容。[RFC2119]

本规范中的示例以“for example”引入,或通过 class="example" 与规范性文本区分开,例如:

这是一个说明性示例。

说明性注释以单词 “Note” 开头,并用 class="note" 与规范性文本区分,例如:

注:这是一个说明性注释。

劝告性内容是要求特别注意的规范性段落,使用 <strong class="advisement"> 与其它规范性文本区分,例如:

用户代理必须提供可访问的替代方案。
测试

与本规范内容相关的测试可以用类似这样的 “Tests” 块记录。任何此类块均为非规范性。


符合性类别

本规范的符合性定义为三类:

样式表
一份 CSS 样式表
渲染器
一个解释样式表语义并呈现使用它们的文档的 用户代理
创作工具
一个能够生成样式表的 用户代理

如果样式表中使用了本模块定义的语法的所有语句在通用 CSS 语法和该模块各项特性的语法下均为有效,则该样式表符合本规范。

若渲染器在按适当规范解释样式表之外,还通过正确解析并呈现文档来支持本规范定义的所有特性,则该渲染器符合本规范。然而,如果用户代理由于设备限制而无法正确渲染文档,并不意味着该 UA 不符合规范。(例如,UA 不必在单色显示器上呈现颜色。)

若创作工具生成的样式表在通用 CSS 语法和本模块各特性的语法下均为语法正确,且满足本模块对样式表的所有其他符合性要求,则该创作工具符合本规范。

部分实现

为了让作者能够利用向前兼容的解析规则来指定回退值,CSS 渲染器必须将任何其不具备可用支持级别的 at-rule、属性、属性值、关键字和其它语法结构视为无效(并在适当时忽略)。特别地,用户代理不得在单个多值属性声明中选择性地忽略不支持的组件值而保留并遵循支持的值:如果任何值被视为无效(正如不支持的值必须如此处理),CSS 要求整个声明被忽略。

不稳定和专有特性的实现

为避免与未来稳定的 CSS 特性发生冲突,CSS 工作组建议在实现不稳定特性和CSS 专有扩展时遵循最佳实践。

非实验性实现

一旦规范进入候选推荐阶段,非实验性实现成为可能,实施者应在证明某一 CR 级别特性已被正确实现后发布无前缀实现。

为建立并维护各实现间的互操作性,CSS 工作组请求非实验性 CSS 渲染器在发布任何可证明符合规范的 CR 级别特性的无前缀实现之前,向 W3C 提交实现报告(如有必要,还包括用于该实现报告的测试用例)。提交给 W3C 的测试用例将接受 CSS 工作组的审核和修正。

有关提交测试用例和实现报告的更多信息,请参见 CSS 工作组网站: https://www.w3.org/Style/CSS/Test/。 问题请发送至 public-css-testsuite@w3.org 邮件列表。

索引

本规范定义的术语

由参考资料定义的术语

参考文献

规范性引用

[AVAR2]
avar — Axis Variations Table Version 2. 2022. URL: https://github.com/harfbuzz/boring-expansion-spec/blob/main/avar2.md
[CSS-CASCADE-5]
Elika Etemad; Miriam Suzanne; Tab Atkins Jr.. CSS Cascading and Inheritance Level 5. 13 January 2022. CR. URL: https://www.w3.org/TR/css-cascade-5/
[CSS-ENV-1]
CSS Environment Variables Module Level 1. 23 September 2025. FPWD. URL: https://www.w3.org/TR/css-env-1/
[CSS-FONTS-4]
Chris Lilley. CSS Fonts Module Level 4. 1 February 2024. WD. URL: https://www.w3.org/TR/css-fonts-4/
[CSS-INLINE-3]
Elika Etemad. CSS Inline Layout Module Level 3. 18 December 2024. WD. URL: https://www.w3.org/TR/css-inline-3/
[CSS-SIZE-ADJUST-1]
CSS Mobile Text Size Adjustment Module Level 1. Editor's Draft. URL: https://drafts.csswg.org/css-size-adjust-1/
[CSS-SYNTAX-3]
Tab Atkins Jr.; Simon Sapin. CSS Syntax Module Level 3. 24 December 2021. CRD. URL: https://www.w3.org/TR/css-syntax-3/
[CSS-TEXT-DECOR-4]
Elika Etemad; Koji Ishii. CSS Text Decoration Module Level 4. 4 May 2022. WD. URL: https://www.w3.org/TR/css-text-decor-4/
[CSS-TRANSFORMS-2]
Tab Atkins Jr.; et al. CSS Transforms Module Level 2. 9 November 2021. WD. URL: https://www.w3.org/TR/css-transforms-2/
[CSS-VALUES-3]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 3. 22 March 2024. CRD. URL: https://www.w3.org/TR/css-values-3/
[CSS-VALUES-4]
Tab Atkins Jr.; Elika Etemad. CSS Values and Units Module Level 4. 12 March 2024. WD. URL: https://www.w3.org/TR/css-values-4/
[CSS2]
Bert Bos; et al. Cascading Style Sheets Level 2 Revision 1 (CSS 2.1) Specification. 7 June 2011. REC. URL: https://www.w3.org/TR/CSS2/
[CSSOM-1]
Daniel Glazman; Emilio Cobos Álvarez. CSS Object Model (CSSOM). 26 August 2021. WD. URL: https://www.w3.org/TR/cssom-1/
[HTML]
Anne van Kesteren; et al. HTML Standard. Living Standard. URL: https://html.spec.whatwg.org/multipage/
[INFRA]
Anne van Kesteren; Domenic Denicola. Infra Standard. Living Standard. URL: https://infra.spec.whatwg.org/
[RFC2119]
S. Bradner. Key words for use in RFCs to Indicate Requirement Levels. March 1997. Best Current Practice. URL: https://datatracker.ietf.org/doc/html/rfc2119
[WEBIDL]
Edgar Chen; Timothy Gu. Web IDL Standard. Living Standard. URL: https://webidl.spec.whatwg.org/

参考性引用

[CSS-DISPLAY-4]
Elika Etemad; Tab Atkins Jr.. CSS Display Module Level 4. 6 November 2025. WD. URL: https://www.w3.org/TR/css-display-4/
[CSS-WRITING-MODES-4]
Elika Etemad; Koji Ishii. CSS Writing Modes Level 4. 30 July 2019. CR. URL: https://www.w3.org/TR/css-writing-modes-4/
[SELECTORS-4]
Elika Etemad; Tab Atkins Jr.. Selectors Level 4. 22 January 2026. WD. URL: https://www.w3.org/TR/selectors-4/

属性索引

名称 取值 初始值 适用于 是否继承 百分比 动­画类型 规范顺序 计算值
font-size-adjust none | [ ex-height | cap-height | ch-width | ic-width | ic-height ]? [ from-font | <number [0,∞]> ] none 所有元素和文本 不适用 离散若关键字不同,否则按计算值类型 按语法 关键字 none,或由一个度量关键字和一个 <number> 组成的对

@font-face 描述符

名称 取值 初始值
ascent-override [ normal | <percentage [0,∞]> ]{1,2} normal
descent-override [ normal | <percentage [0,∞]> ]{1,2} normal
font-size auto | [<number>]{1,2} auto
line-gap-override [ normal | <percentage [0,∞]> ]{1,2} normal
size-adjust <percentage [0,∞]> 100%
subscript-position-override [ normal | from-font | <percentage> ]{1,2} normal
subscript-size-override [ normal | from-font | <percentage [0,∞]> ]{1,2} normal
superscript-position-override [ normal | from-font | <percentage> ]{1,2} normal
superscript-size-override [ normal | from-font | <percentage [0,∞]> ]{1,2} normal

IDL 索引

[Exposed=Window]
interface CSSFontFaceDescriptors : CSSStyleDeclaration {
  attribute [LegacyNullToEmptyString] CSSOMString src;
  attribute [LegacyNullToEmptyString] CSSOMString fontFamily;
  attribute [LegacyNullToEmptyString] CSSOMString font-family;
  attribute [LegacyNullToEmptyString] CSSOMString fontStyle;
  attribute [LegacyNullToEmptyString] CSSOMString font-style;
  attribute [LegacyNullToEmptyString] CSSOMString fontWeight;
  attribute [LegacyNullToEmptyString] CSSOMString font-weight;
  attribute [LegacyNullToEmptyString] CSSOMString fontStretch;
  attribute [LegacyNullToEmptyString] CSSOMString font-stretch;
  attribute [LegacyNullToEmptyString] CSSOMString fontWidth;
  attribute [LegacyNullToEmptyString] CSSOMString font-width;
  attribute [LegacyNullToEmptyString] CSSOMString fontSize;
  attribute [LegacyNullToEmptyString] CSSOMString font-size;
  attribute [LegacyNullToEmptyString] CSSOMString sizeAdjust;
  attribute [LegacyNullToEmptyString] CSSOMString size-adjust;
  attribute [LegacyNullToEmptyString] CSSOMString unicodeRange;
  attribute [LegacyNullToEmptyString] CSSOMString unicode-range;
  attribute [LegacyNullToEmptyString] CSSOMString fontFeatureSettings;
  attribute [LegacyNullToEmptyString] CSSOMString font-feature-settings;
  attribute [LegacyNullToEmptyString] CSSOMString fontVariationSettings;
  attribute [LegacyNullToEmptyString] CSSOMString font-variation-settings;
  attribute [LegacyNullToEmptyString] CSSOMString fontNamedInstance;
  attribute [LegacyNullToEmptyString] CSSOMString font-named-instance;
  attribute [LegacyNullToEmptyString] CSSOMString fontDisplay;
  attribute [LegacyNullToEmptyString] CSSOMString font-display;
  attribute [LegacyNullToEmptyString] CSSOMString fontLanguageOverride;
  attribute [LegacyNullToEmptyString] CSSOMString font-language-override;
  attribute [LegacyNullToEmptyString] CSSOMString ascentOverride;
  attribute [LegacyNullToEmptyString] CSSOMString ascent-override;
  attribute [LegacyNullToEmptyString] CSSOMString descentOverride;
  attribute [LegacyNullToEmptyString] CSSOMString descent-override;
  attribute [LegacyNullToEmptyString] CSSOMString lineGapOverride;
  attribute [LegacyNullToEmptyString] CSSOMString line-gap-override;
  attribute [LegacyNullToEmptyString] CSSOMString superscriptPositionOverride;
  attribute [LegacyNullToEmptyString] CSSOMString superscript-position-override;
  attribute [LegacyNullToEmptyString] CSSOMString subscriptPositionOverride;
  attribute [LegacyNullToEmptyString] CSSOMString subscript-position-override;
  attribute [LegacyNullToEmptyString] CSSOMString superscriptSizeOverride;
  attribute [LegacyNullToEmptyString] CSSOMString superscript-size-override;
  attribute [LegacyNullToEmptyString] CSSOMString subscriptSizeOverride;
  attribute [LegacyNullToEmptyString] CSSOMString subscript-size-override;
};

[Exposed=Window]
interface CSSFontFaceRule : CSSRule {
  [SameObject, PutForwards=cssText] readonly attribute CSSFontFaceDescriptors style;
};

问题索引

w3c/csswg-drafts/126[css-fonts] 指定回退字体参数的更改
w3c/csswg-drafts/4910[meta] [css-fonts] 通用字体家族的准则
w3c/csswg-drafts/4566[css-fonts] 我们是否应为附加通用字体启动注册表?
w3c/csswg-drafts/2690[css-fonts-4] font-weight 中相对权重的百分比
w3c/csswg-drafts/4044[css-fonts] 垂直文本与 font-style 和 font-stretch 配合不佳
w3c/csswg-drafts/8792[css-fonts-5] font-size-adjust: ic-height
w3c/csswg-drafts/6384[css-fonts-5] font-size-adjust 在缺失度量时的行为
w3c/csswg-drafts/806[css-fonts-5] 为 @font-face 添加允许范围的 font-size 描述符 (for optical sizing)
w3c/csswg-drafts/731[css-fonts] 用于 ex 单位的 font-size 描述符
w3c/csswg-drafts/5484[css-fonts-5] 删除 font-language-override
w3c/csswg-drafts/5635[CSS-Fonts] 需要一种方法来插值可变字体设置
w3c/csswg-drafts/5466[css-text][css-fonts] 行的光学边界