[cairo-announce] cairo snapshot 1.5.2 now available

Carl Worth cworth at cworth.org
Tue Oct 30 22:47:52 PDT 2007

A new cairo snapshot 1.5.2 is now available from:


    which can be verified with:

        39d6593433ce4896a065a6c4ad2882a5cc1fe05a  cairo-1.5.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.5.2 tag which points to a commit named:

    which can be verified with:
        git verify-tag 1.5.2

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

This is the first snapshot in cairo's unstable 1.5 series. It comes 4
months after the 1.4.10 release. This snapshot includes significant
improvements to PDF and PostScript output, which is one of the things
in which we're most interested in getting feedback. There are a couple
of minor API additions, and several optimizations, (primarily in the
"print/vector" backends). And there are dozens of bug fixes and
robustness improvements.

NOTE: This is a snapshot of in-progress development, not a "release".
So it is expected that there will be more rough edges than one would
find in a major release. For example, various tests in the test suite
are currently failing against the PDF backend, and we'll get those
fixed before the 1.6 release. But you're likely to notice more
improvements than problems, so give this snapshot a try and let us
know how it goes for you. Read more below for many details on the
exciting things in cairo 1.5.2 compared to cairo 1.4.10.

Have fun with cairo!


New dependency on external pixman library
A significant change in this snapshot compared to all previous cairo
releases is that cairo now depends on an external "pixman" library for
its software rendering. Previously this same code was compiled
internally as part of cairo, but now the code is separate so that both
cairo and the X server can now share common code, (thanks very much to
Søren Sandmann for his work on separating pixman and maintaining it).

So users will need to acquire and build pixman before being able to
build cairo. The current release is 0.9.6 and can be obtained from


 which can be verified with:

	66f01a682c64403a3d7a855ba5aa609ed93bcb9e  pixman-0.9.6.tar.gz

	(signed by Carl Worth)

Major PDF/PostScript improvements
Adrian Johnson has done some long-awaited work to make cairo's PDF and
PostScript output more interesting than ever before. First, many
operations that previously triggered image fallbacks will now be
rendered as native vectors. These operations include:

	PDF: cairo_push_group, cairo_surface_create_similar,
	cairo_mask, A8/A1 surface sources, repeating/reflecting linear

	PostScript: cairo_push_group, cairo_surface_create_similar,
	gradients, bilevel alpha masks, (for example, all values either 0 or
	255 for an A8 mask).

Not only that, but when an image fallback is required, it will now be
limited to only the necessary region. For example, a tiny translucent
image overlaying a small portion of text would previously caused an
entire PostScript page to be rendered as a giant image. Now, the
majority of that page will be nice text, and there will only be a tiny
image in the output.

Additionally, the PostScript output now carefully encodes text so that
if it is subsequently converted to PDF, the text will be

This is very exciting progress, and we're hoping to hear from users
during the 1.5 series about how things have improved, (for example,
inkscape users doing cairo-based PDF export: please let us know how
things look). And feel free to pass your thanks along to Adrian for his excellent work.

NOTE: This much improved PDF output makes more sophisticated use of
functionality in the PDF specification. This means that cairo's output
will sometimes expose bugs in some free software PDF viewers, (evince,
poppler, and xpdf, for example), that are not yet ready for such PDF
files. We're working with the poppler maintainers to get these bugs
fixed as quickly as possible. In the meantime, please double-check
with other PDF viewers if cairo-generated PDF files are not being
rendered correctly. It may be due to a bug in the viewer rather than
in the PDF file that cairo has created.

Robustness improvements
Chris Wilson has made the largest contribution by far to cairo 1.5.2,
(in number of commits). His more than 150 commits include a huge
number of fixes to increase cairo's robustness. These fixes make cairo
more robust against invalid and degenerate input, (NaN, empty path,
etc.), against size-0 malloc calls, against memory leaks on
error-recovery paths, and against other failures during error
handling. He also implemented atomic operations to cairo, and used
them to fix cairo's previously non-thread-safe reference counting,
again improving robustness.

