[cairo] rendering changes cairo 1.16 -> 1.17.4

Felix Schwarz felix.schwarz at oss.schwarz.eu
Sun Feb 28 22:14:02 UTC 2021


Hey,

sorry for the late reply - real live/homeschooling/...

Unfortunately I don't have a simple test case but I can reproduce this easily 
using WeasyPrint's test suite (e.g. weasyprint/tests/test_draw/test_float.py).

WeasyPrint issue is https://github.com/Kozea/WeasyPrint/issues/1291


I bisected the issue back to this commit:

commit ea9329215d3431ded51a71b724baf0edc25ad633
Author: Matthias Clasen <mclasen at redhat.com>
Date:   Sat Jul 28 12:25:47 2018 +0000

     image compositor: Support subpixel positioning

     Support subpixel positioning with a 4x4 subpixel grid.

     When compositing glyphs in the image compositor,
     we store the subpixel phases in the high bits of the
     glyph index. The _cairo_scaled_glyph_index() macro
     has been updated to discard these bits. By storing
     the phases in the glyph index, the glyph cache just
     keeps working. When loading a glyph, the Freetype
     font backend shifts the outline according to the
     phases.

If I revert that commit on master the tests do pass (while they fail when 
building current master - 553c19df)

Does that ring a bell? Any obvious thing I should look out for?


I noticed issue 390 ("subpixel-positioned text strings appear to have a row of 
pixels cropped out, sometimes") in gitlab:
https://gitlab.freedesktop.org/cairo/cairo/-/issues/390

That issue also mentions commit ea932921 and Dejavu (which I think 
WeasyPrint's test suite uses as well - though I think it might not be an issue 
for the failing test).

Anything else I can do besides creating a simple test case? (I tried that 
before but it is quite challenging because I have to dig deep through various 
layers.)

Felix


More information about the cairo mailing list