[cairo-announce] cairo snapshot 1.5.6 now available

Carl Worth cworth at cworth.org
Wed Jan 16 11:06:42 PST 2008

A new cairo snapshot 1.5.6 is now available from:


    which can be verified with:

        101382fc6ad2e702f74acf5486a1fea45affa608  cairo-1.5.6.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.5.6 tag which points to a commit named:

    which can be verified with:
        git verify-tag 1.5.6

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

This is the third snapshot in cairo's unstable 1.5 series. It comes
about 6 weeks after the 1.5.4 snapshot. The only API addition compared
to 1.5.4 is very minor, (a new value CAIRO_STATUS_TEMP_FILE_ERROR).
The remainder of the changes are the usual accumulation of bug fixes
and improvements. See below for details.

We still have a few important fixes we'd like to finish up before we
make a 1.6.0 release. These include some long-standing failures, (like
running cairo with goofy X server visuals, or targeting alpha masks
with non-multiple-of-4-byte strides). Though, interestingly, a lot of
the work for those things will be in pixman not cairo.

But we'll be putting forth a renewed effort to try to get 1.6 ready by
the end of January, (some of us want to be able to relax at LCA). We
also expect that the Mozilla project will soon contribute any patches
that they want to see in cairo 1.6.

Have fun with cairo, everybody!


Summary of changes from cairo 1.5.4 to cairo 1.5.6
General bug fixes
Fix handling of fonts that contain a mixture of outline and bitmapped
glyphs. There was a change in this handling in 1.5.4 that improved
some cases and also regressed other cases. Now, all cases should be
handled quite well.

Fix alignment issues that were causing SIGBUS failures on SPARC.

Fix a regression (which first appeared in 1.5.2) where stroking under
a large scale would sometimes incorrectly replace a miter join with a
bevel join. (Thanks to Keith Packard.)

Fix reporting of zero-sized extents to be {0,0} rather than
{INT_MAX,INT_MIN}. This avoids several integer overflow and
allocations of massive regions in some cases.

Fix failures of gradients with no stops, (quartz, ps, and pdf).

Fix handling of Type 1 fonts on Windows platforms.

Fix handling of Type 1 fonts with no specific family name in the font
itself, (generate a CairoFont-x-y name).

Handle NULL string values in cairo_show_text, cairo_show_glyphs, and

Many robustness improvements along error-handling paths, (thanks as
always, to Chris "ickle" Wilson).

Various other minor fixes.

Paginated backends (PDF/PostScript/win32-printing)
Avoid unnecessary rasterization when using a paginated surface as a
source, (such as drawing from one pdf surface to another).

Fix replaying of paginated surface with more than one level of push/pop

Fix xlib backend to not consider recent X server release as having a
buggy repeat implementation in the Render extension.

