mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2025-08-05 07:41:01 +00:00
LibWeb: Style font-variant-* css properties
This commit is contained in:
parent
aabbe87628
commit
1c42d6831b
Notes:
github-actions[bot]
2024-12-17 18:08:30 +00:00
Author: https://github.com/jdahlin
Commit: 1c42d6831b
Pull-request: https://github.com/LadybirdBrowser/ladybird/pull/2197
Reviewed-by: https://github.com/AtkinsSJ
Reviewed-by: https://github.com/gmta ✅
Reviewed-by: https://github.com/kalenikaliaksandr
Reviewed-by: https://github.com/tcl3
11 changed files with 659 additions and 203 deletions
|
@ -173,6 +173,102 @@ String ShorthandStyleValue::to_string(SerializationMode mode) const
|
|||
longhand(PropertyID::FontSize)->to_string(mode),
|
||||
longhand(PropertyID::LineHeight)->to_string(mode),
|
||||
longhand(PropertyID::FontFamily)->to_string(mode)));
|
||||
case PropertyID::FontVariant: {
|
||||
Vector<StringView> values;
|
||||
auto ligatures_or_null = longhand(PropertyID::FontVariantLigatures)->to_font_variant_ligatures();
|
||||
if (ligatures_or_null.has_value()) {
|
||||
auto ligatures = ligatures_or_null.release_value();
|
||||
if (ligatures.none) {
|
||||
return MUST(String::formatted(""sv));
|
||||
} else {
|
||||
if (ligatures.common == Gfx::FontVariantLigatures::Common::Common)
|
||||
values.append("common-ligatures"sv);
|
||||
else if (ligatures.common == Gfx::FontVariantLigatures::Common::NoCommon)
|
||||
values.append("no-common-ligatures"sv);
|
||||
if (ligatures.discretionary == Gfx::FontVariantLigatures::Discretionary::Discretionary)
|
||||
values.append("discretionary-ligatures"sv);
|
||||
else if (ligatures.discretionary == Gfx::FontVariantLigatures::Discretionary::NoDiscretionary)
|
||||
values.append("no-discretionary-ligatures"sv);
|
||||
if (ligatures.historical == Gfx::FontVariantLigatures::Historical::Historical)
|
||||
values.append("historical-ligatures"sv);
|
||||
else if (ligatures.historical == Gfx::FontVariantLigatures::Historical::NoHistorical)
|
||||
values.append("no-historical-ligatures"sv);
|
||||
if (ligatures.contextual == Gfx::FontVariantLigatures::Contextual::Contextual)
|
||||
values.append("contextual"sv);
|
||||
else if (ligatures.contextual == Gfx::FontVariantLigatures::Contextual::NoContextual)
|
||||
values.append("no-contextual"sv);
|
||||
}
|
||||
}
|
||||
|
||||
auto caps_or_null = longhand(PropertyID::FontVariantCaps)->to_font_variant_caps();
|
||||
if (caps_or_null.has_value() && caps_or_null.value() != CSS::FontVariantCaps::Normal) {
|
||||
values.append(CSS::to_string(caps_or_null.release_value()));
|
||||
}
|
||||
|
||||
auto emoji_or_null = longhand(PropertyID::FontVariantEmoji)->to_font_variant_emoji();
|
||||
if (emoji_or_null.has_value() && emoji_or_null.value() != CSS::FontVariantEmoji::Normal) {
|
||||
values.append(CSS::to_string(emoji_or_null.release_value()));
|
||||
}
|
||||
|
||||
auto alternates_or_null = longhand(PropertyID::FontVariantAlternates)->to_font_variant_alternates();
|
||||
if (alternates_or_null.has_value())
|
||||
values.append("historical-forms"sv);
|
||||
|
||||
auto numeric_or_null = longhand(PropertyID::FontVariantNumeric)->to_font_variant_numeric();
|
||||
if (numeric_or_null.has_value()) {
|
||||
auto numeric = numeric_or_null.release_value();
|
||||
if (numeric.ordinal)
|
||||
values.append("ordinal"sv);
|
||||
if (numeric.slashed_zero)
|
||||
values.append("slashed-zero"sv);
|
||||
if (numeric.figure == Gfx::FontVariantNumeric::Figure::Oldstyle)
|
||||
values.append("oldstyle-nums"sv);
|
||||
else if (numeric.figure == Gfx::FontVariantNumeric::Figure::Lining)
|
||||
values.append("lining-nums"sv);
|
||||
if (numeric.spacing == Gfx::FontVariantNumeric::Spacing::Proportional)
|
||||
values.append("proportional-nums"sv);
|
||||
else if (numeric.spacing == Gfx::FontVariantNumeric::Spacing::Tabular)
|
||||
values.append("tabular-nums"sv);
|
||||
if (numeric.fraction == Gfx::FontVariantNumeric::Fraction::Diagonal)
|
||||
values.append("diagonal-fractions"sv);
|
||||
else if (numeric.fraction == Gfx::FontVariantNumeric::Fraction::Stacked)
|
||||
values.append("stacked-fractions"sv);
|
||||
}
|
||||
auto east_asian_or_null = longhand(PropertyID::FontVariantEastAsian)->to_font_variant_east_asian();
|
||||
if (east_asian_or_null.has_value()) {
|
||||
auto east_asian = east_asian_or_null.release_value();
|
||||
if (east_asian.ruby)
|
||||
values.append("ruby"sv);
|
||||
else {
|
||||
if (east_asian.variant == Gfx::FontVariantEastAsian::Variant::Jis78)
|
||||
values.append("jis78"sv);
|
||||
else if (east_asian.variant == Gfx::FontVariantEastAsian::Variant::Jis83)
|
||||
values.append("jis83"sv);
|
||||
else if (east_asian.variant == Gfx::FontVariantEastAsian::Variant::Jis90)
|
||||
values.append("jis90"sv);
|
||||
else if (east_asian.variant == Gfx::FontVariantEastAsian::Variant::Jis04)
|
||||
values.append("jis04"sv);
|
||||
else if (east_asian.variant == Gfx::FontVariantEastAsian::Variant::Simplified)
|
||||
values.append("simplified"sv);
|
||||
else if (east_asian.variant == Gfx::FontVariantEastAsian::Variant::Traditional)
|
||||
values.append("traditional"sv);
|
||||
if (east_asian.width == Gfx::FontVariantEastAsian::Width::Proportional)
|
||||
values.append("proportional-width"sv);
|
||||
else if (east_asian.width == Gfx::FontVariantEastAsian::Width::FullWidth)
|
||||
values.append("full-width"sv);
|
||||
}
|
||||
}
|
||||
auto position_or_null = longhand(PropertyID::FontVariantPosition)->to_font_variant_position();
|
||||
if (position_or_null.has_value() && position_or_null.value() != CSS::FontVariantPosition::Normal) {
|
||||
values.append(CSS::to_string(position_or_null.release_value()));
|
||||
}
|
||||
StringBuilder builder;
|
||||
if (values.is_empty())
|
||||
builder.append("normal"sv);
|
||||
else
|
||||
builder.join(' ', values);
|
||||
return MUST(builder.to_string());
|
||||
}
|
||||
case PropertyID::GridArea: {
|
||||
auto& row_start = longhand(PropertyID::GridRowStart)->as_grid_track_placement();
|
||||
auto& column_start = longhand(PropertyID::GridColumnStart)->as_grid_track_placement();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue