[cairo-announce] cairo release 1.2.2 now available

Carl Worth cworth at cworth.org
Tue Aug 8 16:50:27 PDT 2006

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://git.cairographics.org/git/cairo

    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 is cairo
Cairo is a 2D graphics library with support for multiple output
devices. Currently supported output targets include the X Window
System, win32, and image buffers, as well as PDF, PostScript, and SVG
file output. Experimental backends include OpenGL (through glitz),
Quartz, XCB, BeOS, and DirectFB.

Cairo is designed to produce consistent output on all output media
while taking advantage of display hardware acceleration when available
(for example, through the X Render Extension).

The cairo API provides operations similar to the drawing operators of
PostScript and PDF. Operations in cairo including stroking and filling
cubic Bézier splines, transforming and compositing translucent images,
and antialiased text rendering. All drawing operations can be
transformed by any affine transformation (scale, rotation, shear,

Cairo has been designed to let you draw anything you want in a modern
2D graphical user interface.  At the same time, the cairo API has been
designed to be as fun and easy to learn as possible. If you're not
having fun while programming with cairo, then we have failed
somewhere---let us know and we'll try to fix it next time around.

Cairo is free software and is available to be redistributed and/or
modified under the terms of either the GNU Lesser General Public
License (LGPL) version 2.1 or the Mozilla Public License (MPL) version

Where to get more information about cairo
The primary source of information about cairo is:


The latest releases of cairo can be found at:


Snapshots of in-development versions of cairo:


The programming manual for using cairo:


Mailing lists for contacting cairo users and developers:


Answers to some frequently asked questions about 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.

report:	https://bugs.freedesktop.org/show_bug.cgi?id=7294
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59

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.

report:	https://bugs.freedesktop.org/show_bug.cgi?id=7494
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14
see also:
Xorg:	https://bugs.freedesktop.org/show_bug.cgi?id=7681
KDE:	http://qa.mandriva.com/show_bug.cgi?id=23990

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).

report:	https://bugs.freedesktop.org/show_bug.cgi?id=7533
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb

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:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051

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.

report:	https://bugs.freedesktop.org/show_bug.cgi?id=4106
fixes:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0

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.

report:	https://bugs.freedesktop.org/show_bug.cgi?id=7514
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c

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

report:	https://bugs.freedesktop.org/show_bug.cgi?id=7538
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691

PDF: Fix broken output on amd64 (Adrian Johnson)
report:	http://bugzilla.gnome.org/show_bug.cgi?id=349826
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60

PS: Fix broken output for truetype fonts > 64k (Adrian Johnson)
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94

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:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256

Fix memory leaks in failure paths in gradient creation (Alfred Peng)
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2

Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson)
report:	https://bugs.freedesktop.org/show_bug.cgi?id=7766
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd

Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng)
report:	https://bugzilla.mozilla.org/show_bug.cgi?id=341874
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6

Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron)
report: https://bugs.freedesktop.org/show_bug.cgi?id=7483
fix:	http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235

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.

Detailed list of changes since 1.2.0
Adrian Johnson:
      This patch fixes the problem where the postscript output
      Remove freetype dependency for truetype subsetting code.
      Make truetype subsetting work on x86_64

Alfred Peng:
      Add definition of cairo_private for some Sun compilers.
      Fix leaks in failure paths in pixman gradient creation