Fix PDF output to avoid triggering very slow rendering in PDF viewers,
(avoid starting and stopping the content stream for each pattern

Support CAIRO_OPERATOR_SOURCE in cases where there is nothing below
the object being drawn.

Fix to avoid seams appearing between multiple fallback regions.

cairo-ps (PostScript)
Use correct bounding box in Type 3 fonts.

Fix several bugs in cairo's PostScript output. These include making
the PostScript output more compatible with recent versions of
ghostscript that are more strict about Type 3 fonts, for

Fix for win32 to not attempt to create temporary files in the root
directory, (where the user may not have write permission).

Avoid generating Level 3 PostScript if Level 2 is sufficient. Also,
add code in output documents to alert the user if Level 3 PostScript
is handed to a device that cannot handle PostScript beyond Level

Various performance optimizations.

Fixed support for small surfaces (less than 8x8).

Provide support for environment variables CAIRO_DIRECTFB_NO_ACCEL to
disable acceleration and CAIRO_DIRECTFB_ARGB_FONT to enable ARGB fonts
instead of A8.

Allow OS/2 APIs instead of C library allocation functions.

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, OS/2, 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 include 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:


Complete log of changes from cairo 1.5.4 to cairo 1.5.6
Adrian Johnson (30):
      PS: Return the status for emit_image and gradients
      PS: Use the correct bounding box in Type 3 fonts
      PS: Use _TEMP_FILE_ERROR for temp file errors
      Implement a win32 tmpfile() function
      Fix PS/PDF meta surface patterns
      PS: Fix gradient-zero-stops test failure
      PDF: Fix gradient-zero-stops test failure
      PDF: Remove the Type 3 outline glyph code
      Move the PDF drawing operators into cairo-pdf-operators.c
      Add _cairo_pattern_create_copy()
      Use _cairo_pattern_create_copy() in cairo-surface.c
      PDF: Emit all patterns after content stream
      PDF: Perform all clipping in the content stream
      PDF: Remove the remaining code for splitting the content
      Add FALLBACK mode to paginated surface
      PDF: Support _OPERATOR_SOURCE when nothing under the operation
      PDF: Make _SOURCE operator work inside meta surface patterns
      Fix analysis of transformed meta surfaces
      PDF: Put each fallback image in a separate group
      PDF: Remove copy_page
      PDF: Update the PDF page structure comment
      Fix win32-font problems with Type 1 fonts
      Fix MSVC 2008 compiler warnings - bug 13698
      Add PS Level check to PS output
      Set the PS level to to minimum required
      Type1-subset: Font name may be NULL
      PS: Don't use language level check in EPS
      win32-printing: use fill instead of clip for non win32 fonts
      win32-printing: Do not clip and paint with an empty path

Behdad Esfahbod (9):
      [util/malloc-stats.c] Add a public function malloc_stats()
      Pass $(MAKE) to test shell scripts (#13591)
      [cairo-xlib] Support scale fonts with glyphs of multiple formats (#13479)
      [cairo-ft] Revert "Force non-AA text when using a bitmap strike with only scaling transform." (#13479)
      [cairo-xlib] Minor cleanup and add comment
      [directfb] Fix header include order to include cairoint.h first
      [cairo-unicode] Don't compile _cairo_utf8_to_utf16 on Linux
      [src/Makefile.am] Tweak includes a bit
      [scaled-font] Upgrade glyph mask as needed in case of mixed-format glyphs

Benjamin Otte (2):
      [directfb] replace u32 with uint32_t

Bernardo Innocenti (1):
      Fix version check for buggy_repeat on modular Xserver 1.x

Boying Lu (1):
      Remove cairo_private from static declaration

Brian Ewins (3):
      [test] add test for gradient with no stops
      [quartz] refactor gradient handling
      [quartz] fix gradient-zero-stops crash (moz#407104)

Carl Worth (13):
      Increment version to 1.5.5 after the 1.5.4 snapshot
      Fix version number typo
      Fix misspellings
      Restrict initial buggy version to X.Org 6.7 rather than 6.0
      Remove rasterization when a paginated surace is used as a source
      Migrate glyph mask to A8 in case of mixed-format glyphs.
      Merge branch 'master' of git.cairographics.org:/git/cairo into cairo
      Fix create-for-stream test to log its failure properly
      NEWS: Add notes for cairo 1.5.6
      Increment version to 1.5.6 and to 15:0:13
      Replace -I($builddir) with -I. to avoid breaking non-srcdir builds.
      Add miter-precision-ref.png tothe distribution.
      Remove check-has-hidden-symbols.i on 'make distclean'

Chris Wilson (81):
      Replace various uses of CAIRO_STACK_BUF_SIZE with a single macro.
      [cairo-path-bounds] Check for the empty path.
      [pdiff] Avoid the memleak for small surfaces.
      [cairo-test] Use CAIRO_OPERATOR_SOURCE when painting the group surface.
      [cairo-test] Wrap test function with cairo_save/restore().
      [cairo-surface] Return UNSUPPORTED for acquire_(dest|source)_image.
      [test/*] Create new surfaces using the group target.
      [cairo] Correct the documentation for cairo_get_group_target().
      [valgrind] Update zlib suppressions.
      [cairo-meta-surface] Remove redundant _cairo_error().
      [cairo-ps-surface] Missing status checks.
      [cairo-path-fixed] Ensure the array of points is correctly aligned.
      [cairo-path-fixed] Ensure the points array is naturally aligned, take 2.
      [cairo-path-fixed] Consolidate cairo_path_buf_t when copying.
      [cairo-truetype-subset] Propagate error from failing to allocate padding.
      [cairo-type1-subset] Remove the unused return value.
      [cairo-svg-surface] Wrap a couple of error sites with _cairo_error().
      [cairo-ps-surface] Wrap error site with _cairo_error().
      [cairo-atsui-font] Minor _cairo_error() tidy.
      [cairo-ps-surface] Wrap error site with _cairo_error().
      [cairo-svg-surface] Propagate the original error status.
      Remove cairo_private from *.c files.
      [cairo-scaled-fonts-subsets] Memleak and error reporting.
      [cairo-gstate] Rearrange invalid-matrix guards.
      [cairo-pdf-surface] Propagate error from emit_glyph().
      [cairo-pdf-surface] Destroy closed streams.
      [cairo-pdf-surface] Continue to close streams even after error.
      [test] Update distribution list of ref images.
      [test/surface-pattern-big-scaled-down] Kill the surface leaks.
      [cairo] Update CAIRO_STATUS_LAST_STATUS
      [cairo-ps-surface] Use ctime_r when available.
      [cairo-analysis-surface] Check for an empty transformed bbox.
      [cairo-traps] Return zero extents if it contains no traps.
      [cairo-analysis-surface] Return early if the traps is empty.
      Check errno for appropriate error return.
      [headers] Brute force fixup of including cairoint.h from boilerplate.
      [cairo-ft-font] Destroy unscaled font ref on error.
      [cairo-path-bounds] _cairo_path_fixed_bounds() should never fail.
      [configure.in] Fixup fontconfig check.
      [configure] Print version info in summary.
      [cairo-paginated-surface] Call the abstract cairo_surface_show_page ().
      [cairo-pdf-operators] Be consistent in error checks.
      [configure.in] Add paranoid double checking for (svg|pdf)2png
      [test/solid-pattern-cache-stress] Check for drand48().
      [test] Fixup make check for mingw
      [cairo-pattern] Rearrange CAIRO_MUTEX_INITIALIZE.
      [test] Win32 printing backend testing depends upon ghostscript
      [cairo-pdf-surface] Skip emitting the font subset if not among resources.
      [cairo-pdf-surface] Review error handling.
      [configure.in] Fixup usage of _CHECK_FUNCS_WITH_FLAGS within PKG_CHECK_MODULE.
      [gitignore] Add mkinstalldirs.
      [cairo-traps] Typo caught by valgrind.
      [cairo-pattern] Free the copied pattern on error.
      [test/.valgrind-suppressions] Update for amd64/sid
      [configure] Version bump for $(EXEEXT)
      [Makefile.am] Update cairo.def after the set of enabled features is modified.
      [check] Skip def/plt tests if the compiler doesn't support symbol hiding.
      [cairoint.h] Compile time check for a font backend.
      [check] Replace compiled symbol visibility checker with shell script.
      [check] Move the hidden symbol check into check-{def,plt}.sh
      [Makefile.am] Tweak the flags passed to CPP.
      [check-plt.sh] Ensure that $MAKE is defined.
      [cairo-matrix] Use isfinite() to check matrix determinant.
      [test/text-zero-len] Test passing NULLs to the API.
      [cairo] Harden the text API against NULL strings.
      [test/rel-path] Check that invalid relative paths raise an error.
      [test] Sort TESTS
      [cairo-pattern] Add an ASSERT_NOT_REACHED
      [cairo-paginated-surface] Set error on surface for operations done its behalf.
      [cairo-gstate] Add isfinite guards to the transformation ops.
      [cairo-gstate] Check that the matrix remains invertible.
      [cairo-matrix] Tidy usage of HAVE_ISFINITE.
      [cairo-scaled-font] Add missing matrix guard to cairo_scaled_font_create().
      [test] Add a custom hook to summarise the failures.
      [cairo-xlib] Fixup --disable-xlib-xrender
      [Makefile.am] Add -I$(builddir) for .c.i target
      [cairo-output-stream] Introduce _cairo_output_stream_create_in_error()
      [cairo-surface] Introduce _cairo_surface_create_in_error().
      [cairo-svg-surface] Review error propagation during surface creation.
      [cairo-ps-surface] Review error propagation during surface creation.
      [cairo-pdf-surface] Review error propagation from output stream.

Claudio Ciccani (4):
      [cairo-directfb] Merging from directfb.org
      Merge branch 'master' of git+ssh://klan@git.freedesktop.org/git/cairo
      [cairo-directfb] Support some environment variables
      [cairo-directfb] Optimize blend functions in fill_rectangles(), too.

Emmanuel Pacaud (1):
      [SVG] Fix a minor issue when emitting a radial gradient with r1 == r2.

Jim Meyering (1):
      Don't leak memory upon failed realloc.

Keith Packard (2):
      Add new miter-precision test. Checks miter joins at many scales.
      Directly check the miter corner to detect wild miters.

Kouhei Sutou (1):
      Fix typo in comment.

Nis Martensen (1):
      [src/check-cairoint.sh] Fix typo in shell script

Peter Weilbacher (1):
      [os2] add memory allocation wrappers for pixel buffers

Vladimir Vukicevic (2):
      Fix cairo_surface_fallback_snapshot's use of release_source_image
      [quartz] Store the CGFontRef and reuse it for rendering

-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: not available
Url : http://lists.cairographics.org/archives/cairo-announce/attachments/20080116/e3f04b5e/attachment.pgp 

More information about the cairo-announce mailing list