CSSFontFaceDescriptors
The CSSFontFaceDescriptors interface represents a CSS declaration block for an @font-face at-rule.
Each descriptor in the body of the corresponding @font-face at-rule can be accessed using either its kebab-case property name in bracket notation or the camel-case version of the property name in dot notation.
For example, you can access the font-family CSS descriptor as style["font-family"] or style.fontFamily, where style is a CSSFontFaceDescriptors instance.
Note:
The CSSFontFaceRule interface represents a @font-face at-rule, and the CSSFontFaceRule.style property is an instance of this object.
Instance properties
Inherits properties from its ancestor CSSStyleDeclaration.
The following property names, in kebab-case (accessed using bracket notation) and camel-case (accessed using dot notation), each represent the value of a descriptor in the corresponding @font-face at-rule:
font-displayorfontDisplay-
A string representing the value of the
font-displaydescriptor. font-familyorfontFamily-
A string representing the value of the
font-familydescriptor. font-feature-settingsorfontFeatureSettings-
A string representing the value of the
font-feature-settingsdescriptor. font-stretchorfontStretch-
A string representing the value of the
font-stretchdescriptor. font-styleorfontStyle-
A string representing the value of the
font-styledescriptor. font-weightorfontWeight-
A string representing the value of the
font-weightdescriptor. font-widthorfontWidth-
A string representing the value of the
font-widthdescriptor. size-adjustorsizeAdjust-
A string representing the value of the
size-adjustdescriptor. src-
A string representing the value of the
srcdescriptor. unicode-rangeorunicodeRange-
A string representing the value of the
unicode-rangedescriptor.
Instance methods
No specific methods; inherits methods from its ancestor CSSStyleDeclaration.
Examples
Accessing @font-face descriptor values
This example defines a @font-face rule and then uses CSSFontFaceDescriptors to read back the descriptor values.
CSS
@font-face {
font-family: "MyHelvetica";
src:
local("Helvetica Neue Bold"),
local("HelveticaNeue-Bold"),
url("MgOpenModernaBold.woff2") format("woff2");
font-weight: bold;
font-style: normal;
font-display: swap;
}
JavaScript
const myRules = document.getElementById("css-output").sheet.cssRules;
for (const rule of myRules) {
if (rule instanceof CSSFontFaceRule) {
const style = rule.style; // a CSSFontFaceDescriptors
log(`font-family: ${style.fontFamily}`);
log(`src: ${style.src}`);
log(`font-weight: ${style["font-weight"]}`);
log(`font-style: ${style.fontStyle}`);
log(`font-display: ${style["font-display"]}`);
}
}
Result
Specifications
| Specification |
|---|
| CSS Fonts Module Level 4 # om-fontface |
Browser compatibility
| desktop | mobile | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
CSSFontFaceDescriptors
|
|
|
|
|
|
|
|
|
|
|
|
|
ascent-override
|
|
|
|
|
|
|
|
|
|
|
|
|
ascentOverride
|
|
|
|
|
|
|
|
|
|
|
|
|
descent-override
|
|
|
|
|
|
|
|
|
|
|
|
|
descentOverride
|
|
|
|
|
|
|
|
|
|
|
|
|
font-display
|
|
|
|
|
|
|
|
|
|
|
|
|
font-family
|
|
|
|
|
|
|
|
|
|
|
|
|
font-feature-settings
|
|
|
|
|
|
|
|
|
|
|
|
|
font-language-override
|
|
|
|
|
|
|
|
|
|
|
|
|
font-stretch
|
|
|
|
|
|
|
|
|
|
|
|
|
font-style
|
|
|
|
|
|
|
|
|
|
|
|
|
font-variation-settings
|
|
|
|
|
|
|
|
|
|
|
|
|
font-weight
|
|
|
|
|
|
|
|
|
|
|
|
|
font-width
|
|
|
|
|
|
|
|
|
|
|
|
|
fontDisplay
|
|
|
|
|
|
|
|
|
|
|
|
|
fontFamily
|
|
|
|
|
|
|
|
|
|
|
|
|
fontFeatureSettings
|
|
|
|
|
|
|
|
|
|
|
|
|
fontLanguageOverride
|
|
|
|
|
|
|
|
|
|
|
|
|
fontStretch
|
|
|
|
|
|
|
|
|
|
|
|
|
fontStyle
|
|
|
|
|
|
|
|
|
|
|
|
|
fontVariationSettings
|
|
|
|
|
|
|
|
|
|
|
|
|
fontWeight
|
|
|
|
|
|
|
|
|
|
|
|
|
fontWidth
|
|
|
|
|
|
|
|
|
|
|
|
|
line-gap-override
|
|
|
|
|
|
|
|
|
|
|
|
|
lineGapOverride
|
|
|
|
|
|
|
|
|
|
|
|
|
size-adjust
|
|
|
|
|
|
|
|
|
|
|
|
|
sizeAdjust
|
|
|
|
|
|
|
|
|
|
|
|
|
src
|
|
|
|
|
|
|
|
|
|
|
|
|
unicode-range
|
|
|
|
|
|
|
|
|
|
|
|
|
unicodeRange
|
|
|
|
|
|
|
|
|
|
|
|
|
Legend
Tip: you can click/tap on a cell for more information.
- Full support
- Full support
- No support
- No support
- Experimental. Expect behavior to change in the future.