Since March 2023, this feature works across the latest devices and browser versions. This feature might not work in older devices or browsers.
The @font-feature-values CSS at-rule lets you use a common name in the font-variant-alternates property for features activated differently in OpenType. This can help simplify your CSS when using multiple fonts.
The @font-feature-values at-rule may be used either at the top level of your CSS or inside any CSS conditional-group at-rule.
@font-feature-values Font Name {
font-display: swap;
@styleset {
nice-style: 12;
}
@swash {
fancy: 2;
}
}
Each @font-feature-values block can contain a list of feature value blocks (listed below), as well as the font-display descriptor.
@swashSpecifies a feature name that will work with the swash() functional notation of font-variant-alternates. A swash feature value definition allows only one value: ident1: 2 is valid, but ident2: 2 4 isn't.
@annotationSpecifies a feature name that will work with the annotation() functional notation of font-variant-alternates. An annotation feature value definition allows only one value: ident1: 2 is valid, but ident2: 2 4 isn't.
@ornamentsSpecifies a feature name that will work with the ornaments() functional notation of font-variant-alternates. An ornaments feature value definition allows only one value: ident1: 2 is valid, but ident2: 2 4 isn't.
@stylisticSpecifies a feature name that will work with the stylistic() functional notation of font-variant-alternates. A stylistic feature value definition allows only one value: ident1: 2 is valid, but ident2: 2 4 isn't.
@stylesetSpecifies a feature name that will work with the styleset() functional notation of font-variant-alternates. A styleset feature value definition allows an unlimited number of values: ident1: 2 4 12 1 maps to the OpenType values ss02, ss04, ss12, and ss01. Note that values higher than 99 are valid, but don't map to any OpenType values and are ignored.
@character-variantSpecifies a feature name that will work with the character-variant() functional notation of font-variant-alternates. A character-variant feature value definition allows either one or two values: ident1: 3 maps to cv03=1, and ident2: 2 4 maps to cv02=4, but ident2: 2 4 5 is invalid.
@font-feature-values =
@font-feature-values <family-name># { <declaration-rule-list> }
<family-name> =
<string> |
<custom-ident>+
/* 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);
}
| Specification |
|---|
| CSS Fonts Module Level 4> # font-feature-values> |
| Desktop | Mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox for Android | Opera Android | Safari on IOS | Samsung Internet | WebView Android | WebView on iOS | |
@font-feature-values |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
annotation |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
character-variant |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
historical-forms |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
ornaments |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
styleset |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
stylistic |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
swash |
111 | 111 | 34 | 97 | 9.1 | 111 | 34 | 75 | 9.3 | 22.0 | 111 | 9.3 |
font-variant-alternates property that uses values that this at-rule defines.
© 2005–2025 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/@font-feature-values