Summary
The @font-feature-values CSS at-rule allows authors to use a common name in font-variant-alternates for feature activated differently in OpenType. It allows to simplify the CSS when using several fonts.
@font-feature-values Font One { /* How to activate nice-style in Font One */
  @styleset {
    nice-style: 12;
  }
}
 
@font-feature-values Font Two { /* How to activate nice-style in Font Two */
  @styleset {
    nice-style: 4;
  }
} 
…
.nice-look { font-variant-alternates: styleset(nice-style); } /* Independent of the font */
The @font-feature-values at-rule may be used at the top level of a CSS, but also inside any CSS conditional-group at-rule.
Syntax
Feature value blocks
- @swash
- Specifies a feature name that will work with the swash()functional notation offont-variant-alternates. A swash feature value definition allows only one value:ident1: 2is valid whenident2: 2 4isn't.
- @annotation
- Specifies a feature name that will work with the annotation()functional notation offont-variant-alternates. An annotation feature value definition allows only one value:ident1: 2is valid whenident2: 2 4isn't.
- @ornaments
- Specifies a feature name that will work with the ornaments()functional notation offont-variant-alternates. An ornaments feature value definition allows only one value:ident1: 2is valid whenident2: 2 4isn't.
- @stylistic
- Specifies a feature name that will work with the stylistic()functional notation offont-variant-alternates. A stylistice feature value definition allows only one value:ident1: 2is valid whenident2: 2 4isn't.
- @styleset
- Specifies a feature name that will work with the styleset()functional notation offont-variant-alternates. A stylset feature value definition allows and illimited amount of values:ident1: 2 4 12 1maps to the OpenType valuesss02,ss04,ss12,ss01. Note that values higher than99are valid, but doesn't map to any OpenType values and are ignored.
- @character-variant
- Specifies a feature name that will work with the character-variant()functional notation offont-variant-alternates. A character-variant feature value definition allows one or two values:ident1: 2maps tocv02=1andident2: 2 4maps tocv02)4andident2: 2 4 5isn't valid.
Formal syntax
@font-feature-values <font-family> {
  [ @swash | @ornaments | @annotation | @stylistic | @styleset | @character-variant
    {
      [ <IDENT>: <integer>+ ]?
    }
  ]?
}
Specifications
| Specification | Status | Comment | 
|---|---|---|
| CSS Fonts Module Level 3 The definition of '@font-feature-values' in that specification. | Candidate Recommendation | Initial definition | 
Browser compatibility
| Feature | Chrome | Firefox (Gecko) | 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 of the CSS Fonts Level 3 extensions was available since Gecko 24. It was governed by the preference layout.css.font-features.enabled defaulting to true on Nightly and Aurora only.
See also
- The font-variant-alternatesproperty that uses values that this at-rule defines.