CSS font-variant-alternates Property
Description
The font-variant-alternates property provides a way to request and control alternate glyphs that a typeface may offer beyond its default letterforms. Instead of changing weight, size, or the basic family, this property targets stylistic and contextual variations built into the font: alternate characters, swashes, contextual ligatures, and other designer-provided options. It acts as a higher-level, semantically meaningful interface for typographic alternates, allowing authors to express intent (for example, "use decorative alternates" or "prefer contextual forms") without dealing with low-level OpenType tag mechanics.
This property sits at a different abstraction level than lower-level feature controls. Authors who need precise control over specific OpenType features can use font-feature-settings, but that requires specifying feature tags and is more technical. Conversely, font-variant-alternates exposes named alternate behaviors in a more author-friendly way, letting the browser translate those names into the appropriate OpenType operations where supported. Because not all fonts implement every alternate, the property depends on the font’s internal design: if the requested alternates aren’t available, the browser will simply render the default glyphs.
In practice, font-variant-alternates is useful for typographic refinement - adding flair to headings, enabling context-sensitive character forms in text, or toggling decorative options for different design contexts - without swapping fonts. It also interacts with broader font handling: the actual alternates available are determined by the chosen font-family, and the property can be combined with other typographic controls such as font-variant to create comprehensive, accessible typographic styles. When designing with alternates, consider readability, consistency across platforms, and fallbacks, since alternate glyphs may differ in width or emphasis and can affect line breaks and layout.
Definition
- Initial value
- normal
- Applies to
- All elements
- Inherited
- Yes
- Computed value
- As specified
- Animatable
- No
- JavaScript syntax
- object.style.fontVariantAlternates
Syntax
font-variant-alternates: 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>) ]
Values
- normalNone of the features listed below are enabled.
- stylistic(<feature-value-name>)Enables display of stylistic alternates (font specific, OpenType feature: salt <feature-index>).
- historical-formsEnables display of historical forms (OpenType feature: hist).
- styleset(<feature-value-name> #)Enables display with stylistic sets (font specific, OpenType feature: ss<feature-index> OpenType currently defines ss01 through ss20).
- character-variant(<feature-value-name> #)Enables display of specific character variants (font specific, OpenType feature: cv<feature-index> OpenType currently defines cv01 through cv99).
- swash(<feature-value-name>)Enables display of swash glyphs (font specific, OpenType feature: swsh <feature-index>, cswh
). - ornaments(<feature-value-name>)Enables replacement of default glyphs with ornaments, if provided in the font (font specific, OpenType feature: ornm <feature-index>).
- annotation(<feature-value-name>)Enables display of alternate annotation forms (font specific, OpenType feature: nalt <feature-index>).
Example
Browser Support
The following information will show you the current browser support for the CSS font-variant-alternates property. Hover over a browser icon to see the version that first introduced support for this CSS property.
This property is supported in some modern browsers, but not all.
Desktop
Tablets & Mobile
Last updated by CSSPortal on: 1st January 2026
