LibWeb/CSS: Replace is_generic_font_family() with a CSS enum

Also add the missing "math" value to it.
This commit is contained in:
Sam Atkins 2025-02-04 15:39:06 +00:00
parent 6da7a6eab5
commit 0ac133d73b
Notes: github-actions[bot] 2025-02-06 16:49:09 +00:00
4 changed files with 14 additions and 20 deletions

View file

@ -301,6 +301,18 @@
"extra-expanded",
"ultra-expanded"
],
"generic-font-family": [
"serif",
"sans-serif",
"cursive",
"fantasy",
"monospace",
"math",
"ui-serif",
"ui-sans-serif",
"ui-monospace",
"ui-rounded"
],
"image-rendering": [
"auto",
"crisp-edges",

View file

@ -1504,24 +1504,6 @@ bool Parser::context_allows_quirky_length() const
return unitless_length_allowed;
}
bool Parser::is_generic_font_family(Keyword keyword)
{
switch (keyword) {
case Keyword::Cursive:
case Keyword::Fantasy:
case Keyword::Monospace:
case Keyword::Serif:
case Keyword::SansSerif:
case Keyword::UiMonospace:
case Keyword::UiRounded:
case Keyword::UiSerif:
case Keyword::UiSansSerif:
return true;
default:
return false;
}
}
Vector<ParsedFontFace::Source> Parser::parse_as_font_face_src()
{
return parse_font_face_src(m_token_stream);

View file

@ -2385,7 +2385,7 @@ RefPtr<CSSStyleValue> Parser::parse_font_family_value(TokenStream<ComponentValue
auto maybe_keyword = keyword_from_string(peek.token().ident());
// Can't have a generic-font-name as a token in an unquoted font name.
if (maybe_keyword.has_value() && is_generic_font_family(maybe_keyword.value())) {
if (maybe_keyword.has_value() && keyword_to_generic_font_family(maybe_keyword.value()).has_value()) {
if (!current_name_parts.is_empty())
return nullptr;
tokens.discard_a_token(); // Ident

View file

@ -796,7 +796,7 @@ GC::Ptr<CSSFontFaceRule> Parser::convert_to_font_face_rule(AtRule const& rule)
break;
}
auto keyword = keyword_from_string(part.token().ident());
if (keyword.has_value() && is_generic_font_family(keyword.value())) {
if (keyword.has_value() && keyword_to_generic_font_family(keyword.value()).has_value()) {
dbgln_if(CSS_PARSER_DEBUG, "CSSParser: @font-face font-family format invalid; discarding.");
had_syntax_error = true;
break;