Click here to download the Blitz Browser!

WPT

wpt / css / css-fonts / variations / at-font-face-descriptors.html

Spec: CSS Fonts ↗

Runs: Chrome 155.0.8038.0 (wpt@7addae031, 2026-09-02) | Firefox 157.0a1 (wpt@7addae031, 2026-09-02) | Safari 251 preview (wpt@5ce815a83, 2026-08-27) | Ladybird 1.0-a7884 (wpt@b1a7025f8, 2026-09-02) | Servo Servo 0.6 (wpt@09159dcb3, 2026-09-02) | Blitz 188486089 (wpt@a95401e4e, 2026-09-02)

View on the Blitz WPT dashboard | Open test on wpt.live | wpt.fyi

ChromeFirefoxSafariLadybirdServoBlitz
Total85/880/8884/8875/880/880/88
SubtestChromeFirefoxSafariLadybirdServoBlitz
font-weight(valid): 'normal' keyword: normalPASSFAILPASSPASSFAILFAIL
font-weight(valid): 'bold' keyword: boldPASSFAILPASSPASSFAILFAIL
font-weight(valid): 'auto' keyword inside @font-face: autoPASSFAILFAILPASSFAILFAIL
font-weight(invalid): 'lighter' keyword inside @font-face: lighterPASSFAILPASSPASSFAILFAIL
font-weight(invalid): 'bolder' keyword inside @font-face: bolderPASSFAILPASSPASSFAILFAIL
font-weight(invalid): Extra content after keyword: bold aPASSFAILPASSPASSFAILFAIL
font-weight(valid): Values that are not multiple of 100 should be parsed successfully: 401PASSFAILPASSPASSFAILFAIL
font-weight(valid): Non-integer values should be parsed successfully: 400.1PASSFAILPASSPASSFAILFAIL
font-weight(valid): Minimum allowed value should be parsed successfully: 1PASSFAILPASSPASSFAILFAIL
font-weight(invalid): Values below minimum should be rejected: 0.999PASSFAILPASSPASSFAILFAIL
font-weight(invalid): Values below zero should be rejected: -100PASSFAILPASSPASSFAILFAIL
font-weight(valid): Maximum allowed value should be parsed successfully: 1000PASSFAILPASSPASSFAILFAIL
font-weight(invalid): Values above maximum should be rejected: 1000.001PASSFAILPASSPASSFAILFAIL
font-weight(invalid): Extra content after value: 100 aPASSFAILPASSPASSFAILFAIL
font-weight(valid): Simple calc value: calc(100.5)PASSFAILPASSPASSFAILFAIL
font-weight(valid): Out-of-range simple calc value: calc(1001)PASSFAILPASSPASSFAILFAIL
font-weight(valid): Valid calc expression: calc(100.5*3 + 50.5)PASSFAILPASSPASSFAILFAIL
font-weight(valid): Valid calc expression with out-of-range value: calc(100.5*3 + 800)PASSFAILPASSPASSFAILFAIL
font-weight(invalid): Valid calc expression with units: calc(100.5px + 50.5px)PASSFAILPASSPASSFAILFAIL
font-weight(valid): Simple range: 100 900PASSFAILPASSPASSFAILFAIL
font-weight(valid): Simple range with equal upper and lower bounds: 500 500FAILFAILPASSFAILFAILFAIL
font-weight(invalid): Lower bound out of range: 0.9 100PASSFAILPASSPASSFAILFAIL
font-weight(invalid): Upper bound out of range: 100 1001PASSFAILPASSPASSFAILFAIL
font-weight(valid): Lower bound calc(): calc(100 + 100) 400PASSFAILPASSPASSFAILFAIL
font-weight(valid): Upper bound calc(): 200 calc(200 + 200)PASSFAILPASSPASSFAILFAIL
font-weight(valid): Both bounds are calc(): calc(100 + 100) calc(200 + 200)PASSFAILPASSPASSFAILFAIL
font-weight(valid): Bounds out of order are valid: 400 200PASSFAILPASSPASSFAILFAIL
font-weight(invalid): Extra content after upper bound: 100 200 300PASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'ultra-condensed' keyword: ultra-condensedPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'extra-condensed' keyword: extra-condensedPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'condensed' keyword: condensedPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'semi-condensed' keyword: semi-condensedPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'normal' keyword: normalPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'semi-expanded' keyword: semi-expandedPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'expanded' keyword: expandedPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'extra-expanded' keyword: extra-expandedPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'ultra-expanded' keyword: ultra-expandedPASSFAILPASSPASSFAILFAIL
font-stretch(invalid): Extra content after value: expanded aPASSFAILPASSPASSFAILFAIL
font-stretch(valid): 'auto' keyword inside @font-face: autoPASSFAILFAILPASSFAILFAIL
font-stretch(valid): Legal percentage: 1%PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Legal percentage: 10.5%PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Legal percentage: 100%PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Legal percentage: 1000%PASSFAILPASSPASSFAILFAIL
font-stretch(invalid): Only percentages, not numbers allowed: 100PASSFAILPASSPASSFAILFAIL
font-stretch(invalid): Negative values are illegal: -1%PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Zero is legal: 0%PASSFAILPASSPASSFAILFAIL
font-stretch(invalid): Extra content after value: 100% aPASSFAILPASSPASSFAILFAIL
font-stretch(valid): Simple calc value: calc(200.5%)PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Valid calc expression: calc(50%*2 - 20%)PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Negative calc value (to be clamped): calc(-100%)PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Negative calc expression (to be clamped): calc(50% - 50%*2)PASSFAILPASSPASSFAILFAIL
font-stretch(invalid): Unit-less calc value: calc(100)PASSFAILPASSPASSFAILFAIL
font-stretch(invalid): Calc value with units: calc(100px)PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Simple range: 100% 200%PASSFAILPASSFAILFAILFAIL
font-stretch(valid): Simple range with equal upper and lower bounds: 100% 100%FAILFAILPASSFAILFAILFAIL
font-stretch(invalid): Lower bound out of range: -100% 100%PASSFAILPASSPASSFAILFAIL
font-stretch(valid): Lower bound calc(): calc(10% + 10%) 30%PASSFAILPASSFAILFAILFAIL
font-stretch(valid): Upper bound calc(): 10% calc(10% + 10%)PASSFAILPASSFAILFAILFAIL
font-stretch(valid): Both bounds are calc(): calc(10% + 10%) calc(20% + 20%)PASSFAILPASSFAILFAILFAIL
font-stretch(valid): Bounds out of order: 200% 100%PASSFAILPASSFAILFAILFAIL
font-stretch(invalid): Extra content after upper bound: 100% 200% 300%PASSFAILPASSPASSFAILFAIL
font-style(valid): 'normal' keyword: normalPASSFAILPASSPASSFAILFAIL
font-style(valid): 'italic' keyword: italicPASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' keyword: obliquePASSFAILPASSPASSFAILFAIL
font-style(valid): 'auto' keyword inside @font-face: autoPASSFAILFAILPASSFAILFAIL
font-style(invalid): 'italic' followed by angle: italic 20degPASSFAILPASSPASSFAILFAIL
font-style(invalid): Extra content after keyword: italic aPASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' followed by zero degrees: oblique 0degPASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' followed by former default 20deg angle: oblique 20degPASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' followed by maxumum 90 degree angle: oblique 90degPASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' followed by minimum -90 degree angle: oblique -90degPASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' followed by calc with out of range value (should be clamped): oblique calc(91deg)PASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' followed by calc with out of range value (should be clamped): oblique calc(-91deg)PASSFAILPASSPASSFAILFAIL
font-style(valid): 'oblique' followed by angle in radians: oblique 0radPASSFAILPASSFAILFAILFAIL
font-style(invalid): 'oblique' followed by unit-less number: oblique 20PASSFAILPASSPASSFAILFAIL
font-style(invalid): 'oblique' followed by non-angle: oblique 20pxPASSFAILPASSPASSFAILFAIL
font-style(invalid): 'oblique' followed by non-number: oblique aPASSFAILPASSPASSFAILFAIL
font-style(invalid): 'oblique' followed by isolated minus: oblique -PASSFAILPASSPASSFAILFAIL
font-style(invalid): 'oblique' followed by minus and angle separated by space: oblique - 20degPASSFAILPASSPASSFAILFAIL
font-style(invalid): 'oblique' followed by minus and non-number: oblique -aPASSFAILPASSPASSFAILFAIL
font-style(valid): Simple range: oblique 10deg 20degPASSFAILPASSFAILFAILFAIL
font-style(valid): Simple range with equal upper and lower bounds: oblique 10deg 10degFAILFAILPASSFAILFAILFAIL
font-style(valid): Simple range with equal upper and lower bounds: oblique 0deg 0degPASSFAILPASSFAILFAILFAIL
font-style(valid): Simple range with former default angle for both bounds: oblique 20deg 20degPASSFAILFAILFAILFAILFAIL
font-style(valid): Bounds out of order: oblique 20deg 10degPASSFAILPASSFAILFAILFAIL
font-style(invalid): Lower bound out of range: oblique -100deg 20degPASSFAILPASSPASSFAILFAIL
font-style(invalid): Upper bound out of range: oblique 20deg 100degPASSFAILPASSPASSFAILFAIL
font-style(invalid): Extra content after upper bound: oblique 10deg 20deg 30degPASSFAILPASSPASSFAILFAIL