Chris has put a tremendous amount of time and effort into writing
analysis tools for this work, and in running those tools and fixing
the problems they report. We're very grateful for this work, and hope
that all cairo users appreciate the more robust implementation that
results from it.

This work is largely thankless, so it might make sense to notice
sometime that cairo has been running quite smoothly for you, and when
you do, send a quick "thank you" off to Chris Wilson, since it
is all definitely running smoother thanks to his work.

There are no major additions to cairo's core API. The only new,
generic functions are:

	cairo_surface_copy_page (cairo_surface_t *surface);

	cairo_surface_show_page (cairo_surface_t *surface);

which can now be used much more conveniently than the existing
cairo_copy_page and cairo_show_page functions in some
situations. These functions act identically, but require only a
cairo_surface_t* and not a cairo_t*.

All other API additions are specific to particular backends.

New cairo-win32 API (new font face function and "win32 printing" surface)
There is a new function for creating a win32 font face for both a
logfontw and an hfont together. This complements the existing
functions for creating a font face from one or the other:

	cairo_font_face_t *
	cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont,
							 HFONT font);

There is also a new "win32 printing" surface:

	cairo_surface_t *
	cairo_win32_printing_surface_create (HDC hdc);

This interface looks identical to the original
cairo_win32_surface_create, (both accept and HDC), but the behavior of
this new surface is very different. It should only be called with a
printing DC, and will result in all drawing commands being stored into
a meta-surface and emitted after each page is complete, with analysis
to do as minimal image-based fallbacks as necessary. The behavior and
implementation shares much with the PDF and PostScript backends.

New cairo-ps API (EPS and PostScript level control)
An often requested feature has been the ability to generate
Encapsulated PostScript (EPS) with cairo. We have that now with the
following very simple API. Just do cairo_ps_surface_create as usual
then call this function with a true value:

	cairo_ps_surface_set_eps (cairo_surface_t       *surface,
				  cairo_bool_t           eps);

[NOTE: As always with snapshots, it's possible---though not very
likely---that the API could still be modified before a final
release. For example, this is the first public cairo function that
accepts a Boolean parameter. I'm generally opposed to Boolean
parameters, but this is probably the one case where I'm willing to
accept one, (namely a "set" function that accepts a single Boolean).]

Also, it is now possible to control what PostScript level to target,
(either level 2 or level 3), with the following new API:

	typedef enum _cairo_ps_level {
	} cairo_ps_level_t;

	cairo_ps_surface_restrict_to_level (cairo_surface_t    *surface,
					    cairo_ps_level_t    level);

	cairo_ps_get_levels (cairo_ps_level_t const  **levels,
			     int                      *num_levels);

	const char *
	cairo_ps_level_to_string (cairo_ps_level_t level);

Improvement for cairo-quartz
Brian Ewins had contributed several improvements to cairo-quartz. These
include an implementation of EXTEND_NONE for linear and radial
gradients, (so this extend mode will no longer trigger image fallbacks
for these gradients), as well as native surface-mask clipping, (only
on OS X 10.4+ where the CGContextClipToMask function is available).

He also fixed a semantic mismatch between cairo and quartz for dashing
with an odd number of entries in the dash array.

We're grateful for Brian since not many quartz-specific improvements
to cairo would be happening without him.

Optimize SVG output for when the same path is both filled and stroked,
and avoid unnecessary identity matrix in SVG output. (Emmanuel Pacaud).

Optimize PS output to take less space (Ken Herron).

Make PS output more compliant with DSC recommendations (avoid initclip
and copy_page) (Adrian Johnson).

Make PDF output more compact (Adrian Johnson).

