From 970682d49861e98bdad635128b9db3cbee48ffec Mon Sep 17 00:00:00 2001 From: Carl Worth Date: Thu, 7 Nov 2013 13:22:00 -0800 Subject: [PATCH] Force an identity matrix when creating a pango layout I've been seeing strange effects in the font rendering when zooming in dramatically. Inter-character and inter-word spacing was becoming radically large or radically close to zero, (with overlapping characters, etc.). I assume the problem has something to do with numbers outside the representable range of Pango's fixed-width implementation, (see "pango units"). Simply setting an identity matrix before creating the layout and selecting the font clears up all problems that I have seen so far. --- acre.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/acre.c b/acre.c index fac0a20..8e7f1b1 100644 --- a/acre.c +++ b/acre.c @@ -368,11 +368,16 @@ _create_layout (acre_t *acre, const char *text) if (text == NULL) text = ""; + cairo_save (acre->cr); + cairo_identity_matrix (acre->cr); + layout = pango_cairo_create_layout (acre->cr); pango_layout_set_font_description (layout, acre->font); pango_layout_set_text (layout, text, -1); pango_layout_set_alignment (layout, PANGO_ALIGN_CENTER); + cairo_restore (acre->cr); + return layout; } -- 2.43.0