cairo 1.2.2 release available
From: Carl Worth <>
Date: 8 Aug 2006
Subject: [cairo-announce] cairo release 1.2.2 now available

A new cairo release 1.2.2 is now available from:

    which can be verified with:
        859b9ed4eaa200a03b9e41ccc45f3799742e6c5c  cairo-1.2.2.tar.gz
        (signed by Carl Worth)
  Additionally, a git clone of the source tree:

        git clone git://

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

    which can be verified with:
        git verify-tag 1.2.2

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

This is the first bug fix release in the 1.2 series since the original
1.2.0 release made six weeks ago.

There were some very serious bugs in the 1.2.0 release, (see below),
so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2
release maintains source and binary compatibility with 1.2.0 and does
not make any API additions.

I'd like to thank everybody who has done so much to make this release
possible. Some people have their names associated with fixes below,
but many more people have been just as valuable in testing and
reporting bugs. And I'd like to extend special recognition to the
people who have been patient with some major failures in cairo 1.2.0!

At the risk of neglecting the dozens of people who have done so much,
I do want to mention two people in particular:

First, Behdad Esfahbod has put an untold number of hours into this
release, with over 80 commits since the 1.2.0 release just a few weeks
ago. His efforts are often behind-the-scenes improving the Makefiles
and the test suites so that everyone working on cairo can do so more
smoothly and easily. Thanks Behdad!

Second, I'd like to extend a special welcome to Adrian Johnson who has
recently started working on cairo and immediately started contributing
very valuable improvement. His work has focused on the printing
backends, (particularly in the area of font subsetting), which are
much better for his efforts. Welcome Adrian!

And to everybody, have fun with cairo!


What's new in cairo 1.2.2 compared to 1.2.0
Fix crashes with BGR X servers
With cairo 1.2.0 many people reported problems with all cairo-using
programs, (including all GTK+ programs with GTK+ >= 2.8) immediately
crashing with a complaint about an unsupported image format. This bug
affected X servers that do not provide the Render extension and that
provide a visual with BGR rather than RGB channel order.


Fix the "disappearing text" bug
With cairo 1.2.0 many people reported that text would disappear from
applications, sometimes reappearing with mouse motion or
selection. The text would disappear after the first space in a string
of text. This bug was caused by an underlying bug in (very common) X
servers, and only affected text rendered without antialiasing, (either
a bitmap font or a vector font with antialiasing disabled). The bug
was also exacerbated by a KDE migration bug that caused antialiasing
to be disabled more than desired.

see also:

Fix broken image fallback scaling (aka. "broken printing")
The various "print" backends, (pdf, ps, and svg), sometimes fallback
to using image-based rendering for some operations. In cairo 1.2.0
these image fallbacks were scaled improperly. Applications using cairo
can influence the resolution of the image fallbacks with
cairo_surface_set_fallback_resolution. With the bug, any value other
than 72.0 would lead to incorrect results, (larger values would lead
to increasingly shrunken output).


Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod)
The 1.2.0 release introduced an inadvertent change to how the
translation components of a font matrix are interpreted. In the 1.0
series, font matrix translation could be used to offset the glyph
origin, (though glyph metrics were reported incorrectly in
1.0). However in 1.2.0, the translation was applied to the advance
values between each glyph. The 1.2.0 behavior is fairly useless in
practice, and it was not intentional to introduce a semantic
change. With 1.2.2 we return to the 1.0 semantics, with a much better
implementation that provides correct glyph metrics.


Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod)
There has been a long-standing issue with cairo_surface_create_similar
such that font options and other settings from the original
destination surface would not be preserved to the intermediate
"similar" surface. This could result in incorrect rendering
(particularly with respect to text hinting/antialiasing) with
fallbacks, for example.


xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic)
Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0
caused a significant performance regression when using the xlib
backend. This performance regression was particularly noticeable when
doing lots of text rendering and when using a high-latency connection
to the X server, (such as a remote X server over an ssh
connection). The slowdown was identified and fixed in 1.2.2.


PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson)
The cairo 1.2 series adds a supported pdf backend to cairo. In cairo
1.2.0 this backend required the freetype library, which was an
undesirable dependency on systems such as win32, (cairo is designed to
always prefer the "native" font system). As of cairo 1.2.2 the
freetype library is not required to use the pdf backend on the win32


PDF: Fix broken output on amd64 (Adrian Johnson)

PS: Fix broken output for truetype fonts > 64k (Adrian Johnson)

PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop)
Kent notices that with the PDF backend in cairo 1.2.0 as soon as a
stroke was performed with dashing, all subsequent strokes would also
be dashed. There was no way to turn dashing off again.


Fix memory leaks in failure paths in gradient creation (Alfred Peng)

Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson)

Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng)

Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron)

Various memory leak fixes
Fix memory leak in _cairo_surface_show_glyphs (bug 7766)
Fix file handle leak in failure path (bug 7616)
Fix some memory leaks in the test cases.
Fix some memory leaks in font subsetting code used in print backends.

Documentation improvements (Behdad Esfahbod)
Added new documentation for several functions (cairo_show_page,
cairo_copy_page, cairo_in_stroke, cairo_in_fill).

Fixed some syntax errors that were preventing some existing
documentation from being published.

Fixed several minor typographical errors.

Added an index for new symbols in 1.2.