CSS @font-feature-values 规则允许您为 OpenType 字体功能定义自定义值,例如连字、样式替代、花饰字或其他高级排版功能。此规则提供了一种控制这些功能在文档的特定元素中的使用的方法。
@font-feature-values 规则由两部分组成:
- 选择器:指定要应用字体功能的一个或多个元素。
- 字体功能声明:定义特定 OpenType 功能的自定义值。
您可以在任何 CSS conditional-group-at-rule 中或在 CSS 的顶层使用 @font-feature-values 规则。
可能的值
- @swash − 定义与 font-variant-alternates 的 swash() 函数一起使用的功能名称。它只允许一个值。例如:ident1: 2 有效,而 ident1: 2 4 无效。
- @annotation − 定义与 font-variant-alternates 的 annotation() 函数一起使用的功能名称。它只允许一个值。例如:ident1: 2 有效,而 ident1: 2 4 无效。
- @ornaments − 定义与 font-variant-alternates 中的 ornaments() 函数一起使用的功能名称,只允许一个值,例如 ident1: 2 有效,而 ident2: 2 4 无效。
- @stylistic − 定义与 font-variant-alternates 中的 stylistic() 函数一起使用的功能名称,只能有一个值,例如 ident1: 2 有效,而 ident2: 2 4 无效。
- @styleset − 定义与 font-variant-alternates 中的 stylistic() 函数一起使用的功能名称,允许无限数量的值,例如 ident1: 2 4 12 1 映射到 OpenType 值 ss02、ss04、ss12 和 ss01。大于 99 的值有效,但不对应于任何 OpenType 值,因此将被忽略。
- @character-variant − 定义与 font-variant-alternates 中的 character-variant() 函数一起使用的功能名称,允许一个或两个值,例如 ident1: 3 映射到 cv03=1,ident2: 2 4 映射到 cv02=4,但 ident2: 2 4 5 无效。
语法
@font-feature-values =
@font-feature-values <family-name># { <declaration-rule-list> }
CSS @font-feature-values - @swash
以下示例演示了 @swash 规则的用法,该规则将字符 'fancy' 的花饰花字功能设置为值 2。font-variant-alternates: swash(fancy) 属性用于将 swash 功能 fancy 应用于文本 -
<html>
<head>
<style>
@font-face {
font-family: CustomFont;
src: url("font/Brygada1918-Italic.ttf");
}
@font-feature-values "CustomFont" {
@swash {
fancy: 2;
}
}
.p1 {
font-family: "CustomFont";
}
.swash-text {
font-variant-alternates: swash(fancy);
}
</style>
</head>
<body>
<p>'fancy' swash styling.</p>
<p class="swash-text p1">'fancy' swash styling.</p>
</body>
</html>
CSS @font-feature-values - @annotation
以下示例演示了如何使用 @font-feature-values 通过将 's' 赋值 4 来定义注释样式。然后,font-variant-alternates: annotation(s) 属性用于将注释功能 's' 应用于文本 -
<html>
<head>
<style>
@font-face {
font-family: CustomFont;
src: url("font/Brygada1918-Italic.ttf");
}
@font-feature-values "CustomFont" {
@annotation {
s: 4;
}
}
.p1 {
font-family: "CustomFont";
}
.annotation-text {
font-variant-alternates: annotation(s);
}
</style>
</head>
<body>
<p class="annotation-text p1">'s' annotation styling.</p>
<p>'s' annotation styling.</p>
</body>
</html>
CSS @font-feature-values - @ornaments
以下示例演示了如何使用 @font-feature-values 通过将 'test' 赋值 12 来定义装饰样式。然后使用 font-variant-alternates: ornaments(test) 属性将装饰功能 'test' 应用于文本 −
<html>
<head>
<style>
@font-face {
font-family: CustomFont;
src: url("font/SansationLight.woff");
}
@font-feature-values "CustomFont" {
@ornaments {
test: 12;
}
}
p {
font-family: "CustomFont";
}
.ornaments-text {
font-variant-alternates: ornaments(test);
}
</style>
</head>
<body>
<p class="ornaments-text">'test' ornaments styling.</p>
<p>'test' ornaments styling.</p>
</body>
</html>
CSS @font-feature-values - @stylistic
以下示例演示了如何使用 @font-feature-values 通过将 'data' 赋值 2 来定义样式。然后使用 font-variant-alternates: stylistic(data) 属性将样式特征 'data' 应用于文本 −
<html>
<head>
<style>
@font-face {
font-family: CustomFont;
src: url("font/Brygada1918-Italic.ttf");
}
@font-feature-values "CustomFont" {
@stylistic {
data: 2;
}
}
p {
font-family: "CustomFont";
}
.ornaments-text {
font-variant-alternates: stylistic(data);
}
</style>
</head>
<body>
<p class="ornaments-text">'data' stylistic styling.</p>
<p>'data' stylistic styling.</p>
</body>
</html>
CSS @font-feature-values - @styleset
以下示例演示了 @font-feature-values 来定义一个名为 “fancy” 的样式集功能,其 OpenType 值为 2、4、12 和 1。带有 styleset() 功能表示法的 font-variant-alternates 属性用于应用 “fancy” 样式集 -
<html>
<head>
<style>
@font-face {
font-family: CustomFont;
src: url("font/SansationLight.woff");
}
@font-feature-values "CustomFont" {
@styleset {
fancy: 2 4 12 1;
}
}
p {
font-family: "CustomFont";
}
.ornaments-text {
font-variant-alternates: styleset(fancy);
}
</style>
</head>
<body>
<p class="ornaments-text">'fancy' styleset styling.</p>
<p>'fancy' styleset styling.</p>
</body>
</html>
CSS @font-feature-values - @character 变体
以下示例演示如何使用 @font-feature-values 来定义名为 “test1” 的字符变体特征,其值为 2 和 4。然后,带有 styleset() 功能表示法的 font-variant-alternates 属性将与 “test1” 字符变体 −
<html>
<head>
<style>
@font-face {
font-family: CustomFont;
src: url("font/SansationLight.woff");
}
@font-feature-values "CustomFont" {
@character-variant {
test1: 2 4;
}
}
p {
font-family: "CustomFont";
}
.ornaments-text {
font-variant-alternates: character-variant(test1);
}
</style>
</head>
<body>
<p class="ornaments-text">'test1' character-variant styling.</p>
<p>'test1' character-variant styling.</p>
</body>
</html>