[cairo] _cairo_surface_wrapper_get_target_extents() too small
Simon Sapin
simon.sapin at exyr.org
Wed Mar 27 05:12:36 PDT 2013
Hi,
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
cases.
git bisect indicates that the bug appeared in this cairo commit:
http://cgit.freedesktop.org/cairo/commit/?id=09b42c748e9dbcc923560c7d8bf5298fbffe95ef
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.
Cheers,
--
Simon Sapin
More information about the cairo
mailing list