From ada1bc9385d638e4c42a5aa58706c0a6874779e7 Mon Sep 17 00:00:00 2001 From: Matthias Clasen Date: Fri, 27 Aug 2021 15:27:04 -0400 Subject: renderer: Use ink rects for line lengths When rendering underlines and the like, we should use ink extents, since the logical extents will get shortened by kerning, which can be pretty noticable when underlining individual glyphs, such as the T in To. Fixes: #139 --- pango/pango-renderer.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/pango/pango-renderer.c b/pango/pango-renderer.c index c91cb6ee..055cdd97 100644 --- a/pango/pango-renderer.c +++ b/pango/pango-renderer.c @@ -362,8 +362,8 @@ add_underline (PangoRenderer *renderer, int underline_thickness = pango_font_metrics_get_underline_thickness (metrics); int underline_position = pango_font_metrics_get_underline_position (metrics); - new_rect.x = base_x + logical_rect->x; - new_rect.width = logical_rect->width; + new_rect.x = base_x + ink_rect->x; + new_rect.width = ink_rect->width; new_rect.height = underline_thickness; new_rect.y = base_y; @@ -425,8 +425,8 @@ add_overline (PangoRenderer *renderer, int underline_thickness = pango_font_metrics_get_underline_thickness (metrics); int ascent = pango_font_metrics_get_ascent (metrics); - new_rect.x = base_x + logical_rect->x; - new_rect.width = logical_rect->width; + new_rect.x = base_x + ink_rect->x; + new_rect.width = ink_rect->width; new_rect.height = underline_thickness; new_rect.y = base_y; @@ -480,8 +480,8 @@ add_strikethrough (PangoRenderer *renderer, int strikethrough_thickness = pango_font_metrics_get_strikethrough_thickness (metrics); int strikethrough_position = pango_font_metrics_get_strikethrough_position (metrics); - new_rect.x = base_x + logical_rect->x; - new_rect.width = logical_rect->width; + new_rect.x = base_x + ink_rect->x; + new_rect.width = ink_rect->width; new_rect.y = (base_y - strikethrough_position) * num_glyphs; new_rect.height = strikethrough_thickness * num_glyphs; -- cgit v1.2.1