summaryrefslogtreecommitdiff
path: root/pango
diff options
context:
space:
mode:
authorJan Alexander Steffens (heftig) <jan.steffens@gmail.com>2020-02-11 03:51:19 +0100
committerMarco Trevisan (TreviƱo) <mail@3v1n0.net>2021-05-05 16:38:25 +0200
commit04031036fb1b80a47c7030053f4767363935c068 (patch)
treeafe1e1958cafe1f2f0ff0b2fcf34c08c08f1a52d /pango
parent8fcf1f7c129bebc2136be4fca12f31cab35518f4 (diff)
downloadpango-04031036fb1b80a47c7030053f4767363935c068.tar.gz
Use shape flags for tab width
We need to apply the right shape flags to the tab width calculation, otherwise (when glyph positions get rounded, which is the default) our tab width will be slightly off from what 8 spaces normally produce. https://gitlab.gnome.org/GNOME/pango/issues/425 (cherry-picked from commit c579c0a9)
Diffstat (limited to 'pango')
-rw-r--r--pango/pango-layout.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/pango/pango-layout.c b/pango/pango-layout.c
index a1ebfbcc..16783941 100644
--- a/pango/pango-layout.c
+++ b/pango/pango-layout.c
@@ -3034,6 +3034,10 @@ ensure_tab_width (PangoLayout *layout)
PangoAttrIterator *iter;
PangoFontDescription *font_desc = pango_font_description_copy_static (pango_context_get_font_description (layout->context));
PangoLanguage *language;
+ PangoShapeFlags shape_flags = PANGO_SHAPE_NONE;
+
+ if (pango_context_get_round_glyph_positions (layout->context))
+ shape_flags |= PANGO_SHAPE_ROUND_POSITIONS;
layout_attrs = pango_layout_get_effective_attributes (layout);
iter = pango_attr_list_get_iterator (layout_attrs);
@@ -3062,7 +3066,7 @@ ensure_tab_width (PangoLayout *layout)
pango_attr_list_unref (tmp_attrs);
item = items->data;
- pango_shape (" ", 8, &item->analysis, glyphs);
+ pango_shape_with_flags (" ", 8, " ", 8, &item->analysis, glyphs, shape_flags);
pango_item_free (item);
g_list_free (items);