Behdad Esfahbod:
      Do not use sighandler_t.  Bug 7401.
      For check-valgrind, call the version of libtool in our source distribution,
      Update test/README
      Make CAIRO_TEST_TARGET="" make check pass tests.
      Fix typo when printing error for unsupported X formats.  It was mistakenly
      Fix doc syntax.
      Fix doc typo.
      Include cairo-svg.h in cairo_win32_api_headers. (bug 7462)
      Better creation rules for cairo.def.
      Generate index of new symbols in 1.2.
      Fix nil surface initializations for surface type. (#7322)
      Small doc fix.
      Add change stat to ChangeLog.
      Change version number of Sun's Xorg server with buggy repeat from 60800000 to
      Disable PDF backend if zlib not found.
      Add note to docs for some enums about possible future additions.
      Oops. Fix doc format.
      Use Bitstream Vera Sans and Latin text in ft-text-vertical.
      Improve test suite build infrastructure
      More test suite infrastructure improvements:
      Improve backend .pc files generation:
      Improve test HTML generation:
      Tiny doc typo fix.
      Add prototype for draw in each test file and remove it from the header.
       ***cworth finds them [the background colors] a bit too bright
      Don't write FAIL messages on stdout if both stdout/err are going to screen.
      Send grep errors to hell^Wnull.
      Fix doc typo.
      Use cairo_bool_t.
      Fix Name tag in backend .pc files to include "cairo-".
      Fix test result formatting.
      Only generate HTML for log files passed on the command line.
      Go back to "!!!CRASHED!!!" message now that there's no confusion.
      Flush stdout after writing \r, to remove artifacts.
      Use font matrix offset to reposition glyph origin instead of adjusting advance
      Don't make doc upon make install.
      Make "CAIRO_TEST_TARGET=... make check" work again
      Make "double *dash" argument const in cairo_set_dash
      Move font-matrix translation and device transform from surface to gstate
      Add -Wold-style-definition compiler falg and fix all warnings.
      Standardize on unsigned for ref_count type and add CAIRO_REF_COUNT_INVALID
      Remove config.cache in autogen.sh.
      Remove dummy create_similar in PS/PDF and let fallback do the same
      Implement per-surface font options.
      Let backends return NULL in create_similar to take the fallback path.
      Set font_options on image surfaces we create.
      Set fallback resolution in create_similar.  Update docs to reflect that.
      Set font options in the test context and make tests not do that
      Add comments about CAIRO_ENABLE_BACKEND.
      Add vector_ignored_tests that is tests ignored for ps/pdf/svg
      Make image_diff_flattened flatten the first image too.
      Change the way diff images highlight differences.
      Switch from ghostscript's png16m driver to pngalpha for PS->PNG again.
      Change the text string "cd" to "AB" in test to match the other string
      New PS ref images, matching the recent png16m->pngalpha driver change
      Look for per-target reference image too
      Fail FreeType load_truetype_table on vertical fonts as we don't do it
      Add -Wwrite-strings compiler flag and fix all warnings
      Add several compiler warning flags (no code changes needed)
      Add -Wunsafe-loop-optimizations compiler flag and fix all warnings
      Mark x86_64 subsetting as fixed in ROADMAP.
      Remove the __attribute__ ((packed)) and the need for it
      Split the TrueType table definitions into a private header file
      Add test truetype-tables that checks sizeof truetype tables
      Add cairo-truetype-subset-private.h to list of ignored headers
      Update doc syntax
      More doc syntax update
      Document a few more functions
      Make "make html" not trigger test reruns
      Update reference images, mostly PDF and SVG
      Fix few remaining compiler warnings, revealed by -O3
      Fix misplaced volatile keyword
      Set antialiasing to gray in default font options for PS/PDF/SVG
      [fontconfig] Set FC_RGBA_NONE on the pattern if we don't want subpixel.
      Restructure subpixel_order handling such that the code doesn't look suspicious!
      [TrueType] Fix leaks.
      [TrueType] More leak fixes
      [TrueType] Add comment block describing why we only use int16_t
      [FreeType] Unset and set to FC_RGBA_NONE the FC_RGBA attribute on pattern
      [TrueType] Zero out padding memory in generated TrueType subset
      [PDF] Fix leak: free glyphs

Carl Worth:
      Increment CAIRO_VERSION to 1.2.1 after making the 1.2.0 release
      RELEASING: Mention README as the source for blurbs
      Add retest and recheck targets to the top-level Makefile
      Eliminate a few simple compiler warnings
      Add dash-no-dash test case to demonstrate PDF failure to turn off dashing.
      Make the various test and check targets depend on all as well.
      cairo-test.c: Prefer FALSE and TRUE for cairo_bool_t values.
      Rename no_fail_on_stdout to eliminate confusing negative inside a Boolean variable name
      Use 'FAIL' instead of 'UNEXPECTED FAILURE' in test output.
      ft-text-vertical-layout: Update stale reference images
      pixman-rotate: remove stale svg backend reference images
      Add font-matrix-translation test case.
      Elide size-zero glyphs from calls to XRender functions.
      Update ROADMAP with 1.2.2 and 1.4 plans now that 1.2.0 is out
      INSTALL: Mention DYLD_LIBRARY_PATH for mac OS X
      Add -Wsign-compare compiler flag and fix all warnings
      Update ROADMAP now that several of the 1.2.2-targeted bugs are fixed
      Simplify common set_clip operation in meta-surface replay.
      Apply device_transform during meta-surface replay to fix bug 7533
      Use base pointer to avoid compiler warning.
      ROADMAP: Mark 7533 as fixed and add broken truetype subsetting on x86_64
      Fix file handle leak in failure path (bug 7616)
      Fix bug 7294 by adding pixman BGR formats and internal cairo BGR formats.
      Add -Wswitch-enum compiler flag and fix all trivial warnings
      Squelch an annoying -Wswitch-enum warning by not using switch
      Merge branch 'warnings-cleanup' into cairo
      Fix some signed/unsigned comparison warnings that cropped up during the warnings-cleanup branch
      Document CAIRO_FORMAT_RGB16_565 as deprecated.
      Improve docs for cairo_surface_create_similar()
      Merge branch 'surface-font-options' into cairo
      Remove stale SVG-specific reference images for pixman-rotate test
      Eliminate most compiler warnings from the test suite
      Disable warning options that are not available in gcc 3.3.5 at least.
      Eliminate warning due to the test suite's private 'FLATTENEND' format value
      test-paginated: Fix memory leak within _test_paginated_surface_create_for_data
      Add a variation of an existing valgrind suppression
      Fix some memory leaks in a few of the tests.
      gtk-doc template file churn
      Fix EXTRA_DIST so that 'make distcheck' works again
      RELEASING: Add --stat option to recommended git-log command
      NEWS: Add notes for cairo 1.2.2
      Update version to 1.2.2 and libtool version to 11:1:9.

Chris Wilson:
      Fix memory leak in _cairo_surface_show_glyphs (bug 7766)

David Reveman:
      Ignore color for CAIRO_OPERATOR_CLEAR in glitz backend.

Declan Naughton:
      Fix typos in internal documentation.

Dominic Lachowicz:
      Add binary garbage to PDF header as recommended in section 3.4.1 of PDF Reference v1.6

Ian Osgood:
      XCB: implement set_clip_region

Jamey Sharp:
      XCB: XCBRenderTRAP was renamed to XCBRenderTRAPEZOID.
      XCB: Use xcb-renderutil where cairo-xlib used libXrender.

Jonathon Jongsma:
      Fix a typo in cairo_font_extents_t documentation
      Fix documentation typo in cairo_scaled_font_get_font_options()

Kent Worsnop:
      PDF: Fix for dash-no-dash test case, (so that dashing can be turned off)

Kristian Høgsberg:
      Drop unused src/cairo-font-subset-private.h.
      Renamed cairo-font-subset.c to cairo-truetype-subset.c
      Rename truetype subset function to _cairo_truetype_*.

Michael Emmel:
      Rewrote to remove intermediate surfaces
      Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo
      Fixed debug message to use new member name
      Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo
      Check for zero before freeing region
      Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo
      Fixed debug statement that broke compile
      Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo

Vladimir Vukicevic:
      [xlib] Remove XSync implementation of surface_flush
-------------- 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-announce/attachments/20060808/3dab32aa/attachment.pgp

More information about the cairo-announce mailing list