LibWeb/CSS: Serialize font property more correctly

Anything that's default shouldn't be included.
This commit is contained in:
Sam Atkins 2025-02-05 16:29:59 +00:00
parent 106239ce98
commit 006c8ba2d4
Notes: github-actions[bot] 2025-02-12 16:02:19 +00:00
3 changed files with 148 additions and 126 deletions

View file

@ -1,11 +1,12 @@
/*
* Copyright (c) 2023, Ali Mohammad Pur <mpfard@serenityos.org>
* Copyright (c) 2023, Sam Atkins <atkinssj@serenityos.org>
* Copyright (c) 2023-2025, Sam Atkins <sam@ladybird.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "ShorthandStyleValue.h"
#include <LibGfx/Font/FontWeight.h>
#include <LibWeb/CSS/PropertyID.h>
#include <LibWeb/CSS/StyleValues/BorderRadiusStyleValue.h>
#include <LibWeb/CSS/StyleValues/CSSKeywordValue.h>
@ -165,15 +166,36 @@ String ShorthandStyleValue::to_string(SerializationMode mode) const
return MUST(String::formatted("{} {} {}", longhand(PropertyID::FlexGrow)->to_string(mode), longhand(PropertyID::FlexShrink)->to_string(mode), longhand(PropertyID::FlexBasis)->to_string(mode)));
case PropertyID::FlexFlow:
return MUST(String::formatted("{} {}", longhand(PropertyID::FlexDirection)->to_string(mode), longhand(PropertyID::FlexWrap)->to_string(mode)));
case PropertyID::Font:
return MUST(String::formatted("{} {} {} {} {} / {} {}",
longhand(PropertyID::FontStyle)->to_string(mode),
longhand(PropertyID::FontVariant)->to_string(mode),
longhand(PropertyID::FontWeight)->to_string(mode),
longhand(PropertyID::FontWidth)->to_string(mode),
longhand(PropertyID::FontSize)->to_string(mode),
longhand(PropertyID::LineHeight)->to_string(mode),
longhand(PropertyID::FontFamily)->to_string(mode)));
case PropertyID::Font: {
auto font_style = longhand(PropertyID::FontStyle);
auto font_variant = longhand(PropertyID::FontVariant);
auto font_weight = longhand(PropertyID::FontWeight);
auto font_width = longhand(PropertyID::FontWidth);
auto font_size = longhand(PropertyID::FontSize);
auto line_height = longhand(PropertyID::LineHeight);
auto font_family = longhand(PropertyID::FontFamily);
StringBuilder builder;
auto append = [&](auto const& string) {
if (!builder.is_empty())
builder.append(' ');
builder.append(string);
};
if (font_style->to_keyword() != Keyword::Normal && font_style->to_keyword() != Keyword::Initial)
append(font_style->to_string(mode));
if (auto variant_string = font_variant->to_string(mode); variant_string != "normal"sv && variant_string != "initial"sv)
append(variant_string);
if (font_weight->to_font_weight() != Gfx::FontWeight::Regular && font_weight->to_keyword() != Keyword::Initial)
append(font_weight->to_string(mode));
if (font_width->to_keyword() != Keyword::Normal && font_width->to_keyword() != Keyword::Initial)
append(font_width->to_string(mode));
append(font_size->to_string(mode));
if (line_height->to_keyword() != Keyword::Normal && line_height->to_keyword() != Keyword::Initial)
append(MUST(String::formatted("/ {}", line_height->to_string(mode))));
append(font_family->to_string(mode));
return builder.to_string_without_validation();
}
case PropertyID::FontVariant: {
Vector<StringView> values;
auto ligatures_or_null = longhand(PropertyID::FontVariantLigatures)->to_font_variant_ligatures();

View file

@ -298,7 +298,7 @@ All supported properties and their default values exposed from CSSStyleDeclarati
'flexWrap': 'nowrap'
'flex-wrap': 'nowrap'
'float': 'none'
'font': 'normal normal 400 normal 16px / normal serif'
'font': '16px serif'
'fontFamily': 'serif'
'font-family': 'serif'
'fontFeatureSettings': 'normal'

View file

@ -2,61 +2,61 @@ Harness status: OK
Found 315 tests
6 Pass
309 Fail
119 Pass
196 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.
Pass message-box should be a supported system font.
Pass small-caption should be a supported system font.
Pass status-bar should be a supported system font.
Fail Property font value 'xx-small serif'
Fail Property font value 'normal medium/normal sans-serif'
Fail Property font value 'normal normal xx-large/1.2 cursive'
Fail Property font value 'normal normal normal larger/calc(120% + 1.2em) fantasy'
Fail Property font value 'normal normal normal normal smaller monospace'
Fail Property font value 'normal normal normal italic 10px/normal Menu'
Pass Property font value 'xx-small serif'
Pass Property font value 'normal medium/normal sans-serif'
Pass Property font value 'normal normal xx-large/1.2 cursive'
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'
Fail 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'
Fail Property font value 'normal normal normal ultra-condensed xx-small sans-serif'
Fail Property font value 'normal normal italic medium/normal cursive'
Fail Property font value 'normal normal italic normal xx-large/1.2 fantasy'
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'
Fail Property font value 'normal normal italic small-caps larger/calc(120% + 1.2em) monospace'
Fail Property font value 'normal normal italic bolder smaller Menu'
Fail Property font value 'normal normal italic extra-condensed 10px/normal "Non-Generic Example Family Name"'
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"'
Fail 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'
Fail Property font value 'normal normal small-caps italic xx-small cursive'
Fail Property font value 'normal normal small-caps lighter medium/normal fantasy'
Fail Property font value 'normal normal small-caps condensed xx-large/1.2 monospace'
Fail Property font value 'normal normal 100 larger/calc(120% + 1.2em) Menu'
Fail Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"'
Fail Property font value 'normal normal bold italic 10px/normal serif'
Pass Property font value 'normal normal 100 larger/calc(120% + 1.2em) Menu'
Pass Property font value 'normal normal 900 normal smaller "Non-Generic Example Family Name"'
Pass Property font value 'normal normal bold italic 10px/normal serif'
Fail Property font value 'normal normal bolder small-caps 20%/1.2 sans-serif'
Fail Property font value 'normal normal lighter semi-condensed calc(30% - 40px)/calc(120% + 1.2em) cursive'
Fail Property font value 'normal normal semi-expanded xx-small fantasy'
Fail Property font value 'normal normal expanded normal medium/normal monospace'
Fail Property font value 'normal normal extra-expanded italic xx-large/1.2 Menu'
Pass Property font value 'normal normal semi-expanded xx-small fantasy'
Pass Property font value 'normal normal expanded normal medium/normal monospace'
Pass Property font value 'normal normal extra-expanded italic xx-large/1.2 Menu'
Fail Property font value 'normal normal ultra-expanded small-caps larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Fail Property font value 'normal normal ultra-condensed 100 smaller serif'
Fail Property font value 'normal italic 10px/normal sans-serif'
Fail 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 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'
Pass Property font value 'normal italic normal normal calc(30% - 40px)/calc(120% + 1.2em) fantasy'
Fail Property font value 'normal italic normal small-caps xx-small monospace'
Fail Property font value 'normal italic normal 900 medium/normal Menu'
Fail Property font value 'normal italic normal extra-condensed xx-large/1.2 "Non-Generic Example Family Name"'
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"'
Fail Property font value 'normal italic small-caps larger/calc(120% + 1.2em) serif'
Fail Property font value 'normal italic small-caps normal smaller sans-serif'
Fail Property font value 'normal italic small-caps bold 10px/normal cursive'
Fail 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'
Fail Property font value 'normal italic 100 small-caps medium/normal "Non-Generic Example Family Name"'
Fail Property font value 'normal italic 900 semi-condensed xx-large/1.2 serif'
Fail Property font value 'normal italic semi-expanded larger/calc(120% + 1.2em) sans-serif'
Fail Property font value 'normal italic expanded normal smaller cursive'
Pass Property font value 'normal italic 900 semi-condensed xx-large/1.2 serif'
Pass Property font value 'normal italic semi-expanded larger/calc(120% + 1.2em) sans-serif'
Pass Property font value 'normal italic expanded normal smaller cursive'
Fail Property font value 'normal italic extra-expanded small-caps 10px/normal fantasy'
Fail Property font value 'normal italic ultra-expanded bold 20%/1.2 monospace'
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'
Fail Property font value 'normal small-caps normal xx-small "Non-Generic Example Family Name"'
Fail Property font value 'normal small-caps normal normal medium/normal serif'
@ -75,14 +75,14 @@ Fail Property font value 'normal small-caps semi-condensed 10px/normal Menu'
Fail 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'
Fail Property font value 'normal small-caps extra-expanded lighter xx-small sans-serif'
Fail Property font value 'normal 100 medium/normal cursive'
Fail Property font value 'normal 900 normal xx-large/1.2 fantasy'
Fail Property font value 'normal bold normal normal larger/calc(120% + 1.2em) monospace'
Fail Property font value 'normal bolder normal italic smaller Menu'
Pass Property font value 'normal 100 medium/normal cursive'
Pass Property font value 'normal 900 normal xx-large/1.2 fantasy'
Pass Property font value 'normal bold normal normal larger/calc(120% + 1.2em) monospace'
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"'
Fail 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'
Fail Property font value 'normal bold italic normal xx-small cursive'
Pass Property font value 'normal 100 normal ultra-expanded 20%/1.2 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'
Fail 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'
Fail Property font value 'normal 100 small-caps larger/calc(120% + 1.2em) Menu'
@ -90,46 +90,46 @@ Fail Property font value 'normal 900 small-caps normal smaller "Non-Generic Exam
Fail Property font value 'normal bold small-caps italic 10px/normal serif'
Fail Property font value 'normal bolder small-caps extra-condensed 20%/1.2 sans-serif'
Fail Property font value 'normal lighter condensed calc(30% - 40px)/calc(120% + 1.2em) cursive'
Fail Property font value 'normal 100 semi-condensed normal xx-small fantasy'
Fail Property font value 'normal 900 semi-expanded italic medium/normal monospace'
Pass Property font value 'normal 100 semi-condensed normal xx-small fantasy'
Pass Property font value 'normal 900 semi-expanded italic medium/normal monospace'
Fail Property font value 'normal bold expanded small-caps xx-large/1.2 Menu'
Fail Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Fail Property font value 'normal ultra-expanded normal smaller serif'
Fail Property font value 'normal ultra-condensed normal normal 10px/normal sans-serif'
Fail Property font value 'normal extra-condensed normal italic 20%/1.2 cursive'
Pass Property font value 'normal extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'
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'
Fail Property font value 'normal semi-condensed normal bolder xx-small monospace'
Fail Property font value 'normal semi-expanded italic medium/normal Menu'
Fail Property font value 'normal expanded italic normal xx-large/1.2 "Non-Generic Example Family Name"'
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"'
Fail Property font value 'normal extra-expanded italic small-caps larger/calc(120% + 1.2em) serif'
Fail Property font value 'normal ultra-expanded italic lighter smaller sans-serif'
Fail Property font value 'normal ultra-condensed small-caps 10px/normal cursive'
Fail 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'
Fail Property font value 'normal semi-condensed small-caps 100 xx-small Menu'
Fail Property font value 'normal semi-expanded 900 medium/normal "Non-Generic Example Family Name"'
Fail Property font value 'normal expanded bold normal xx-large/1.2 serif'
Fail Property font value 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif'
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'
Pass Property font value 'normal extra-expanded bolder italic larger/calc(120% + 1.2em) sans-serif'
Fail Property font value 'normal ultra-expanded lighter small-caps smaller cursive'
Fail Property font value 'italic 10px/normal fantasy'
Fail Property font value 'italic normal 20%/1.2 monospace'
Fail Property font value 'italic normal normal calc(30% - 40px)/calc(120% + 1.2em) Menu'
Fail Property font value 'italic normal normal normal xx-small "Non-Generic Example Family Name"'
Pass Property font value 'italic 10px/normal fantasy'
Pass Property font value 'italic normal 20%/1.2 monospace'
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"'
Fail Property font value 'italic normal normal small-caps medium/normal serif'
Fail Property font value 'italic normal normal 100 xx-large/1.2 sans-serif'
Fail Property font value 'italic normal normal ultra-condensed larger/calc(120% + 1.2em) cursive'
Pass Property font value 'italic normal normal 100 xx-large/1.2 sans-serif'
Pass Property font value 'italic normal normal ultra-condensed larger/calc(120% + 1.2em) cursive'
Fail Property font value 'italic normal small-caps smaller fantasy'
Fail Property font value 'italic normal small-caps normal 10px/normal monospace'
Fail 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"'
Fail Property font value 'italic normal bold xx-small serif'
Fail Property font value 'italic normal bolder normal medium/normal sans-serif'
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'
Fail Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em) fantasy'
Fail Property font value 'italic normal semi-condensed smaller monospace'
Fail Property font value 'italic normal semi-expanded normal 10px/normal Menu'
Pass Property font value 'italic normal 100 condensed larger/calc(120% + 1.2em) fantasy'
Pass Property font value 'italic normal semi-condensed smaller monospace'
Pass Property font value 'italic normal semi-expanded normal 10px/normal Menu'
Fail 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'
Fail Property font value 'italic small-caps xx-small sans-serif'
Fail Property font value 'italic small-caps normal medium/normal cursive'
Fail Property font value 'italic small-caps normal normal xx-large/1.2 fantasy'
@ -141,27 +141,27 @@ Fail Property font value 'italic small-caps 100 ultra-condensed calc(30% - 40px)
Fail Property font value 'italic small-caps extra-condensed xx-small cursive'
Fail Property font value 'italic small-caps condensed normal medium/normal fantasy'
Fail Property font value 'italic small-caps semi-condensed 900 xx-large/1.2 monospace'
Fail Property font value 'italic bold larger/calc(120% + 1.2em) Menu'
Fail Property font value 'italic bolder normal smaller "Non-Generic Example Family Name"'
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'
Fail 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'
Fail Property font value 'italic bold small-caps xx-small fantasy'
Fail 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'
Fail Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Fail Property font value 'italic 900 ultra-expanded normal smaller serif'
Pass Property font value 'italic 100 extra-expanded larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Pass Property font value 'italic 900 ultra-expanded normal smaller serif'
Fail Property font value 'italic bold ultra-condensed small-caps 10px/normal sans-serif'
Fail 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'
Fail Property font value 'italic semi-condensed normal normal xx-small monospace'
Pass Property font value 'italic extra-condensed 20%/1.2 cursive'
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'
Fail Property font value 'italic semi-expanded normal small-caps medium/normal Menu'
Fail Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"'
Pass Property font value 'italic expanded normal bolder xx-large/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'italic extra-expanded small-caps larger/calc(120% + 1.2em) serif'
Fail 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'
Fail 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 extra-condensed 100 20%/1.2 fantasy'
Pass Property font value 'italic condensed 900 normal calc(30% - 40px)/calc(120% + 1.2em) monospace'
Fail Property font value 'italic semi-condensed bold small-caps xx-small Menu'
Fail Property font value 'small-caps medium/normal "Non-Generic Example Family Name"'
Fail Property font value 'small-caps normal xx-large/1.2 serif'
@ -215,34 +215,34 @@ Fail Property font value 'small-caps semi-expanded italic bold medium/normal Men
Fail Property font value 'small-caps expanded bolder xx-large/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'small-caps extra-expanded lighter normal larger/calc(120% + 1.2em) serif'
Fail Property font value 'small-caps ultra-expanded 100 italic smaller sans-serif'
Fail Property font value '900 10px/normal cursive'
Fail 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 '900 10px/normal cursive'
Pass Property font value 'bold normal 20%/1.2 fantasy'
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'
Fail Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"'
Pass Property font value '100 normal normal italic medium/normal "Non-Generic Example Family Name"'
Fail Property font value '900 normal normal small-caps xx-large/1.2 serif'
Fail Property font value 'bold normal normal ultra-condensed larger/calc(120% + 1.2em) sans-serif'
Fail Property font value 'bolder normal italic smaller cursive'
Pass Property font value 'bold normal normal ultra-condensed larger/calc(120% + 1.2em) sans-serif'
Pass Property font value 'bolder normal italic smaller cursive'
Fail Property font value 'lighter normal italic normal 10px/normal fantasy'
Fail 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'
Fail Property font value 'bold normal small-caps xx-small "Non-Generic Example Family Name"'
Fail 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'
Fail Property font value '100 normal small-caps condensed larger/calc(120% + 1.2em) cursive'
Fail Property font value '900 normal semi-condensed smaller fantasy'
Fail Property font value 'bold normal semi-expanded normal 10px/normal monospace'
Fail Property font value 'bolder normal expanded italic 20%/1.2 Menu'
Pass Property font value '900 normal semi-condensed smaller fantasy'
Pass Property font value 'bold normal semi-expanded normal 10px/normal monospace'
Pass Property font value 'bolder normal expanded italic 20%/1.2 Menu'
Fail Property font value 'lighter normal extra-expanded small-caps calc(30% - 40px)/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Fail Property font value '100 italic xx-small serif'
Fail Property font value '900 italic normal medium/normal sans-serif'
Fail Property font value 'bold italic normal normal xx-large/1.2 cursive'
Pass Property font value '100 italic xx-small serif'
Pass Property font value '900 italic normal medium/normal sans-serif'
Pass Property font value 'bold italic normal normal xx-large/1.2 cursive'
Fail Property font value 'bolder italic normal small-caps larger/calc(120% + 1.2em) fantasy'
Fail Property font value 'lighter italic normal ultra-expanded smaller monospace'
Fail Property font value '100 italic small-caps 10px/normal Menu'
Fail 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'
Fail Property font value 'bolder italic extra-condensed xx-small sans-serif'
Pass Property font value 'bolder italic extra-condensed xx-small sans-serif'
Fail Property font value 'lighter italic condensed normal medium/normal cursive'
Fail Property font value '100 italic semi-condensed small-caps xx-large/1.2 fantasy'
Fail Property font value '900 small-caps larger/calc(120% + 1.2em) monospace'
@ -256,46 +256,46 @@ Fail Property font value 'bolder small-caps italic expanded xx-large/1.2 monospa
Fail Property font value 'lighter small-caps extra-expanded larger/calc(120% + 1.2em) Menu'
Fail Property font value '100 small-caps ultra-expanded normal smaller "Non-Generic Example Family Name"'
Fail Property font value '900 small-caps ultra-condensed italic 10px/normal serif'
Fail 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 'bold extra-condensed 20%/1.2 sans-serif'
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'
Fail Property font value '100 semi-expanded normal italic medium/normal monospace'
Pass Property font value '100 semi-expanded normal italic medium/normal monospace'
Fail Property font value '900 expanded normal small-caps xx-large/1.2 Menu'
Fail Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'
Fail Property font value 'bolder ultra-expanded italic normal smaller serif'
Pass Property font value 'bold extra-expanded italic larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'
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'
Fail 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'
Fail Property font value 'bold semi-condensed small-caps italic xx-small monospace'
Fail Property font value 'semi-expanded medium/normal Menu'
Fail Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"'
Fail Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em) serif'
Fail Property font value 'ultra-expanded normal normal normal smaller sans-serif'
Fail Property font value 'ultra-condensed normal normal italic 10px/normal cursive'
Pass Property font value 'semi-expanded medium/normal Menu'
Pass Property font value 'expanded normal xx-large/1.2 "Non-Generic Example Family Name"'
Pass Property font value 'extra-expanded normal normal larger/calc(120% + 1.2em) serif'
Pass Property font value 'ultra-expanded normal normal normal smaller sans-serif'
Pass Property font value 'ultra-condensed normal normal italic 10px/normal cursive'
Fail 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'
Fail Property font value 'semi-condensed normal italic xx-small Menu'
Fail Property font value 'semi-expanded normal italic normal medium/normal "Non-Generic Example Family Name"'
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"'
Fail Property font value 'expanded normal italic small-caps xx-large/1.2 serif'
Fail Property font value 'extra-expanded normal italic lighter larger/calc(120% + 1.2em) sans-serif'
Fail Property font value 'ultra-expanded normal small-caps smaller cursive'
Fail Property font value 'ultra-condensed normal small-caps normal 10px/normal fantasy'
Fail 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'
Fail Property font value 'semi-condensed normal 900 xx-small "Non-Generic Example Family Name"'
Fail Property font value 'semi-expanded normal bold normal medium/normal serif'
Fail Property font value 'expanded normal bolder italic xx-large/1.2 sans-serif'
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'
Fail Property font value 'extra-expanded normal lighter small-caps larger/calc(120% + 1.2em) cursive'
Fail Property font value 'ultra-expanded italic smaller fantasy'
Fail Property font value 'ultra-condensed italic normal 10px/normal monospace'
Fail Property font value 'extra-condensed italic normal normal 20%/1.2 Menu'
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"'
Fail Property font value 'semi-condensed italic normal 100 xx-small serif'
Pass Property font value 'semi-condensed italic normal 100 xx-small serif'
Fail Property font value 'semi-expanded italic small-caps medium/normal sans-serif'
Fail Property font value 'expanded italic small-caps normal xx-large/1.2 cursive'
Fail Property font value 'extra-expanded italic small-caps 900 larger/calc(120% + 1.2em) fantasy'
Fail Property font value 'ultra-expanded italic bold smaller monospace'
Fail Property font value 'ultra-condensed italic bolder normal 10px/normal Menu'
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'
Fail Property font value 'semi-condensed small-caps normal xx-small sans-serif'
@ -308,13 +308,13 @@ Fail 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'
Fail 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'
Fail Property font value 'expanded 100 xx-large/1.2 monospace'
Fail Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Menu'
Fail Property font value 'ultra-expanded bold normal normal smaller "Non-Generic Example Family Name"'
Fail Property font value 'ultra-condensed bolder normal italic 10px/normal serif'
Pass Property font value 'expanded 100 xx-large/1.2 monospace'
Pass Property font value 'extra-expanded 900 normal larger/calc(120% + 1.2em) Menu'
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'
Fail Property font value 'semi-condensed 900 italic normal xx-small fantasy'
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'
Fail Property font value 'semi-expanded bold italic small-caps medium/normal monospace'
Fail Property font value 'expanded bolder small-caps xx-large/1.2 Menu'
Fail Property font value 'extra-expanded lighter small-caps normal larger/calc(120% + 1.2em) "Non-Generic Example Family Name"'