LibWeb/CSS: Support text-justify: distribute legacy value alias

...for `text-justify: inter-character`.

We previously had this mapped in Enums.json, but the behaviour is
different: `a=b` in Enums.json keeps `a` around but makes it behave the
same as `b`. A legacy name alias is instead expected to replace `a`
with `b`, so we have to do that separately.
This commit is contained in:
Sam Atkins 2025-07-17 10:50:35 +01:00
commit 11e2dbb555
Notes: github-actions[bot] 2025-07-21 09:05:50 +00:00
5 changed files with 35 additions and 2 deletions

View file

@ -638,8 +638,7 @@
"auto",
"none",
"inter-word",
"inter-character",
"distribute=inter-character"
"inter-character"
],
"text-overflow": [
"clip",

View file

@ -724,6 +724,17 @@ Parser::ParseErrorOr<NonnullRefPtr<CSSStyleValue const>> Parser::parse_css_value
if (auto parsed_value = parse_text_decoration_line_value(tokens); parsed_value && !tokens.has_next_token())
return parsed_value.release_nonnull();
return ParseError::SyntaxError;
case PropertyID::TextJustify:
if (auto parsed_value = parse_css_value_for_property(property_id, tokens); parsed_value && !tokens.has_next_token()) {
// https://drafts.csswg.org/css-text-3/#valdef-text-justify-distribute
// For legacy reasons, UAs must also support the alternate keyword distribute which must compute to
// inter-character, thus having the exact same meaning and behavior. UAs may treat this as a legacy value alias.
// FIXME: Figure out a generic way of supporting legacy value aliases.
if (parsed_value->to_keyword() == Keyword::Distribute)
return CSSKeywordValue::create(Keyword::InterCharacter);
return parsed_value.release_nonnull();
}
return ParseError::SyntaxError;
case PropertyID::TextShadow:
if (auto parsed_value = parse_shadow_value(tokens, AllowInsetKeyword::No); parsed_value && !tokens.has_next_token())
return parsed_value.release_nonnull();

View file

@ -3158,6 +3158,9 @@
"initial": "auto",
"valid-types": [
"text-justify"
],
"valid-identifiers": [
"distribute"
]
},
"text-overflow": {