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.
This commit is contained in:
Matthias Clasen 2020-12-21 13:08:34 -05:00
parent 478d1f71e3
commit 26119af7a6

View File

@ -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);