LibWeb: Use PaintableFragment::baseline() in paint_text_decoration()

No need to calculate baseline based on glyph height when we can get
this information from a fragment.
This commit is contained in:
Aliaksandr Kalenik 2024-01-25 18:09:38 +01:00 committed by Andreas Kling
parent 1c4ce2c5f1
commit d5e3158cfe
4 changed files with 49 additions and 1 deletions

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

View file

@ -0,0 +1,9 @@
<style>
* {
margin: 0;
}
body {
background-color: white;
}
</style>
<img src="./images/text-decorations.png">

View file

@ -0,0 +1,39 @@
<!DOCTYPE html>
<html>
<head>
<link rel="match" href="reference/text-decorations-ref.html" />
<style>
.underline {
text-decoration: underline;
text-decoration-thickness: 2px;
}
.overline {
text-decoration: overline;
text-decoration-thickness: 2px;
}
.line-through {
text-decoration: line-through;
text-decoration-thickness: 2px;
}
.underline-overline {
text-decoration: underline overline;
text-decoration-thickness: 2px;
}
.underline-line-through {
text-decoration: underline line-through;
text-decoration-thickness: 2px;
}
</style>
</head>
<body>
<p class="underline">Hello</p>
<p class="overline">Hello</p>
<p class="line-through">Hello</p>
<p class="underline-overline">Hello</p>
<p class="underline-line-through">Hello</p>
</body>
</html>

View file

@ -505,7 +505,7 @@ void paint_text_decoration(PaintContext& context, Layout::Node const& text_node,
auto& font = fragment.layout_node().first_available_font();
auto fragment_box = fragment.absolute_rect();
CSSPixels glyph_height = CSSPixels::nearest_value_for(font.pixel_size());
auto baseline = fragment_box.height() / 2 - (glyph_height + 4) / 2 + glyph_height;
auto baseline = fragment.baseline();
auto line_color = text_node.computed_values().text_decoration_color();