Release glyph surfaces after uploading them to the X server, (should
save some memory for many xlib-using cairo application). (Behdad

Optimize cairo-win32 to use fewer GDI objects (Vladimir Vukicevic).

win32-printing: Avoid falling back to images when alpha == 255
everywhere. (Adrian Johnson).

win32-printing: Avoid falling back for cairo_push_group and
cairo_surface_create_similar. (Adrian Johnson)

Bug fixes
Avoid potential integer overflows when allocating large buffers
(Vladimir Vukicevic).

Preparations to allow the 16.16 fixed-point format to change to
24.8 (Vladimir Vukicevic).

Fix bugs for unsupported X server visuals (rgb565, rgb555, bgr888, and
abgr8888). (Carl Worth and Vladimir Vukicevic)

Fix bugs in PDF gradients (Adrian Johnson).

Fix cairo-xlib to build without requiring Xrender header
files (Behdad Esfahbod).

Make cairo more resilient in the case of glyphs not being available in
the current font. (Behdad Esfahbod)

Prevent crashes when both atsui and ft font backends are compiled in
(Brian Ewins).

Make font subsetting code more robust against fonts that don't include
optional tables (Adrian Johnson).

Fix CFF subsetting bug, (which manifested by generating PDF files that
Apple's Preview viewer could not read) (Adrian Johnson).

Fixed error handling for quartz and ATSUI backends (Brian Ewins).

Avoid rounding problems by pre-transforming to avoid integer-only
restrictions on transformation in GDI (Adrian Johnson).

Fixed an obscure bug (#7245) computing extents for some stroked
paths (Carl Worth).

Fix crashes due to extreme transformation of the pen, (seems to show
up in many .swf files for some reason) (Carl Worth).

Fix glyph rendering when using a bitmap strike with a scaling-only
transformation (Keith Packard).

Summary of changes from 1.4.10 to 1.5.2
Adrian Johnson (61):
      CFF Subsetting: fix integer encoding bug
      PDF: Fix gradients regression
      PDF: Fix regression in pdf_surface_set_size()
      PS: Add finer-grained image fallback support
      PS: Remove debug info from PS output
      Add finer-grained fallback support to the PDF surface
      Fix PDF regression with multipage documents
      PDF: Clean up comments
      PDF: Remove unused code
      Fix PDF gradients bug
      Fix unbounded operator bug in analysis surface
      Add support for PDF meta-surface patterns
      Eliminate unclipped CLEAR from meta-surface playback
      Create meta-surface source image with same content type as the
      Add PDF support for cairo_mask()
      PDF: Remove BC entry from Smask dictionary
      PS: Remove copy_page()
      PDF: Fix copy_page() bug
      PS: Remove initclip operator
      Change paginated surface size when PS/PDF _set_size() called
      Analysis-surface: Use pattern extents to limit show_glyphs extents
      ROADMAP: Add metadata API
      PDF: Add support for CAIRO_FORMAT_A8 images
      Add mask-alpha test
      Truetype Subsetting: Avoid failing when fonts are missing optional tables
      Add Encapsulated PostScript API
      Add Encapsulated PostScript support
      PDF: Remove duplication from the resource dictionary
      PDF: Compress the content stream
      PDF: Fix bug in font resources when same font is in multiple groups
      PDF: Compress pattern and group streams
      CFF Subetting: Fix for #10849
      PDF: Fix bug in font resources
      ROADMAP: Mark EPS support done
      TODO: Remove PDF encoding issues
      Type1 subset: Add check for CFF fonts
      PS: Add meta surface pattern support
      Add PS reference images for tests using create_similar
      Add cairo_ps_surface_restrict_to_level() API
      Fix bug in _gradient_is_opaque()
      PS: Add linear and radial gradient support
      Add PS reference images for tests using gradients
      Add meta-surface-pattern test
      PS/Win32-printing: remove redundant checks from _analyze_operation
      PS: Add support for images with bilevel alpha
      Make PostScript output text selectable
      PDF: Add support for linear gradients with REPEAT and REFLECT
      PDF: Add support for CAIRO_FORMAT_A1 images
      win32-printing: Add missing struct initializers
      win32-printing: check if images are opaque
      update cairo-sections.txt
      win32-printing: add meta surface pattern support
      win32-printing: fix rounding problems when using pattern matrix
      win32-printing: fix stroke rounding problems
      win32-printing: Use the surface ctm in show_glyphs
      win32-printing: Add test boilerplate
      win32-printing: fix dash-caps-joins test failure
      win32-printing: fix typo in comment
      win32-printing: remove unused code
      win32-printing: fix error in comment
      PDF: Fix meta surface patterns with EXTEND_REFLECT

Behdad Esfahbod (35):
      Clear executable flag off .c file
      [configure.in] Cleanup after pixman removal and correctly check for pixman
      [cairo-paginated-surface] Add XXX mark to integer width,height arguments
      [cairo-image-surface] Simplify device-offset usage
      [scaled-font] Really ignore ctm translation
      Fix device_offset misuse in all glyph surface uses
      [cairo-scaled-font] Document how glyph surfaces use device offsets
      [ROADMAP] Mark fine-grained fallbacks done
      [Makefile.am] Use libcairo_la_CFLAGS instead of INCLUDES
      [Makefile.am] Add target splint to run splint static source code analyzer
      [cairo-image-surface] Fix comment syntax
      [Makefile.am] Inhibit unrecognized options to splint
      [Makefile.am] Move -DHAVE_CONFIG_H to the right place
      [Makefile.am] Add target sparse to run sparse static source code analyzer
      [Makefile.am] Run sparse and splint once per source file
      [boilerplate] Build libcairoboilerplate.la in make check and make test
      Fix header inclusion order
      [perf] Make cairo-perf-diff build cairo-perf-diff-files
      [configure.in] Document version scheme
      [configure.in] Make PS backend require zlib too (#12210)
      [cairo-path-fixed] typedef char cairo_path_fixed_op_t
      [cairo-path-fixed] Remove leftover typedef keyword
      [xlib] Make it compile without Xrender available at compile time (#12210)
      [cairo-xlib-xrender-private] Add copyright/license info for copied files
      [cairo-xlib-xrender-private] Remove some protocol-specific macros
      Merge branch 'no-xrender.h' into cairo
      [configure.in] Fix non-pkgconfig Xrender detection path (#4724)
      [test,perf] Support TARGETS_EXCLUDE make variable
      [PDF] Fix typo in comments
      [cairo-gstate] Fix comment about font_matrix having zero translation
      [ChangeLog.mk] Make make rule depend on .git/HEAD, not .git
      [cairo-ft-font] Ignore FT_Load_Glyph errors other than out-of-memory
      [ROADMAP] Mark xlib IncludeInferior support done
      [ChangeLog.mk] Fix changelog generation rules
      [cairo-xlib] Release glyph surfaces if we made them to be generated

Brian Ewins (16):
      [type1-subset] only subset ft fonts
      Fix to support new similar tests.
      propagate cairo_status_t return values
      do not ignore errors in glyph paths
      do not ignore ATSUI errors.
      do not ignore errors when creating styles.
      do not ignore errors in setup_source
      do not ignore errors, return NULL instead (moz#874315)
      do not return a cairo_status_t of UNSUPPORTED
      call _cairo_error on failure
      Implement EXTEND_NONE for gradients.
      fix dash-zero-length test
      implement clipping with surface masks.
      [quartz] return status instead of CGShadingRef
      [quartz] return status instead of cairo_quartz_surface_t
      [quartz] return status instead of CGPatternRef

Carl Worth (38):
      Increment version to 1.5.1 after the 1.4.10 release
      Ensure that a copied pattern gets its own user_data array
      Use 8-bit math to flatten color when emitting a solid pattern to PostScript
      Add a new xlib-fallback target to test xlib using image fallbacks instead of the Render extension
      Ensure the Render extension is initialized before calling XESetCloseDisplay
      Eliminate fragile cairo_internal_format_t
      Use a pixman_format_code to describe the image surface used for xlib fallbacks
      Restore the error message for unsupported X server visuals
      Add support for image fallbacks for X servers with 565 visuals
      Add support for image fallbacks for X servers with 555 visuals
      Remove include of cairoint.h from *-private.h header files.
      Remove build-breaking debugging helper.
      Merge branch 'cairo-origin' into cairo
      Add four new test to exercise interactions of native and fallback objects
      Add PS-specific reference images for 4 tests
      Modify ps-specific reference images for ft-text-vertical tests
      One more PS-specific reference image (for over-between-source)
      Remove svg2pdf and pdf2svg programs from test directory
      Add explanation of pdf_ignored_tests with links to upstream poppler bug reports
      Disable 7 cairo-pdf tests due to poppler knockout-group bug
      Disable radial-gradient and unbounded-operator tests for pdf
      Fix error in description of cairo version numbers
      Add rgb24-ignore-alpha test
      Merge branch adrianj/pdf-meta-surface-pattern into cairo
      Add rgb24-specific reference imag for mask-alpha test
      Fix typo in _cairo_gstate_fini
      Annoying churn of sgml templates
      Add figure illustrating derivation of miter limit
      Limit miters for small angles
      Fix remaining two calls to _cairo_path_fixed_get_current_point
      Improve brace readability for multi-line conditional
      Merge in fix for get-path-extents test case.
      Update URLs for pixman to point to cairographics.org
      Add degenerate-pen test case.
      Fix degenerate-pen test case by removing the triggering assertion
      Add notes for 1.5.2 snapshot
      Increment cairo version to 1.5.2 and libtool versioning to 14:0:12
      Add missing images to REFERENCE_IMAGES list

Chris Heath (1):
      [autogen.sh] Tolerate tput failure (#12757)

Chris Wilson (156):
      [configure] Only run PostScript tests if we have ghostscript.
      [cairo-matrix] Check determinant for invalid numbers.
      [check-plt] Ignore entries for pixman.
      [cairo-glitz-surface] Compile fix.
      [cairo-ft-font] Decrement lock count on error.
      [cairo-boilerplate-xlib] Check for NULL xrender_format before use.
      [cairo-pattern] Assert that the pattern->matrix is invertible.
      [cairo-pdf-surface] cairo_pattern_set_matrix guarantees invertibility.
      [cairo-pen] Remove hard-coded CAIRO_STATUS_SUCCESS from _stroke_spline_half()
      [cairo-pen] Remove status from _cairo_pen_find_active_vertex_*()
      [cairo-image-surface] Remove status return for hard-coded CAIRO_STATUS_SUCCESS.
      [cairo-pdf-surface] Check for errors during compression.
      [cairo-png] Protect against malloc(0).
      [cairo-truetype-subset] Avoid malloc(0).
      [boilerplate/xmalloc] Special case malloc(0) and friends.
      [cairo-image-surface] Avoid malloc(0)
      [cairo-xlib-surface] Avoid a malloc(0).
      [cairo-perf-diff] Remove reference to pixman.
      Fix inadvertent executable mode flip.
      [cairo-boilerplate-xlib] Clear Render data for the non-Render fallback.
      [cairo-boilerplate-xlib] Check that the surface will fit in the screen.
      [cairo-perf] Blacklist xlib-fallback.
      [cairo-gstate] Avoid copying untransformed glyphs.
      Revert "[cairo-gstate] Avoid copying untransformed glyphs."
      [cairo-surface] Add a comment about why the glyph array is not const.
      [cairo-boilerplate] Introduce CAIRO_TEST_TARGET_EXCLUDE.
      [cairo-ft-font] Early detection of a zero sized bitmap.
      [cairo-clip] Avoid a malloc(0).
      [cairo-region] Call _cairo_error() at original error site.
      [cairo-boilerplate] Do not throw an error if an exclude target is not found.
      Move GCC attributes wrapping into a separate header.
      [cairo-atomic] Introduce atomic ops.
      [cairo-atomic] Rewrite reference counting using atomic ops.
      [cairo-atomic]  Do not use Intel atomic primitives on i386.
      [cairo-png] Propagate error from read and write funcs.
      [test/create-for-stream] Add test case for user error propagation.
      [test/create-for-stream] Add the missing cairo_surface_finish().
      [test/get-path-extents] Test extents of an arc.
      [test/get-path-extents] Test extents of cairo_text_path().
      [configure] Work-around bad interaction of libtool and lcov
      [cairo-path] Don't raise an error when attempting to create an empty path.
      [cairo-image-surface] Return correct error surfaces.
      [cairo-image-surface] Avoid trying to create surfaces with invalid strides.
      [cairo-pen] Add _cairo_error().
      [cairo-polygon] Add a _cairo_error().
      [malloc] Check for integer overflow when realloc'ing.
      [malloc] Take advantage of calloc() argument checking.
      [malloc/error] Add call to _cairo_error() after a failed malloc.
      [cairo-path] Check for an empty path in cairo_append_path().
      [malloc/error] Fixup _cairo_error (CAIRO_STATUS_SUCCESS)!
      [cairo-atomic] Use an atomic operation to set the status on a shared resource.
      [cairo-error] Make _cairo_error() return the error status.
      [cairo-error] Clean up all the warnings and missing _cairo_error() calls.
      [cairo-error] Another _cairo_error (CAIRO_STATUS_SUCCESS)!
      [cairo-output-stream] Propagate error status when copying streams.
      [cairo-ft-font] Always call _cairo_ft_unscaled_font_fini ().
      [cairo-font-face] Set the error on the font.
      [cairo-scaled-font] Return the error status from _cairo_scaled_font_set_error()
      [cairo-scaled-font] Store fatal errors on the cairo_scaled_font_t.
      [cairo-scaled-font] Destroy the mask on the error path.
      [cairo-scaled-font] Freeze the font cache whilst iterating over glyphs.
      [cairo-matrix] Check whether a matrix is invertible before use.
      [cairo-gstate] Fix resource leaks on error paths.
      [cairo-scaled-font] Acquire mutex around _cairo_scaled_font_glyph_path().
      [cairo-scaled-font] Don't hold onto to a dropped font.
      [cairo] Protect the getters when operating on the nil object.
      [cairo-debug] Finalize mutexes along with other static data.
      [cairo-cff-subset] Propagate errors and review error paths.
      [cairo-truetype-subset] Do mask error status returns.
      [cairo-type1-subset] Do not mask error returns.
      [cairo-surface] Propagate fatal errors to the surface.
      [cairo-meta-surface] Propagate errors during replay to the surface.
      [cairo-output-stream] Guard against destroying the nil streams.
      [cairo-ps-surface] Check the creation of output streams.
      [cairo-image-surface] Check for errors whilst cloning.
      [cairo-pdf-surface] Propagate resource allocation failure.
      [Makefile] Correct parameters to lcov reset.
      [cairo-deflate-stream] Return the nil stream if creating from an error stream.
      [cairo-pdf-surface] Propagate errors from opening/closing groups.
      [cairo-pdf-surface] Propagate errors during pattern selection.
      [cairo-pdf-surface] Propagate errors from close_stream.
      [cairo-pdf-surface] Add some missing error propagation.
      [cairo-svg-surface] Review error propagation.
      [cairo-type1-subset] Propagate error status (correctly!)
      [cairo-atomic] Hide compiler warnings for _cairo_status_set_error().
      [cairo-type1-fallback] Propagate error from closing the stream.
      [cairo-surface-fallback] Release the acquired image on error.
      [cairo-surface] Add the usual guards to the API entry point.
      [cairo-scaled-font] Destroy the zombie font.
      [cairo-scaled-font] Mask cannot be NULL so remove redundant check.
      [cairo-png] Markup a couple of original error sites with _cairo_error().
      [cairo-scaled-font-subset] Propagate errors during collection.
      [test-surfaces] Mark the test backend as static.
      [test-paginated] Free resources if fail to create the test surface.
      [cairo-xlib] Initialize the global mutexes.
      Cleanup a couple of warnings for use of uninitialized statuses.
      [cairo-ps-surface] Propagate errors from emit_pattern().
      [cairo-pdf-surface] Propagate error status.
      [cairo-pdf-surface] Destroy local resources on failed surface creation.
      [cairo-pdf-surface] Check for pdf_resource_t allocation failure.
      [cairo-boilerplate-xlib] Cleanup fallback after creation failure.
      [cairo-ps-surface] Cleanup ps surface after creation failure.
      [cairo-xlib-display] Rescan the displays list during shutdown.
      [cairo-paginated-surface] Propagate backend errors to the surface.
      [cairo-scaled-font-subsets] Increment the sub_font counter after insertion.
      [cairo-pdf-surface] Check status return after emit_meta_pattern().
      [cairo-traps] Simplify the status interaction of traps_grow().
      [cairo-clip] Propagate error status from clip_intersect_path().
      [cairo-hull] Remove a couple of redundant status returns.
      [test-meta-surface] Propagate error from show_page().
      [cairo-cff-subset] Propagate error status from failed append_copy().
      [boilerplate-test-surfaces] Check show page for errors.
      [cairo-xlib-surface] Propagate error from _draw_image_surface() to surface.
      [cairo-glitz-surface] Propagate errors from set_image().
      [cairo-image-surface] Dead code elimination.
      [configure.in] Initialise test_svg.
      [win32] Clean up compiler warnings.
      Fix some trivial syntax warnings for -ansi.
      [Makefile.am] Change lcov-clean to use more portable constructs.
      [cairo-pdf-surface] Restore old_group for failed emit_meta_surface().
      [cairo-pdf-surface] Free the clip path on error.
      [cairo-png] Clean up volatile warning.
      [cairo-ps-surface] Close a couple of memory leaks.
      [cairo-pdf-surface] Return UNSUPPORTED from _to_unicode_stream().
      [cairo-path-stroke] Jump to cleanup after error.
      [Makefile.am] Add missing headers and reference images.
      [cairo-path-fixed] Drop the _cairo_error() markup.
      [cairo-clip] Pass the local pattern to create_similar_solid().
      [cairo-ft-font] Add paranoid error checking to Fc* operations.
      [pdiff] Check for too small images.
      [pdiff] Reorganise the inner loops of the convolution.
      [test/rgb24-ignore-alpha] Destroy the surface after use.
      [cairo-xlib] Move the buggy_repeat discovery to the display_t.
      [cairo-scaled-font-subsets] Simplify boolean return code.
      [test/.gitignore] Add *.exe.so
      [check-plt] Use -W flag to readelf.
      [cairo-xlib-surface] Match content to xrender_format using the channel masks.
      [Makefile.am] Fix ${top_srcdir}/libtool
      [cairo-clip] Avoid work when all clipped out.
      [cairo-xlib] Check source for XRender support.
      [cairo-test] Repeat tests for similar surfaces.
      [cairo-perf] Run performance tests over similar surfaces as well.
      [cairo-matrix] Check user input for invalid numbers.
      [cairo-perf-diff-files] Check for terminator before comparing tests.
      [cairo-perf-diff-files] Only use a valid initializer for min_test.
      [cairo-test] Remove executable flag from source files.
      [cairo-gstate] Check scale sx * sy != 0.
      [cairo-gstate] Add NaN check to rotate.
      [cairo-gstate] Add a missing _cairo_error() markup.
      [cairo-gstate] Allow angle==0 whilst rotating.
      [test/get-path-extents] Add link to bug report.
      [cairo-surface] Add the usual guards to _cairo_surface_set_font_options().
      Simplify return value from cairo_path_fixed_get_current_point().
      [cairo-path] Make _cairo_path_nil static.
      [cairo-path] Return CAIRO_STATUS_SUCCESS.
      [cairo-surface] Fix typo in doc.

Emmanuel Pacaud (5):
      [SVG] fix modeline for vim.
      Add a new fill_stroke surface backend method.
      [SVG] Implement fill_stroke method.
      [SVG] Don't emit transform property when matrix is identity.
      [SVG] Suppress code duplication by using _cairo_svg_surface_emit_stroke_style

Jeff Muizelaar (1):
      Fix theoretical NULL return from cairo_pop_group()

Jinghua Luo (1):
      [Glitz] fix compilation.

Jody Goldberg (1):
      [PDF] The symbol 'GROUP' is already used on some win32 systems; add a prefix

Jonathan Gramain (1):
      [cairo-gstate] Fix order of matrices in _cairo_gstate_backend_to_user_rectangle()

Keith Packard (1):
      Force non-AA text when using a bitmap strike with only scaling transform.

Ken Herron (1):
      PS output optimizations (#11442)

Martin Ejdestig (1):
      Plug possible leak of pixman_traps in _cairo_image_surface_composite_trapezoids.

Nis Martensen (1):
      Typo fixes in README files

Søren Sandmann (5):
      [pixman] Initial port to standalone pixman library.
      Fix initialization of radial patterns
      Fix bug where _cairo_image_surface_composite_trapezoids() computed the wrong stride for aliased masks
      pixman_image_set_transform() returns FALSE on failure
      Add note about pixman dependency in README

Søren Sandmann Pedersen (2):
      Merge branch 'master' of git+ssh://sandmann@git.freedesktop.org/git/cairo
      Bump pixman dependency to 0.9.4

Vladimir Vukicevic (40):
      [fix] Avoid int overflow when allocating large buffers
      [fixpt] Update quartz surface for new types
      [fixpt] Make fixed point methods static inline and generic
      [fixpt] Use _cairo_fixed_mul insted of manual multiplication
      [fixpt] Replace cairo_rectangle_int16_t with cairo_rectangle_int_t
      [fixpt] fix up image surface to translate to 16.16 for pixman
      [fixpt] remove dependency on some pixman types
      [fixpt] Fix xlib surface to handle conversion to 16.16
      [fixpt] Fix xcb surface to handle conversion to 16.16
      [fixpt] Create cairo_region wrapper around pixman_region16_t
      [fixpt] Let the compiler calculate the magic double-to-fixed value
      [fixpt] Fix up compilation post pixman merge
      [fixpt] Fixup malloc usage to use _cairo_malloc_*
      [win32] compilation fix for win32
      Fix path_fixed_offset_and_scale to apply scale and offset in right order
      Fix image_extra arg in call to _cairo_release_source_image
      [win32] check correct surface for BitBlt support in get_subimage
      [win32] Update win32 Makefiles
      Implement fallback for clone_similar
      [win32] Add cairo_win32_font_face_create_for_logfontw_hfont
      [win32] call free() and not scaled_font_destroy() if scaled init fails
      Fix previous create_similar fallback patch
      [win32] call scaled_font_fini in create before returning NULL
      Add b8g8r8 formats to cairo-image-surface
      [mlk] Free boxes in copy_rectangle_list on success
      Export cairo_surface_{copy,show}_page
      Update cairo-sections.txt
      Let surfaces specify their native resolution, for fallback purposes
      [win32] Add win32 printing surface
      Make NO_MUTEX really mean no mutexes
      [win32] add new win32 printing surface
      fix trailing whitespace
      Avoid divide-by-zero when trying to allocate a 0-sized array
      [win32] remove ignore_operators flag from win32 printing surface
      [win32] report error correctly if CreateCompatibleBitmap fails
      [win32] return a nil surface, not NULL
      [win32] reduce GDI object usage
      Fix win32 printing surface copyright notice
      [win32] mask win32 printing vertex colors with 0xff00 per docs
-------------- 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/20071030/8edaa1df/attachment-0001.pgp 

More information about the cairo-announce mailing list