The font-variant-alternates CSS property controls the usage of alternate glyphs. These alternate glyphs may be referenced by alternative names defined in @font-feature-values.
font-variant-alternates: normal; font-variant-alternates: historical-forms; font-variant-alternates: stylistic(user-defined-ident); font-variant-alternates: styleset(user-defined-ident); font-variant-alternates: character-variant(user-defined-ident); font-variant-alternates: swash(user-defined-ident); font-variant-alternates: ornaments(user-defined-ident); font-variant-alternates: annotation(user-defined-ident); font-variant-alternates: swash(ident1) annotation(ident2); /* Global values */ font-variant-alternates: initial; font-variant-alternates: inherit; font-variant-alternates: unset;
The @font-feature-values at-rule can define names for alternative glyph functions (stylistic, styleset, character-variant, swash, ornament or annotation), associating the name with OpenType parameters. This property allows those human-readable names (defined in @font-feature-values) in the stylesheet.
| Initial value | normal |
|---|---|
| Applies to | all elements. It also applies to ::first-letter and ::first-line. |
| Inherited | yes |
| Media | visual |
| Computed value | as specified |
| Animation type | discrete |
| Canonical order | order of appearance in the formal grammar of the values |
Syntax
This property may take one of two forms:
- either the keyword
normal - or one or more of the other keywords and functions listed below, space-separated, in any order.
Values
normal- This keyword deactivates alternate glyphs.
historical-forms- This keyword enables historical forms — glyphs that were common in the past but not today. It corresponds to the OpentType value
hist. stylistic()- This function enables stylistic alternates for individual characters. The parameter is a font-specific name mapped to a number. It corresponds to the OpenType value
salt, likesalt 2. styleset()- This function enables stylistic alternatives for sets of characters. The parameter is a font-specific name mapped to a number. It corresponds to the OpenType value
ssXY, likess02. character-variant()- This function enables set of stylistic alternatives for characters. It is similar to
styleset(), but doesn't create coherent glyphs for a set of characters; individual characters will have independent and not necessarily coherent styles. The parameter is a font-specific name mapped to a number. It corresponds to the OpenType valuecvXY, likecv02. swash()- This function enables swash glyphs. The parameter is a font-specific name mapped to a number. It corresponds to the OpenType values
swshandcswh, likeswsh 2andcswh 2. ornaments()- This function enables ornaments, like fleurons and other dingbat glyphs. The parameter is a font-specific names mapped to a number. It corresponds to the OpenType value
ornmlikeornm 2.Note: in order to preserve text semantics, font designer should include ornaments that don't match Unicode dingbat characters as ornamental variants of the bullet character (U+2022). Well-formed fonts do that, but some existing fonts don't. annotation()- This function enables annotations, like circled digits or inverted characters. The parameter is a font-specific name mapped to a number. It corresponds to the OpenType value
nalt, likenalt 2.
Formal syntax
normal | [ stylistic( <feature-value-name> ) || historical-forms || styleset( <feature-value-name># ) || character-variant( <feature-value-name># ) || swash( <feature-value-name> ) || ornaments( <feature-value-name> ) || annotation( <feature-value-name> ) ]where
<feature-value-name> = <custom-ident>
Example
HTML
<p>Firefox rocks!</p> <p class="variant">Firefox rocks!</p>
CSS
.variant {
font-family: Leitura Display Swashes;
font-variant-alternates: swash(2);
}
Result
Note: you need to install the OpenType font Leitura Display Swashes for this example to work.
Specifications
| Specification | Status | Comment |
|---|---|---|
| CSS Fonts Module Level 3 The definition of 'font-variant-alternates' in that specification. |
Candidate Recommendation | Initial definition |
Browser Compatibility
| Feature | Firefox (Gecko) | Chrome | Internet Explorer | Opera | Safari (WebKit) |
|---|---|---|---|---|---|
| Basic support | 34 (34) [1] | ? | ? | ? | ? |
| Feature | Android | Firefox Mobile (Gecko) | IE Phone | Opera Mobile | Safari Mobile |
|---|---|---|---|---|---|
| Basic support | ? | 34.0 (34)[1] | ? | ? | ? |
[1] Experimental implementation available since Gecko 24, and was governed by the preference layout.css.font-features.enabled; default true on Nightly and Aurora only.