@font-feature-values

Baseline 已广泛支持

此功能已成熟,并可在许多设备和浏览器版本上运行。自 2023 年 3 月以来,它已在各种浏览器中可用。

@font-feature-values 是一个 CSS @规则,它允许你在 font-variant-alternates 属性中使用一个通用名称来表示 OpenType 中以不同方式激活的特性。当使用多种字体时,这有助于简化 CSS。

@font-feature-values @规则可以用于 CSS 的顶层,也可以用于任何 CSS 条件组 @规则内部。

语法

css
@font-feature-values Font Name {
  font-display: swap;
  @styleset {
    nice-style: 12;
  }
  @swash {
    fancy: 2;
  }
}

每个 @font-feature-values 块可以包含一个特性值块列表(如下所示),以及 font-display 描述符。

特性值块

@swash

指定一个特性名称,该名称将与 font-variant-alternatesswash() 函数符号一起使用。一个 swash 特性值定义只允许一个值:ident1: 2 是有效的,但 ident2: 2 4 无效。

@annotation

指定一个特性名称,该名称将与 font-variant-alternatesannotation() 函数符号一起使用。一个 annotation 特性值定义只允许一个值:ident1: 2 是有效的,但 ident2: 2 4 无效。

@ornaments

指定一个特性名称,该名称将与 font-variant-alternatesornaments() 函数符号一起使用。一个 ornaments 特性值定义只允许一个值:ident1: 2 是有效的,但 ident2: 2 4 无效。

@stylistic

指定一个特性名称,该名称将与 font-variant-alternatesstylistic() 函数符号一起使用。一个 stylistic 特性值定义只允许一个值:ident1: 2 是有效的,但 ident2: 2 4 无效。

@styleset

指定一个特性名称,该名称将与 font-variant-alternatesstyleset() 函数符号一起使用。一个 styleset 特性值定义允许无限数量的值:ident1: 2 4 12 1 映射到 OpenType 值 ss02ss04ss12ss01。请注意,大于 99 的值是有效的,但不会映射到任何 OpenType 值并被忽略。

@character-variant

指定一个特性名称,该名称将与 font-variant-alternatescharacter-variant() 函数符号一起使用。一个 character-variant 特性值定义允许一个或两个值:ident1: 3 映射到 cv03=1ident2: 2 4 映射到 cv02=4,但 ident2: 2 4 5 是无效的。

正式语法

@font-feature-values = 
@font-feature-values <family-name># { <declaration-rule-list> }

<family-name> =
<string> |
<custom-ident>+

示例

在 @font-feature-values 规则中使用 @styleset

css
/* At-rule for "nice-style" in Font One */
@font-feature-values Font One {
  @styleset {
    nice-style: 12;
  }
}

/* At-rule for "nice-style" in Font Two */
@font-feature-values Font Two {
  @styleset {
    nice-style: 4;
  }
}

/* Apply the at-rules with a single declaration */
.nice-look {
  font-variant-alternates: styleset(nice-style);
}

规范

规范
CSS 字体模块第 4 级
# font-feature-values

浏览器兼容性

另见