From 159e497ee4f6cdfac1cc6eae7a0d86a9a8da883a Mon Sep 17 00:00:00 2001 From: Alec Murphy Date: Sun, 4 May 2025 07:12:55 -0400 Subject: [PATCH] System/Libraries/Html/Renderer: Calculate text underline position more precisely --- System/Libraries/Html/Renderer.HC | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/System/Libraries/Html/Renderer.HC b/System/Libraries/Html/Renderer.HC index 53540b9..035e5d2 100644 --- a/System/Libraries/Html/Renderer.HC +++ b/System/Libraries/Html/Renderer.HC @@ -1596,6 +1596,7 @@ U0 @render_node_text(@html_dom_node* node, HtmlRenderer* renderer) stream[i] = NULL; fragment_base = i + 1; + I64 baseline; I64 text_width; Context2DWidget* fragment_widget; @@ -1618,8 +1619,10 @@ U0 @render_node_text(@html_dom_node* node, HtmlRenderer* renderer) } if (node->parentNode->underlineColor) { - if (underline_y_pos < 0) - underline_y_pos = @get_truetype_baseline(font_name, node->parentNode->fontSize) + 3; + if (underline_y_pos < 0) { + baseline = ToF64(@get_truetype_baseline(font_name, node->parentNode->fontSize)); + underline_y_pos = ToI64(baseline + ((ToF64(fragment_widget->ctx->height) - baseline) / 3)); + } if (!(underline_y_pos < 0)) { fragment_widget->ctx->line(0, underline_y_pos, fragment_widget->ctx->width - 1, underline_y_pos, node->parentNode->color); }