GNOME 3594 Published by

A new cairo snapshot 1.3.14 is now available from:

which can be verified with:
648981b1e04eb231a82befea8eaf39e01502001c cairo-1.3.14.tar.gz
(signed by Carl Worth)

Additionally, a git clone of the source tree:

git clone git://

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

which can be verified with:
git verify-tag 1.3.14

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

This is the seventh development snapshot in the 1.3 series, (and there
likely won't be many more before the 1.4.0 release). It comes just
over 3 weeks after the 1.3.12 snapshot.

Since we're so close to the 1.4.0 release, there are not a lot of new
features nor even a lot of new performance improvements in this
snapshot. Instead, there are a great number of bug fixes. Some are
long-standing bugs that we're glad to say goodbye to, and several are
fixes for regressions that were introduced as part of the optimization
efforts during the 1.3.x series.

Major improvements between 1.3.12 and 1.3.14
PDF text selection fixed
The inability to correctly select text in cairo-generated PDF has been
a defect ever since the initial support for the PDF backend in the
cairo 1.2.0 release. With the 1.3.14 snapshot, in most situations, and
with most PDF viewer applications, the PDF generated by cairo will
allow text to be correctly selected for copy-and-paste, (as well as

We're very excited about this new functionality, (and very grateful to
Adrian Johnson, Behdad Esfahbod, and others that have put a lot of
work into this lately). Please test this new ability and give feedback
on the list.

Many thread-safety issues fixed
We've discovered that no release of cairo has ever provided safe text
rendering from a multi-threaded application. With the 1.3.14 snapshot
a huge number of the bugs in this area have been fixed, and multiple
application developers have now reported success at writing
multi-threaded applications with cairo.

Other fixes
Fixed a bug that was causing glyph spacing to be 32 times larger than
desired when using cairo-win32.

Fixed a regression in the rendering of linear gradients that had been
present since the 1.3.8 snapshot.

Fixed several problems in cairo-atsui that were leading to assertion
failures when rendering text.

Fix corrupted results when rendering a transformed source image
surface to an xlib surface. This was a regression that had been
present since the 1.3.2 snapshot.

Fixed PDF output to prevent problems printing from some versions of
Acrobat Reader, (a single glyph was being substituted for every

And many other fixes as well, (see the log below for more details).

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 including stroking and filling
cubic B=E9zier 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:

Summary of all changes from 1.3.12 to 1.3.14
Adrian Johnson (16):
TrueType Subsetting: Add comment
TrueType Subsetting: Whitespace change
TrueType: Include notdef glyph in the subset
PDF: Add Encoding dictionary to TrueType fonts
PDF: Fix TrueType font metrics
PS: Correct the TrueType Encoding and Charstrings
PDF: Correct the y value of Td in show_glyphs
PDF: Make text selection and extraction work
PDF: Another fix for TrueType metrics
PDF: Fix Type3 font metrics to make text selection work
PDF: Compress Type3 fonts
Output-stream: Omit the minus sign from negative zero
PDF: Remove dead code
CFF: Fix Visual C++ compile problem
output-stream: coding style fix
PDF: Add missing character code to Differences array

Behdad Esfahbod (4):
PDF: Fix approximate diagonal in recent commit
[pixman/src/fbmmx.c] Hide "dereferencing type-punned pointer" warnings
[] Use AC_MSG_RESULT in PKG_CHECK_MODULES's second branch
[pixman/src/fbmmx.c] Add comment around M64

Brian Ewins (5):
[ATSUI] Handle deleted glyphs correctly. (#9530)
[ATSUI] out-of-range glyphs should be treated as deleted. (#9530)
[ATSUI] Some glyph operations cannot be 'unsupported'. (#9530)
Unreleased lock typo in cairo-scaled-font.c
[ATSUI] scale fonts using font size not font matrix

Carl Worth (32): Increment version to 1.3.13 after making the 1.3.12 sna
doc tmpl churn
Add rotate-image-surface-paint test case
Fix _cairo_pattern_acquire_surface_for_surface to not clone outside s
urface extents
Add two tests of cairo_surface_finish to test/nil-surface.c
Fix crashes in cairo_surface_finish for NULL or nil
Don't finish a finished surface in cairo_surface_destroy
ROADMAP: Add bug about broken cairo_show_text on win32
ROADMAP: Note that linear gradient bug is fixed.
Don't hold mutex over backend->scaled_font_create
Avoid holding lock when calling _cairo_scaled_font_fini
Move scaled font holdovers magic from reference to create to fix race
Add scaled_font->mutex to allow locking for all subordinate objects
Remove half-leftover debugging code from previous commit
Remove dead cff_dict_remove function
ROADMAP: Note that the 8801 locking bug is fixed.
ROADMAP: Drop 1.3.6 which is already in the past and note 8379 fix an
d pixman gradient improvements
test/pthread-show-text: Increease iterations to expose locking bug
Expand font_map locking to cover call to backend->scaled_font_create
Add missing locking to _cairo_scaled_font_text_to_glyphs
Add missing _cairo_ft_unscaled_font_unlock_face to _cairo_ft_scaled_f
Avoid public cairo_ft_scaled_font_lock_face for internal use
Add mutex to implement _cairo_ft_unscaled_font_lock_face and _cairo_f
Increase pthread-show-text thread count and add cairo_select_font_fac
e to expose more bugs.
Add locking to cairo_font_face_reference/destroy
Rename cairo_toy_font_face_hash_table_mutex to cairo_font_face_mutex
ROADMAP: Note that text spacing issues for win32 are fixed
Add missing call to set_scale of unscaled_font in scaled_glyph init
Fix cairo_ft_unscaled_font_t to have a lock_count again not an is_loc
ked Boolean
Mark test/rotate-image-surface-paint as XFAIL
NEWS: Add notes for the 1.3.14 snapshot
Increment cairo version to 1.3.14 (and libtool versioning to 12:4:10)

Dan Amelang (3):
Add "rectangles" perf test
Fix Win32 text spacing problem
Update Win32 makefiles

David Turner (1):
fixing gradient repeat mode computations

Eugeniy Meshcheryakov (7):
[PDF-CFF] Fix bad /LastChar value for CFF fonts in PDF backend
CFF Subsetting: Add charset data to embedded font
TrueType Subsetting : Correct the checksum calculation
TrueType Subsetting: Correct the checksum calculation of 'head' table
TrueType Subsetting: Sort table directory
[cairo-surface] Use a macro definition for all nil surfaces
[PS/PDF/SVG] Return a write_error nil surface on write errors

Jinghua Luo (1):
type1-subset: fix error handling.

Kalle Vahlman (1):
[cairoint] Make it compile with libpng disabled

Michael Emmel (2):
Turned off acclerated rectangle drawing in dfb backend
Merge branch 'master' of ssh+git://

Peter Weilbacher (2):
Correct scaled font mutex definitions for OS/2
Oops, correct typo in previous commit

Soren Sandmann Pedersen (2):
Remove left-over assert and some alpha checks from
Apply patch from Marco Gritti and Jordan Crouse to correctly detect

T Rowley (1):
Add linear-gradient-reflect test case

Vladimir Vukicevic (3):
[atsui] add function prototype for a public 10.4 function that's
[win32] regression with win32 glyph y-offsets (mozbug#365021)
[mmx] avoid casts between int32 and __m64 types