[pango/underline-kerning] renderer: Use ink rects for line lengths
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [pango/underline-kerning] renderer: Use ink rects for line lengths
- Date: Fri, 27 Aug 2021 19:34:05 +0000 (UTC)
commit ada1bc9385d638e4c42a5aa58706c0a6874779e7
Author: Matthias Clasen <mclasen redhat com>
Date: Fri Aug 27 15:27:04 2021 -0400
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;
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]