[cairo] Proposal to disable PDF and PS backends by default for 1.0

Carl Worth cworth at cworth.org
Wed Aug 24 05:12:15 PDT 2005

On Wed, 24 Aug 2005 02:00:43 -0700, Keith Packard wrote:
> With cworth's able review, I've actually committed these changes to CVS
> for 1.0 so that we can have a fully armed and operational PostScript
> backend. The only thing missing from it is the ability to collage the
> output from bits of vector PostScript mixed with cairo-drawn images as
> needed. That will have to wait until after 1.0 as it's "hard".

Keith, thanks for the tremendous, last minute effort to try to provide
a fully functional PostScript backend for cairo in time for the
immediate 1.0 release.

> So, it turns out that we get the nice PS backend with the ability to
> fully support cairo output. Seems like a good result to me.

Sadly, I don't think we're quite there yet.

I've done a bit of testing with the code that's in CVS. I added a new
svg2ps module to help with this.

Certain "easy" SVG images work quite well with the PostScript
backend. Things like the classic tux.svg and tiger.svg are rendered as
vector PostScript and look fine. Other, more complex images that force
the image fallbacks also look quite good rendered that way.

However, in testing with the W3C SVG conformance suite I found a large
set of problems. The first fatal error is that trying to render with a
bitmapped font to the PostScript backend causes cairo to falsely
trigger a NO_MEMORY error[*].

This bug could perhaps easily be turned into another UNSUPPORTED case,
but even then there are a lot of problems. It seems that in most
cases, anything beyond a single-color source pattern does not work
well. Image patterns and gradients show up as black boxes in many of
the tests, and in other tests are not getting transformed
properly. And these bugs show up even when doing image fallbacks in
many cases. So I think the meta-surface code just needs some more

I also tested the PDF backend with the same suite. I was quite
pleasantly surprised to see that it is currently working much better
than even the latest version of the PostScript backend. But there are
still problems here. While gradients are rarely black boxes
here---there are usually at least one or two colors present---the
gradients are also rarely correct.

As sad as it is to do so, I think the right thing to do at this point
is to disable-by-default the PDF and PostScript backends and mark them
as experimental in the 1.0 release notes. This is definitely a shame
as we won't have a solid implementation of display-and-print in 1.0,
but we still have a solid story about where we're headed in that area.

And I think it's actually better to avoid advertising as complete
backends that just aren't quite there yet.

I think the important thing here is to look at 1.0 for what it
is---the beginning---and move forward quickly to lots of improved
versions of cairo down the road.


[*] It's the NULL return from _cairo_ps_surface_get_font in
_cairo_ps_surface_show_glyphs that is the problem here.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050824/73fc6991/attachment-0001.pgp

More information about the cairo mailing list