LibWeb: Clamp negative font-size when loading font

`font-size` can end up with a negative value - either due to `calc`
being resolved using the old method which doesn't clamp the value, or
interpolation - in this case we should clamp negative values to zero.

Gains us 36 new WPT passes and fixes crashes in the three imported
tests.
This commit is contained in:
Callum Law 2025-08-22 03:50:16 +12:00 committed by Sam Atkins
commit 56c4e8199b
Notes: github-actions[bot] 2025-09-01 11:30:15 +00:00
9 changed files with 456 additions and 40 deletions

View file

@ -1989,6 +1989,10 @@ RefPtr<Gfx::FontCascadeList const> StyleComputer::compute_font_for_style_values(
}
}
// FIXME: Font size can end up being negative due to interpolation - we can remove this once we correctly handle interpolation clamping.
if (font_size_in_px < 0)
font_size_in_px = 0;
auto slope = font_style.to_font_slope();
// FIXME: Implement the full font-matching algorithm: https://www.w3.org/TR/css-fonts-4/#font-matching-algorithm

View file

@ -0,0 +1,146 @@
Harness status: OK
Found 140 tests
110 Pass
30 Fail
Fail CSS Transitions: property <font-size> from neutral to [20px] at (-2) should be [0px]
Pass CSS Transitions: property <font-size> from neutral to [20px] at (-0.3) should be [7px]
Pass CSS Transitions: property <font-size> from neutral to [20px] at (0) should be [10px]
Pass CSS Transitions: property <font-size> from neutral to [20px] at (0.3) should be [13px]
Pass CSS Transitions: property <font-size> from neutral to [20px] at (0.6) should be [16px]
Pass CSS Transitions: property <font-size> from neutral to [20px] at (1) should be [20px]
Pass CSS Transitions: property <font-size> from neutral to [20px] at (1.5) should be [25px]
Fail CSS Transitions with transition: all: property <font-size> from neutral to [20px] at (-2) should be [0px]
Pass CSS Transitions with transition: all: property <font-size> from neutral to [20px] at (-0.3) should be [7px]
Pass CSS Transitions with transition: all: property <font-size> from neutral to [20px] at (0) should be [10px]
Pass CSS Transitions with transition: all: property <font-size> from neutral to [20px] at (0.3) should be [13px]
Pass CSS Transitions with transition: all: property <font-size> from neutral to [20px] at (0.6) should be [16px]
Pass CSS Transitions with transition: all: property <font-size> from neutral to [20px] at (1) should be [20px]
Pass CSS Transitions with transition: all: property <font-size> from neutral to [20px] at (1.5) should be [25px]
Fail CSS Animations: property <font-size> from neutral to [20px] at (-2) should be [0px]
Fail CSS Animations: property <font-size> from neutral to [20px] at (-0.3) should be [7px]
Pass CSS Animations: property <font-size> from neutral to [20px] at (0) should be [10px]
Fail CSS Animations: property <font-size> from neutral to [20px] at (0.3) should be [13px]
Fail CSS Animations: property <font-size> from neutral to [20px] at (0.6) should be [16px]
Pass CSS Animations: property <font-size> from neutral to [20px] at (1) should be [20px]
Fail CSS Animations: property <font-size> from neutral to [20px] at (1.5) should be [25px]
Fail Web Animations: property <font-size> from neutral to [20px] at (-2) should be [0px]
Fail Web Animations: property <font-size> from neutral to [20px] at (-0.3) should be [7px]
Pass Web Animations: property <font-size> from neutral to [20px] at (0) should be [10px]
Fail Web Animations: property <font-size> from neutral to [20px] at (0.3) should be [13px]
Fail Web Animations: property <font-size> from neutral to [20px] at (0.6) should be [16px]
Pass Web Animations: property <font-size> from neutral to [20px] at (1) should be [20px]
Fail Web Animations: property <font-size> from neutral to [20px] at (1.5) should be [25px]
Pass CSS Transitions: property <font-size> from [initial] to [20px] at (-2) should be [8px]
Pass CSS Transitions: property <font-size> from [initial] to [20px] at (-0.3) should be [14.8px]
Pass CSS Transitions: property <font-size> from [initial] to [20px] at (0) should be [16px]
Pass CSS Transitions: property <font-size> from [initial] to [20px] at (0.3) should be [17.2px]
Fail CSS Transitions: property <font-size> from [initial] to [20px] at (0.6) should be [18.4px]
Pass CSS Transitions: property <font-size> from [initial] to [20px] at (1) should be [20px]
Pass CSS Transitions: property <font-size> from [initial] to [20px] at (1.5) should be [22px]
Pass CSS Transitions with transition: all: property <font-size> from [initial] to [20px] at (-2) should be [8px]
Pass CSS Transitions with transition: all: property <font-size> from [initial] to [20px] at (-0.3) should be [14.8px]
Pass CSS Transitions with transition: all: property <font-size> from [initial] to [20px] at (0) should be [16px]
Pass CSS Transitions with transition: all: property <font-size> from [initial] to [20px] at (0.3) should be [17.2px]
Fail CSS Transitions with transition: all: property <font-size> from [initial] to [20px] at (0.6) should be [18.4px]
Pass CSS Transitions with transition: all: property <font-size> from [initial] to [20px] at (1) should be [20px]
Pass CSS Transitions with transition: all: property <font-size> from [initial] to [20px] at (1.5) should be [22px]
Fail CSS Animations: property <font-size> from [initial] to [20px] at (-2) should be [8px]
Fail CSS Animations: property <font-size> from [initial] to [20px] at (-0.3) should be [14.8px]
Fail CSS Animations: property <font-size> from [initial] to [20px] at (0) should be [16px]
Fail CSS Animations: property <font-size> from [initial] to [20px] at (0.3) should be [17.2px]
Fail CSS Animations: property <font-size> from [initial] to [20px] at (0.6) should be [18.4px]
Pass CSS Animations: property <font-size> from [initial] to [20px] at (1) should be [20px]
Fail CSS Animations: property <font-size> from [initial] to [20px] at (1.5) should be [22px]
Fail Web Animations: property <font-size> from [initial] to [20px] at (-2) should be [8px]
Fail Web Animations: property <font-size> from [initial] to [20px] at (-0.3) should be [14.8px]
Fail Web Animations: property <font-size> from [initial] to [20px] at (0) should be [16px]
Fail Web Animations: property <font-size> from [initial] to [20px] at (0.3) should be [17.2px]
Fail Web Animations: property <font-size> from [initial] to [20px] at (0.6) should be [18.4px]
Pass Web Animations: property <font-size> from [initial] to [20px] at (1) should be [20px]
Fail Web Animations: property <font-size> from [initial] to [20px] at (1.5) should be [22px]
Pass CSS Transitions: property <font-size> from [inherit] to [20px] at (-2) should be [50px]
Pass CSS Transitions: property <font-size> from [inherit] to [20px] at (-0.3) should be [33px]
Pass CSS Transitions: property <font-size> from [inherit] to [20px] at (0) should be [30px]
Pass CSS Transitions: property <font-size> from [inherit] to [20px] at (0.3) should be [27px]
Pass CSS Transitions: property <font-size> from [inherit] to [20px] at (0.6) should be [24px]
Pass CSS Transitions: property <font-size> from [inherit] to [20px] at (1) should be [20px]
Pass CSS Transitions: property <font-size> from [inherit] to [20px] at (1.5) should be [15px]
Pass CSS Transitions with transition: all: property <font-size> from [inherit] to [20px] at (-2) should be [50px]
Pass CSS Transitions with transition: all: property <font-size> from [inherit] to [20px] at (-0.3) should be [33px]
Pass CSS Transitions with transition: all: property <font-size> from [inherit] to [20px] at (0) should be [30px]
Pass CSS Transitions with transition: all: property <font-size> from [inherit] to [20px] at (0.3) should be [27px]
Pass CSS Transitions with transition: all: property <font-size> from [inherit] to [20px] at (0.6) should be [24px]
Pass CSS Transitions with transition: all: property <font-size> from [inherit] to [20px] at (1) should be [20px]
Pass CSS Transitions with transition: all: property <font-size> from [inherit] to [20px] at (1.5) should be [15px]
Pass CSS Animations: property <font-size> from [inherit] to [20px] at (-2) should be [50px]
Pass CSS Animations: property <font-size> from [inherit] to [20px] at (-0.3) should be [33px]
Pass CSS Animations: property <font-size> from [inherit] to [20px] at (0) should be [30px]
Pass CSS Animations: property <font-size> from [inherit] to [20px] at (0.3) should be [27px]
Pass CSS Animations: property <font-size> from [inherit] to [20px] at (0.6) should be [24px]
Pass CSS Animations: property <font-size> from [inherit] to [20px] at (1) should be [20px]
Pass CSS Animations: property <font-size> from [inherit] to [20px] at (1.5) should be [15px]
Pass Web Animations: property <font-size> from [inherit] to [20px] at (-2) should be [50px]
Pass Web Animations: property <font-size> from [inherit] to [20px] at (-0.3) should be [33px]
Pass Web Animations: property <font-size> from [inherit] to [20px] at (0) should be [30px]
Pass Web Animations: property <font-size> from [inherit] to [20px] at (0.3) should be [27px]
Pass Web Animations: property <font-size> from [inherit] to [20px] at (0.6) should be [24px]
Pass Web Animations: property <font-size> from [inherit] to [20px] at (1) should be [20px]
Pass Web Animations: property <font-size> from [inherit] to [20px] at (1.5) should be [15px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (-2) should be [50px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (-0.3) should be [33px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (0) should be [30px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (0.3) should be [27px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (0.6) should be [24px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (1.5) should be [15px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (-2) should be [50px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (-0.3) should be [33px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (0) should be [30px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (0.3) should be [27px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (0.6) should be [24px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (1.5) should be [15px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (-2) should be [50px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (-0.3) should be [33px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (0) should be [30px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (0.3) should be [27px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (0.6) should be [24px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (1.5) should be [15px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (-2) should be [50px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (-0.3) should be [33px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (0) should be [30px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (0.3) should be [27px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (0.6) should be [24px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (1.5) should be [15px]
Fail CSS Transitions: property <font-size> from [4px] to [14px] at (-2) should be [0px]
Pass CSS Transitions: property <font-size> from [4px] to [14px] at (-0.3) should be [1px]
Pass CSS Transitions: property <font-size> from [4px] to [14px] at (0) should be [4px]
Pass CSS Transitions: property <font-size> from [4px] to [14px] at (0.3) should be [7px]
Pass CSS Transitions: property <font-size> from [4px] to [14px] at (0.6) should be [10px]
Pass CSS Transitions: property <font-size> from [4px] to [14px] at (1) should be [14px]
Pass CSS Transitions: property <font-size> from [4px] to [14px] at (1.5) should be [19px]
Fail CSS Transitions with transition: all: property <font-size> from [4px] to [14px] at (-2) should be [0px]
Pass CSS Transitions with transition: all: property <font-size> from [4px] to [14px] at (-0.3) should be [1px]
Pass CSS Transitions with transition: all: property <font-size> from [4px] to [14px] at (0) should be [4px]
Pass CSS Transitions with transition: all: property <font-size> from [4px] to [14px] at (0.3) should be [7px]
Pass CSS Transitions with transition: all: property <font-size> from [4px] to [14px] at (0.6) should be [10px]
Pass CSS Transitions with transition: all: property <font-size> from [4px] to [14px] at (1) should be [14px]
Pass CSS Transitions with transition: all: property <font-size> from [4px] to [14px] at (1.5) should be [19px]
Fail CSS Animations: property <font-size> from [4px] to [14px] at (-2) should be [0px]
Pass CSS Animations: property <font-size> from [4px] to [14px] at (-0.3) should be [1px]
Pass CSS Animations: property <font-size> from [4px] to [14px] at (0) should be [4px]
Pass CSS Animations: property <font-size> from [4px] to [14px] at (0.3) should be [7px]
Pass CSS Animations: property <font-size> from [4px] to [14px] at (0.6) should be [10px]
Pass CSS Animations: property <font-size> from [4px] to [14px] at (1) should be [14px]
Pass CSS Animations: property <font-size> from [4px] to [14px] at (1.5) should be [19px]
Fail Web Animations: property <font-size> from [4px] to [14px] at (-2) should be [0px]
Pass Web Animations: property <font-size> from [4px] to [14px] at (-0.3) should be [1px]
Pass Web Animations: property <font-size> from [4px] to [14px] at (0) should be [4px]
Pass Web Animations: property <font-size> from [4px] to [14px] at (0.3) should be [7px]
Pass Web Animations: property <font-size> from [4px] to [14px] at (0.6) should be [10px]
Pass Web Animations: property <font-size> from [4px] to [14px] at (1) should be [14px]
Pass Web Animations: property <font-size> from [4px] to [14px] at (1.5) should be [19px]

View file

@ -0,0 +1,34 @@
Harness status: OK
Found 28 tests
24 Pass
4 Fail
Fail CSS Transitions: property <font-size> from [unset] to [20px] at (-2) should be [0px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (-0.3) should be [7px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (0) should be [10px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (0.3) should be [13px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (0.6) should be [16px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass CSS Transitions: property <font-size> from [unset] to [20px] at (1.5) should be [25px]
Fail CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (-2) should be [0px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (-0.3) should be [7px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (0) should be [10px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (0.3) should be [13px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (0.6) should be [16px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass CSS Transitions with transition: all: property <font-size> from [unset] to [20px] at (1.5) should be [25px]
Fail CSS Animations: property <font-size> from [unset] to [20px] at (-2) should be [0px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (-0.3) should be [7px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (0) should be [10px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (0.3) should be [13px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (0.6) should be [16px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass CSS Animations: property <font-size> from [unset] to [20px] at (1.5) should be [25px]
Fail Web Animations: property <font-size> from [unset] to [20px] at (-2) should be [0px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (-0.3) should be [7px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (0) should be [10px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (0.3) should be [13px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (0.6) should be [16px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (1) should be [20px]
Pass Web Animations: property <font-size> from [unset] to [20px] at (1.5) should be [25px]

View file

@ -0,0 +1,34 @@
Harness status: OK
Found 28 tests
24 Pass
4 Fail
Fail CSS Transitions: property <font-size> from [10px] to [20px] at (-2) should be [0px]
Pass CSS Transitions: property <font-size> from [10px] to [20px] at (-0.3) should be [7px]
Pass CSS Transitions: property <font-size> from [10px] to [20px] at (0) should be [10px]
Pass CSS Transitions: property <font-size> from [10px] to [20px] at (0.3) should be [13px]
Pass CSS Transitions: property <font-size> from [10px] to [20px] at (0.6) should be [16px]
Pass CSS Transitions: property <font-size> from [10px] to [20px] at (1) should be [20px]
Pass CSS Transitions: property <font-size> from [10px] to [20px] at (1.5) should be [25px]
Fail CSS Transitions with transition: all: property <font-size> from [10px] to [20px] at (-2) should be [0px]
Pass CSS Transitions with transition: all: property <font-size> from [10px] to [20px] at (-0.3) should be [7px]
Pass CSS Transitions with transition: all: property <font-size> from [10px] to [20px] at (0) should be [10px]
Pass CSS Transitions with transition: all: property <font-size> from [10px] to [20px] at (0.3) should be [13px]
Pass CSS Transitions with transition: all: property <font-size> from [10px] to [20px] at (0.6) should be [16px]
Pass CSS Transitions with transition: all: property <font-size> from [10px] to [20px] at (1) should be [20px]
Pass CSS Transitions with transition: all: property <font-size> from [10px] to [20px] at (1.5) should be [25px]
Fail CSS Animations: property <font-size> from [10px] to [20px] at (-2) should be [0px]
Pass CSS Animations: property <font-size> from [10px] to [20px] at (-0.3) should be [7px]
Pass CSS Animations: property <font-size> from [10px] to [20px] at (0) should be [10px]
Pass CSS Animations: property <font-size> from [10px] to [20px] at (0.3) should be [13px]
Pass CSS Animations: property <font-size> from [10px] to [20px] at (0.6) should be [16px]
Pass CSS Animations: property <font-size> from [10px] to [20px] at (1) should be [20px]
Pass CSS Animations: property <font-size> from [10px] to [20px] at (1.5) should be [25px]
Fail Web Animations: property <font-size> from [10px] to [20px] at (-2) should be [0px]
Pass Web Animations: property <font-size> from [10px] to [20px] at (-0.3) should be [7px]
Pass Web Animations: property <font-size> from [10px] to [20px] at (0) should be [10px]
Pass Web Animations: property <font-size> from [10px] to [20px] at (0.3) should be [13px]
Pass Web Animations: property <font-size> from [10px] to [20px] at (0.6) should be [16px]
Pass Web Animations: property <font-size> from [10px] to [20px] at (1) should be [20px]
Pass Web Animations: property <font-size> from [10px] to [20px] at (1.5) should be [25px]

View file

@ -2,8 +2,8 @@ Harness status: OK
Found 315 tests
244 Pass
71 Fail
278 Pass
37 Fail
Pass caption should be a supported system font.
Pass icon should be a supported system font.
Pass menu should be a supported system font.
@ -17,7 +17,7 @@ Pass Property font value 'normal normal normal larger/calc(120% + 1.2em) fantasy
Pass Property font value 'normal normal normal normal smaller monospace'
Pass Property font value 'normal normal normal italic 10px/normal Menu'
Pass Property font value 'normal normal normal small-caps 20%/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'normal normal normal bold calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'normal normal normal ultra-condensed xx-small sans-serif'
Pass Property font value 'normal normal italic medium/normal cursive'
Pass Property font value 'normal normal italic normal xx-large/1.2 fantasy'
@ -25,7 +25,7 @@ Pass Property font value 'normal normal italic small-caps larger/calc(120% + 1.2
Pass Property font value 'normal normal italic bolder smaller Menu'
Pass Property font value 'normal normal italic extra-condensed 10px/normal "Non-Generic Example Family Name"'
Pass Property font value 'normal normal small-caps 20%/1.2 serif'
Fail Property font value 'normal normal small-caps normal calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'normal normal small-caps normal calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'normal normal small-caps italic xx-small cursive'
Fail Property font value 'normal normal small-caps lighter medium/normal fantasy'
Pass Property font value 'normal normal small-caps condensed xx-large/1.2 monospace'
@ -41,7 +41,7 @@ Pass Property font value 'normal normal ultra-expanded small-caps larger/calc(12
Pass Property font value 'normal normal ultra-condensed 100 smaller serif'
Pass Property font value 'normal italic 10px/normal sans-serif'
Pass Property font value 'normal italic normal 20%/1.2 cursive'
Fail Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'normal italic normal small-caps xx-small monospace'
Pass Property font value 'normal italic normal 900 medium/normal Menu'
Pass Property font value 'normal italic normal extra-condensed xx-large/1.2 "Non-Generic Example Family Name"'
@ -49,7 +49,7 @@ Pass Property font value 'normal italic small-caps larger/calc(120% + 1.2em) ser
Pass Property font value 'normal italic small-caps normal smaller sans-serif'
Pass Property font value 'normal italic small-caps bold 10px/normal cursive'
Pass Property font value 'normal italic small-caps condensed 20%/1.2 fantasy'
Fail Property font value 'normal italic bolder calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'normal italic bolder calc(30% - 40px)/calc(120% + 1.2em) monospace'
Fail Property font value 'normal italic lighter normal xx-small Menu'
Pass Property font value 'normal italic 100 small-caps medium/normal "Non-Generic Example Family Name"'
Pass Property font value 'normal italic 900 semi-condensed xx-large/1.2 serif'
@ -57,7 +57,7 @@ Pass Property font value 'normal italic semi-expanded larger/calc(120% + 1.2em)
Pass Property font value 'normal italic expanded normal smaller cursive'
Pass Property font value 'normal italic extra-expanded small-caps 10px/normal fantasy'
Pass Property font value 'normal italic ultra-expanded bold 20%/1.2 monospace'
Fail Property font value 'normal small-caps calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'normal small-caps calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'normal small-caps normal xx-small "Non-Generic Example Family Name"'
Pass Property font value 'normal small-caps normal normal medium/normal serif'
Pass Property font value 'normal small-caps normal italic xx-large/1.2 sans-serif'
@ -73,7 +73,7 @@ Pass Property font value 'normal small-caps bold italic larger/calc(120% + 1.2em
Pass Property font value 'normal small-caps bolder condensed smaller monospace'
Pass Property font value 'normal small-caps semi-condensed 10px/normal Menu'
Pass Property font value 'normal small-caps semi-expanded normal 20%/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'normal small-caps expanded italic calc(30% - 40px)/calc(120% + 1.2em) serif'
Fail Property font value 'normal small-caps extra-expanded lighter xx-small sans-serif'
Pass Property font value 'normal 100 medium/normal cursive'
Pass Property font value 'normal 900 normal xx-large/1.2 fantasy'
@ -81,7 +81,7 @@ Pass Property font value 'normal bold normal normal larger/calc(120% + 1.2em) mo
Pass Property font value 'normal bolder normal italic smaller Menu'
Fail Property font value 'normal lighter normal small-caps 10px/normal "Non-Generic Example Family Name"'
Pass Property font value 'normal 100 normal ultra-expanded 20%/1.2 serif'
Fail Property font value 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'normal 900 italic calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'normal bold italic normal xx-small cursive'
Pass Property font value 'normal bolder italic small-caps medium/normal fantasy'
Fail Property font value 'normal lighter italic ultra-condensed xx-large/1.2 monospace'
@ -97,7 +97,7 @@ Pass Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-G
Pass Property font value 'normal ultra-expanded normal smaller serif'
Pass Property font value 'normal ultra-condensed normal normal 10px/normal sans-serif'
Pass Property font value 'normal extra-condensed normal italic 20%/1.2 cursive'
Fail Property font value 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'normal condensed normal small-caps calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'normal semi-condensed normal bolder xx-small monospace'
Pass Property font value 'normal semi-expanded italic medium/normal Menu'
Pass Property font value 'normal expanded italic normal xx-large/1.2 "Non-Generic Example Family Name"'
@ -105,7 +105,7 @@ Pass Property font value 'normal extra-expanded italic small-caps larger/calc(12
Fail Property font value 'normal ultra-expanded italic lighter smaller sans-serif'
Pass Property font value 'normal ultra-condensed small-caps 10px/normal cursive'
Pass Property font value 'normal extra-condensed small-caps normal 20%/1.2 fantasy'
Fail Property font value 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'normal condensed small-caps italic calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'normal semi-condensed small-caps 100 xx-small Menu'
Pass Property font value 'normal semi-expanded 900 medium/normal "Non-Generic Example Family Name"'
Pass Property font value 'normal expanded bold normal xx-large/1.2 serif'
@ -113,7 +113,7 @@ Pass Property font value 'normal extra-expanded bolder italic larger/calc(120% +
Fail Property font value 'normal ultra-expanded lighter small-caps smaller cursive'
Pass Property font value 'italic 10px/normal fantasy'
Pass Property font value 'italic normal 20%/1.2 monospace'
Fail Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'italic normal normal normal xx-small "Non-Generic Example Family Name"'
Pass Property font value 'italic normal normal small-caps medium/normal serif'
Pass Property font value 'italic normal normal 100 xx-large/1.2 sans-serif'
@ -121,7 +121,7 @@ Pass Property font value 'italic normal normal ultra-condensed larger/calc(120%
Pass Property font value 'italic normal small-caps smaller fantasy'
Pass Property font value 'italic normal small-caps normal 10px/normal monospace'
Pass Property font value 'italic normal small-caps 900 20%/1.2 Menu'
Fail Property font value 'italic normal small-caps extra-condensed calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Pass Property font value 'italic normal small-caps extra-condensed calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Pass Property font value 'italic normal bold xx-small serif'
Pass Property font value 'italic normal bolder normal medium/normal sans-serif'
Fail Property font value 'italic normal lighter small-caps xx-large/1.2 cursive'
@ -129,7 +129,7 @@ Pass Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em)
Pass Property font value 'italic normal semi-condensed smaller monospace'
Pass Property font value 'italic normal semi-expanded normal 10px/normal Menu'
Pass Property font value 'italic normal expanded small-caps 20%/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'italic normal extra-expanded 900 calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'italic small-caps xx-small sans-serif'
Pass Property font value 'italic small-caps normal medium/normal cursive'
Pass Property font value 'italic small-caps normal normal xx-large/1.2 fantasy'
@ -137,7 +137,7 @@ Pass Property font value 'italic small-caps normal bold larger/calc(120% + 1.2em
Pass Property font value 'italic small-caps normal ultra-expanded smaller Menu'
Pass Property font value 'italic small-caps bolder 10px/normal "Non-Generic Example Family Name"'
Fail Property font value 'italic small-caps lighter normal 20%/1.2 serif'
Fail Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'italic small-caps extra-condensed xx-small cursive'
Pass Property font value 'italic small-caps condensed normal medium/normal fantasy'
Pass Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace'
@ -145,7 +145,7 @@ Pass Property font value 'italic bold larger/calc(120% + 1.2em) Menu'
Pass Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"'
Fail Property font value 'italic lighter normal normal 10px/normal serif'
Pass Property font value 'italic 100 normal small-caps 20%/1.2 sans-serif'
Fail Property font value 'italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive'
Pass Property font value 'italic 900 normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) cursive'
Pass Property font value 'italic bold small-caps xx-small fantasy'
Pass Property font value 'italic bolder small-caps normal medium/normal monospace'
Fail Property font value 'italic lighter small-caps expanded xx-large/1.2 Menu'
@ -153,7 +153,7 @@ Pass Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "N
Pass Property font value 'italic 900 ultra-expanded normal smaller serif'
Pass Property font value 'italic bold ultra-condensed small-caps 10px/normal sans-serif'
Pass Property font value 'italic extra-condensed 20%/1.2 cursive'
Fail Property font value 'italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'italic condensed normal calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'italic semi-condensed normal normal xx-small monospace'
Pass Property font value 'italic semi-expanded normal small-caps medium/normal Menu'
Pass Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"'
@ -161,7 +161,7 @@ Pass Property font value 'italic extra-expanded small-caps larger/calc(120% + 1.
Pass Property font value 'italic ultra-expanded small-caps normal smaller sans-serif'
Fail Property font value 'italic ultra-condensed small-caps lighter 10px/normal cursive'
Pass Property font value 'italic extra-condensed 100 20%/1.2 fantasy'
Fail Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'italic semi-condensed bold small-caps xx-small Menu'
Pass Property font value 'small-caps medium/normal "Non-Generic Example Family Name"'
Pass Property font value 'small-caps normal xx-large/1.2 serif'
@ -169,7 +169,7 @@ Pass Property font value 'small-caps normal normal larger/calc(120% + 1.2em) san
Pass Property font value 'small-caps normal normal normal smaller cursive'
Pass Property font value 'small-caps normal normal italic 10px/normal fantasy'
Pass Property font value 'small-caps normal normal bolder 20%/1.2 monospace'
Fail Property font value 'small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'small-caps normal normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'small-caps normal italic xx-small "Non-Generic Example Family Name"'
Pass Property font value 'small-caps normal italic normal medium/normal serif'
Fail Property font value 'small-caps normal italic lighter xx-large/1.2 sans-serif'
@ -177,7 +177,7 @@ Pass Property font value 'small-caps normal italic expanded larger/calc(120% + 1
Pass Property font value 'small-caps normal 100 smaller fantasy'
Pass Property font value 'small-caps normal 900 normal 10px/normal monospace'
Pass Property font value 'small-caps normal bold italic 20%/1.2 Menu'
Fail Property font value 'small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Pass Property font value 'small-caps normal bolder extra-expanded calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Pass Property font value 'small-caps normal ultra-expanded xx-small serif'
Pass Property font value 'small-caps normal ultra-condensed normal medium/normal sans-serif'
Pass Property font value 'small-caps normal extra-condensed italic xx-large/1.2 cursive'
@ -185,7 +185,7 @@ Fail Property font value 'small-caps normal condensed lighter larger/calc(120% +
Pass Property font value 'small-caps italic smaller monospace'
Pass Property font value 'small-caps italic normal 10px/normal Menu'
Pass Property font value 'small-caps italic normal normal 20%/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'small-caps italic normal 100 calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'small-caps italic normal semi-condensed xx-small sans-serif'
Pass Property font value 'small-caps italic 900 medium/normal cursive'
Pass Property font value 'small-caps italic bold normal xx-large/1.2 fantasy'
@ -193,7 +193,7 @@ Pass Property font value 'small-caps italic bolder semi-expanded larger/calc(120
Pass Property font value 'small-caps italic expanded smaller Menu'
Pass Property font value 'small-caps italic extra-expanded normal 10px/normal "Non-Generic Example Family Name"'
Fail Property font value 'small-caps italic ultra-expanded lighter 20%/1.2 serif'
Fail Property font value 'small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'small-caps 900 normal xx-small cursive'
Pass Property font value 'small-caps bold normal normal medium/normal fantasy'
Pass Property font value 'small-caps bolder normal italic xx-large/1.2 monospace'
@ -201,7 +201,7 @@ Fail Property font value 'small-caps lighter normal ultra-condensed larger/calc(
Pass Property font value 'small-caps 100 italic smaller "Non-Generic Example Family Name"'
Pass Property font value 'small-caps 900 italic normal 10px/normal serif'
Pass Property font value 'small-caps bold italic extra-condensed 20%/1.2 sans-serif'
Fail Property font value 'small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive'
Pass Property font value 'small-caps bolder condensed calc(30% - 40px)/calc(120% + 1.2em) cursive'
Fail Property font value 'small-caps lighter semi-condensed normal xx-small fantasy'
Pass Property font value 'small-caps 100 semi-expanded italic medium/normal monospace'
Pass Property font value 'small-caps expanded xx-large/1.2 Menu'
@ -209,7 +209,7 @@ Pass Property font value 'small-caps extra-expanded normal larger/calc(120% + 1.
Pass Property font value 'small-caps ultra-expanded normal normal smaller serif'
Pass Property font value 'small-caps ultra-condensed normal italic 10px/normal sans-serif'
Pass Property font value 'small-caps extra-condensed normal 900 20%/1.2 cursive'
Fail Property font value 'small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'small-caps condensed italic calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'small-caps semi-condensed italic normal xx-small monospace'
Pass Property font value 'small-caps semi-expanded italic bold medium/normal Menu'
Pass Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"'
@ -217,7 +217,7 @@ Fail Property font value 'small-caps extra-expanded lighter normal larger/calc(1
Pass Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif'
Pass Property font value '900 10px/normal cursive'
Pass Property font value 'bold normal 20%/1.2 fantasy'
Fail Property font value 'bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'bolder normal normal calc(30% - 40px)/calc(120% + 1.2em) monospace'
Fail Property font value 'lighter normal normal normal xx-small Menu'
Pass Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"'
Pass Property font value '900 normal normal small-caps xx-large/1.2 serif'
@ -225,7 +225,7 @@ Pass Property font value 'bold normal normal ultra-condensed larger/calc(120% +
Pass Property font value 'bolder normal italic smaller cursive'
Fail Property font value 'lighter normal italic normal 10px/normal fantasy'
Pass Property font value '100 normal italic small-caps 20%/1.2 monospace'
Fail Property font value '900 normal italic extra-condensed calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value '900 normal italic extra-condensed calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'bold normal small-caps xx-small "Non-Generic Example Family Name"'
Pass Property font value 'bolder normal small-caps normal medium/normal serif'
Fail Property font value 'lighter normal small-caps italic xx-large/1.2 sans-serif'
@ -241,7 +241,7 @@ Pass Property font value 'bolder italic normal small-caps larger/calc(120% + 1.2
Fail Property font value 'lighter italic normal ultra-expanded smaller monospace'
Pass Property font value '100 italic small-caps 10px/normal Menu'
Pass Property font value '900 italic small-caps normal 20%/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'bold italic small-caps ultra-condensed calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'bolder italic extra-condensed xx-small sans-serif'
Fail Property font value 'lighter italic condensed normal medium/normal cursive'
Pass Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy'
@ -249,7 +249,7 @@ Pass Property font value '900 small-caps larger/calc(120% + 1.2em) monospace'
Pass Property font value 'bold small-caps normal smaller Menu'
Pass Property font value 'bolder small-caps normal normal 10px/normal "Non-Generic Example Family Name"'
Fail Property font value 'lighter small-caps normal italic 20%/1.2 serif'
Fail Property font value '100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value '100 small-caps normal semi-expanded calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value '900 small-caps italic xx-small cursive'
Pass Property font value 'bold small-caps italic normal medium/normal fantasy'
Pass Property font value 'bolder small-caps italic expanded xx-large/1.2 monospace'
@ -257,7 +257,7 @@ Fail Property font value 'lighter small-caps extra-expanded larger/calc(120% + 1
Pass Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"'
Pass Property font value '900 small-caps ultra-condensed italic 10px/normal serif'
Pass Property font value 'bold extra-condensed 20%/1.2 sans-serif'
Fail Property font value 'bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive'
Pass Property font value 'bolder condensed normal calc(30% - 40px)/calc(120% + 1.2em) cursive'
Fail Property font value 'lighter semi-condensed normal normal xx-small fantasy'
Pass Property font value '100 semi-expanded normal italic medium/normal monospace'
Pass Property font value '900 expanded normal small-caps xx-large/1.2 Menu'
@ -265,7 +265,7 @@ Pass Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "
Pass Property font value 'bolder ultra-expanded italic normal smaller serif'
Fail Property font value 'lighter ultra-condensed italic small-caps 10px/normal sans-serif'
Pass Property font value '100 extra-condensed small-caps 20%/1.2 cursive'
Fail Property font value '900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value '900 condensed small-caps normal calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Pass Property font value 'bold semi-condensed small-caps italic xx-small monospace'
Pass Property font value 'semi-expanded medium/normal Menu'
Pass Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"'
@ -273,7 +273,7 @@ Pass Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em)
Pass Property font value 'ultra-expanded normal normal normal smaller sans-serif'
Pass Property font value 'ultra-condensed normal normal italic 10px/normal cursive'
Pass Property font value 'extra-condensed normal normal small-caps 20%/1.2 fantasy'
Fail Property font value 'condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'condensed normal normal bolder calc(30% - 40px)/calc(120% + 1.2em) monospace'
Pass Property font value 'semi-condensed normal italic xx-small Menu'
Pass Property font value 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"'
Pass Property font value 'expanded normal italic small-caps xx-large/1.2 serif'
@ -281,7 +281,7 @@ Fail Property font value 'extra-expanded normal italic lighter larger/calc(120%
Pass Property font value 'ultra-expanded normal small-caps smaller cursive'
Pass Property font value 'ultra-condensed normal small-caps normal 10px/normal fantasy'
Pass Property font value 'extra-condensed normal small-caps italic 20%/1.2 monospace'
Fail Property font value 'condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'condensed normal small-caps 100 calc(30% - 40px)/calc(120% + 1.2em) Menu'
Pass Property font value 'semi-condensed normal 900 xx-small "Non-Generic Example Family Name"'
Pass Property font value 'semi-expanded normal bold normal medium/normal serif'
Pass Property font value 'expanded normal bolder italic xx-large/1.2 sans-serif'
@ -289,7 +289,7 @@ Fail Property font value 'extra-expanded normal lighter small-caps larger/calc(1
Pass Property font value 'ultra-expanded italic smaller fantasy'
Pass Property font value 'ultra-condensed italic normal 10px/normal monospace'
Pass Property font value 'extra-condensed italic normal normal 20%/1.2 Menu'
Fail Property font value 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Pass Property font value 'condensed italic normal small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Pass Property font value 'semi-condensed italic normal 100 xx-small serif'
Pass Property font value 'semi-expanded italic small-caps medium/normal sans-serif'
Pass Property font value 'expanded italic small-caps normal xx-large/1.2 cursive'
@ -297,7 +297,7 @@ Pass Property font value 'extra-expanded italic small-caps 900 larger/calc(120%
Pass Property font value 'ultra-expanded italic bold smaller monospace'
Pass Property font value 'ultra-condensed italic bolder normal 10px/normal Menu'
Fail Property font value 'extra-condensed italic lighter small-caps 20%/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'condensed small-caps calc(30% - 40px)/calc(120% + 1.2em) serif'
Pass Property font value 'semi-condensed small-caps normal xx-small sans-serif'
Pass Property font value 'semi-expanded small-caps normal normal medium/normal cursive'
Pass Property font value 'expanded small-caps normal italic xx-large/1.2 fantasy'
@ -305,7 +305,7 @@ Pass Property font value 'extra-expanded small-caps normal 100 larger/calc(120%
Pass Property font value 'ultra-expanded small-caps italic smaller Menu'
Pass Property font value 'ultra-condensed small-caps italic normal 10px/normal "Non-Generic Example Family Name"'
Pass Property font value 'extra-condensed small-caps italic 900 20%/1.2 serif'
Fail Property font value 'condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'condensed small-caps bold calc(30% - 40px)/calc(120% + 1.2em) sans-serif'
Pass Property font value 'semi-condensed small-caps bolder normal xx-small cursive'
Fail Property font value 'semi-expanded small-caps lighter italic medium/normal fantasy'
Pass Property font value 'expanded 100 xx-large/1.2 monospace'
@ -313,7 +313,7 @@ Pass Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Me
Pass Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"'
Pass Property font value 'ultra-condensed bolder normal italic 10px/normal serif'
Fail Property font value 'extra-condensed lighter normal small-caps 20%/1.2 sans-serif'
Fail Property font value 'condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive'
Pass Property font value 'condensed 100 italic calc(30% - 40px)/calc(120% + 1.2em) cursive'
Pass Property font value 'semi-condensed 900 italic normal xx-small fantasy'
Pass Property font value 'semi-expanded bold italic small-caps medium/normal monospace'
Pass Property font value 'expanded bolder small-caps xx-large/1.2 Menu'

View file

@ -2,8 +2,7 @@ Harness status: OK
Found 21 tests
19 Pass
2 Fail
21 Pass
Pass xx-small <= x-small
Pass x-small <= small
Pass small <= medium
@ -15,9 +14,9 @@ Pass inherit <= larger
Pass smaller <= inherit
Pass Property font-size value '10px'
Pass Property font-size value '20%'
Fail Property font-size value 'calc(30% - 40px)'
Pass Property font-size value 'calc(30% - 40px)'
Pass Property font-size value 'calc(30% + 40px)'
Fail Property font-size value 'calc(10px - 0.5em)'
Pass Property font-size value 'calc(10px - 0.5em)'
Pass Property font-size value 'calc(10px + 0.5em)'
Pass <font size="2"> is font-size: small
Pass <font size="3"> is font-size: medium

View file

@ -0,0 +1,103 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>font-size interpolation</title>
<link rel="help" href="https://drafts.csswg.org/css-fonts-3/#propdef-font-size">
<meta name="assert" content="font-size supports animation as length">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../css/support/interpolation-testcommon.js"></script>
<style>
.parent {
font-size: 30px;
}
.target {
display: inline-block;
font: 10px sans-serif;
}
.expected {
color: green;
margin-right: 30px;
}
</style>
<body>
<template id="target-template">
<span>
<div class="target">Test Text</div>
</span>
</template>
</body>
<script>
test_interpolation({
property: 'font-size',
from: neutralKeyframe,
to: '20px',
}, [
{at: -2, expect: '0px'},
{at: -0.3, expect: '7px'},
{at: 0, expect: '10px'},
{at: 0.3, expect: '13px'},
{at: 0.6, expect: '16px'},
{at: 1, expect: '20px'},
{at: 1.5, expect: '25px'},
]);
test_interpolation({
property: 'font-size',
from: 'initial',
to: '20px',
}, [
{at: -2, expect: '8px'},
{at: -0.3, expect: '14.8px'},
{at: 0, expect: '16px'},
{at: 0.3, expect: '17.2px'},
{at: 0.6, expect: '18.4px'},
{at: 1, expect: '20px'},
{at: 1.5, expect: '22px'},
]);
test_interpolation({
property: 'font-size',
from: 'inherit',
to: '20px',
}, [
{at: -2, expect: '50px'},
{at: -0.3, expect: '33px'},
{at: 0, expect: '30px'},
{at: 0.3, expect: '27px'},
{at: 0.6, expect: '24px'},
{at: 1, expect: '20px'},
{at: 1.5, expect: '15px'},
]);
test_interpolation({
property: 'font-size',
from: 'unset',
to: '20px',
}, [
{at: -2, expect: '50px'},
{at: -0.3, expect: '33px'},
{at: 0, expect: '30px'},
{at: 0.3, expect: '27px'},
{at: 0.6, expect: '24px'},
{at: 1, expect: '20px'},
{at: 1.5, expect: '15px'},
]);
test_interpolation({
property: 'font-size',
from: '4px',
to: '14px'
}, [
{at: -2, expect: '0px'}, // CSS font-size can't be negative.
{at: -0.3, expect: '1px'},
{at: 0, expect: '4px'},
{at: 0.3, expect: '7px'},
{at: 0.6, expect: '10px'},
{at: 1, expect: '14px'},
{at: 1.5, expect: '19px'},
]);
</script>

View file

@ -0,0 +1,49 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>font-size interpolation</title>
<link rel="help" href="https://drafts.csswg.org/css-fonts-3/#propdef-font-size">
<meta name="assert" content="font-size supports animation as length">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../css/support/interpolation-testcommon.js"></script>
<style>
.container {
font-size: 10px;
}
.target {
display: inline-block;
font: 100px sans-serif;
font-size: 20px;
}
.expected {
color: green;
margin-right: 30px;
}
</style>
<body>
<template id="target-template">
<span class="container">
<div class="target">TT</div>
</span>
</template>
</body>
<script>
// Test the 'unset' case.
test_interpolation({
property: 'font-size',
from: 'unset',
to: '20px'
}, [
{at: -2, expect: '0px'}, // CSS font-size can't be negative.
{at: -0.3, expect: '7px'},
{at: 0, expect: '10px'},
{at: 0.3, expect: '13px'},
{at: 0.6, expect: '16px'},
{at: 1, expect: '20px'},
{at: 1.5, expect: '25px'},
]);
</script>

View file

@ -0,0 +1,47 @@
<!DOCTYPE html>
<meta charset="UTF-8">
<title>font-size interpolation with zoom</title>
<link rel="help" href="https://drafts.csswg.org/css-fonts-3/#propdef-font-size">
<meta name="assert" content="font-size supports animation as a length, respecting zoom">
<script src="../../../resources/testharness.js"></script>
<script src="../../../resources/testharnessreport.js"></script>
<script src="../../../css/support/interpolation-testcommon.js"></script>
<style>
.container {
zoom: 2;
}
.target {
display: inline-block;
}
.expected {
color: green;
margin-right: 30px;
}
</style>
<body>
<template id="target-template">
<span class="container">
<div class="target">TT</div>
</span>
</template>
</body>
<script>
// The container has zoom: 2 applied to it.
test_interpolation({
property: 'font-size',
from: '10px',
to: '20px'
}, [
{at: -2, expect: '0px'}, // CSS font-size can't be negative.
{at: -0.3, expect: '7px'},
{at: 0, expect: '10px'},
{at: 0.3, expect: '13px'},
{at: 0.6, expect: '16px'},
{at: 1, expect: '20px'},
{at: 1.5, expect: '25px'},
]);
</script>