[cairo] _cairo_surface_wrapper_get_target_extents() too small
simon.sapin at exyr.org
Wed Mar 27 05:12:36 PDT 2013
When rendering to PDF with WeasyPrint a document containing a SVG image,
SVG elements in the right and bottom of the image are not shown in some
git bisect indicates that the bug appeared in this cairo commit:
Reverting it on top of today’s master fixes the bug.
WeasyPrint has CairoSVG render the image to an intermediate cairo SVG
surface, which is then used in surface pattern as a source to paint in
the final PDF surface. The bug appears when the target context has a
scale to make the image smaller than its "intrinsic" size. Making the
SVG surface smaller (with its content scaled accordingly) and
compensating with a scale on the target surface works around the problem.
Apparently, the rectangle returned by
_cairo_surface_wrapper_get_target_extents() is smaller than it should
be. Something is transformed wrong, but I’m not sure what coordinate
system each rectangle is supposed to be in.
More information about the cairo