cairo 1.3.16 snapshot (1.4.0 release candidate) available
From: Behdad Esfahbod <>
Date: 3 Mar 2007
Subject: cairo snapshot 1.3.16 (1.4.0 release candidate) now available

A new cairo snapshot 1.3.16 is now available from:

    which can be verified with:
        8c80376b18a58727f03fea05ef191acb19903e01  cairo-1.3.16.tar.gz
        (signed by Behdad Esfahbod)

  Additionally, a git clone of the source tree:

        git clone git://

    will include a signed 1.3.16 tag which points to a commit named:

    which can be verified with:
        git verify-tag 1.3.16

    and can be checked out with a command such as:
        git checkout -b build 1.3.16

This is the eighth development snapshot in the 1.3 series, and the
release candidate for 1.4.0, that will be released early next week.
It comes just over 3 weeks after the 1.3.14 snapshot.

New API functions
A few new public functions have been added to the cairo API since the
1.3.14 snapshot. These include a function to query the current scaled


New functions to query the reference count of all cairo objects:




And new functions to allow the use of user_data with any cairo object,
(previously these were only available on cairo_surface_t and
cairo_font_face_t objects):




Usability improvement for PDF/PS/SVG generation
In previous versions of cairo, generating single-page output with the
cairo-pdf, cairo-ps, or cairo-svg backends required a final call to
cairo_show_page. This was often quite confusing as people would port
functional code from a non-paginated backend and be totally mystified
as to why the output was blank until they learned to add this call.

Now that call to cairo_show_page is optional, (it will be generated
implicitly if the user does not call it). So cairo_show_page is only
needed to explicitly separate multiple pages.

Greatly improved PDF output
We are very happy to be able to announce that cairo-generated PDF
output will now have text that can be selected, cut-and-paste, and
searched with most capable PDF viewer applications. This is something
that was not ever possible with cairo 1.2.

Also, the PDF output now has much more compact encoding of text than
before. Cairo is now much more careful to not embed multiple copies of
the same font at different sizes. It also compresses text and font
streams within the PDF output.

Major bug fixes
  • Fixed radial gradients

    The rendering of radial gradients has been greatly improved. In
    the cairo 1.2 series, there was a serious regression affecting
    radial gradients---results would be very incorrect unless one of
    the gradient circles had a radius of 0.0 and a center point within
    the other circle. These bugs have now been fixed.

  • Fixed dashing

    Several fixes have been made to the implementation of dashed
    stroking. Previously, some dashed, stroked rectangles would
    mis-render and fill half of the rectangle with a large triangular
    shape. This bug has now been fixed.

  • Fixed transformed images in PDF/PS output

    In previous versions of cairo, painting with an image-based source
    surface pattern to the PDF or PS backends would cause many kinds
    of incorrect results. One of the most common problems was that an
    image would be repeated many times even when the user had
    explicitly requested no repetition with CAIRO_EXTEND_NONE. These
    bugs have now been fixed.

  • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD

    In the 1.2 version of cairo any use of CAIRO_EXTEND_REFLECT or
    CAIRO_EXTEND_PAD with a surface-based pattern resulted in an
    error, (cairo would stop rendering). This bug has now been

    Now, CAIRO_EXTEND_REFLECT should work properly with surface

    CAIRO_EXTEND_PAD is still not working correctly, but it will now
    simply behave as CAIRO_EXTEND_NONE rather than triggering the

New rewrite of quartz backend (still experimental)
Cairo's quartz backend has been entirely rewritten and is now much
more efficient. This backend is still marked as experimental, not
supported, but it is now much closer to becoming an officially
supported backend. (For people that used the experimental nquartz
backend in previous snapshots, that implementation has now been
renamed from "nquartz" to "quartz" and has replaced the old quartz

Documentation improvements
We have added documentation for several functions and types that
were previously undocumented, and improved documentation on other
ones.  As of this release, there remain only two undocumented
symbols: cairo_filter_t and cairo_operator_t.

Other bug fixes
  • cairo-svg: Fix bug that was preventing text from appearing in many

  • cairo-ft: Return correct metrics when hinting is off

  • Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or

  • cairo crashes in cairo_create_similar if nil surface returned by

  • evolution crash in _cairo_gstate_backend_to_user()

  • Fix memory leak in rectilinear stroking code

Things not in this release
  • Solid-surface-pattern cache: This patch had been applied during
    the 1.3.x series, but it was reverted due to some inter-thread
    problems it caused. The patch is interesting since it made a big
    benefit for text rendering performance---so we'll work to bring a
    corrected version of this patch back as soon as possible.