]> git.cworth.org Git - acre/commitdiff
Force an identity matrix when creating a pango layout
authorCarl Worth <cworth@cworth.org>
Thu, 7 Nov 2013 21:22:00 +0000 (13:22 -0800)
committerCarl Worth <cworth@cworth.org>
Thu, 7 Nov 2013 21:22:00 +0000 (13:22 -0800)
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

diff --git a/acre.c b/acre.c
index fac0a2053c4796a102c14fc0d91e5129967e60a4..8e7f1b17b6c20134201b547037660927a573e3ec 100644 (file)
--- 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;
 }