[gtk/matthiasc/for-master: 1/3] gsk: Improve glyph serialization




commit 26119af7a6bcac01cbd3999daf0e32eba2148b4d
Author: Matthias Clasen <mclasen redhat com>
Date:   Mon Dec 21 13:08:34 2020 -0500

    gsk: Improve glyph serialization
    
    The special case for ASCII glyphs is unfortunately not
    working very well, because of an oversight in pango:
    When I added subpixel positioning, I made pango_shape()
    default to not rounding, and make PangoLayout call
    pango_shape_with_flags() and pass the rounding information
    down. The upshot is that we need to use the _with_flags
    variant here and tell it to round position, so it matches
    what the text node contains.

 gsk/gskrendernodeparser.c | 14 ++++++++++----
 1 file changed, 10 insertions(+), 4 deletions(-)
---
diff --git a/gsk/gskrendernodeparser.c b/gsk/gskrendernodeparser.c
index a77e8a5a9a..45b500dc42 100644
--- a/gsk/gskrendernodeparser.c
+++ b/gsk/gskrendernodeparser.c
@@ -688,10 +688,16 @@ create_ascii_glyphs (PangoFont *font)
   glyph_string = pango_glyph_string_new ();
   for (i = MIN_ASCII_GLYPH; i < MAX_ASCII_GLYPH; i++)
     {
-      pango_shape ((char[2]) { i, 0 },
-                   1,
-                   &not_a_hack,
-                   glyph_string);
+      const char text[2] = { i, 0 };
+
+      pango_shape_with_flags (text,
+                              1,
+                              text,
+                              1,
+                              &not_a_hack,
+                              glyph_string,
+                              PANGO_SHAPE_ROUND_POSITIONS);
+
       if (glyph_string->num_glyphs != 1)
         {
           pango_glyph_string_free (glyph_string);


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]