[cairo-announce] cairo snapshot 1.5.18 now available

Carl Worth cworth at cworth.org
Sun Apr 6 03:31:08 PDT 2008

A new cairo snapshot 1.5.18 is now available from:


    which can be verified with:

        68d9e7fed9158d8584cf8a7831fe7b3441f7970f  cairo-1.5.18.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.18 tag which points to a commit named:

    which can be verified with:
        git verify-tag 1.5.18

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

This is the ninth snapshot in cairo's unstable 1.5 series. It comes
just 4 days after the 1.5.16 snapshot. We had hoped to not need
another snapshot before the final 1.6.0 release, but several critical
bugs were found and fixed in the last few days, so we thought it
important to let people test the fixes with this snapshot. See below
for details.

Have fun with cairo!


Summary of changes from cairo 1.5.16 to 1.5.18
The README now lists necessary dependencies.

Various graphics state defaults are now documented, (source pattern is
opaque black, line width is 2.0, line join is miter, line cap is butt,
miter limit is 10.0, etc.).

Several cleanups have been made along many error-path returns,
(carefully propagating up the original error status values, cleaning
up memory leaks during error recovery, etc.). This is yet another in
Chris "ickle" Wilson's long series of error-handling cleanups during
the 1.5 series.

Avoid undesired clipping when drawing scaled surface patterns with
bilinear filtering.

Fix emission of 1-bit alpha masks in PDF output.

Fix a bug that would cause glyphs to be misplaced along the Y axis:


    Originally, an issue about a crash, but later leading to the
    misplaced glyphs issue being discovered.

Fix misplaced glyphs in cairo's PostScript output.

    This issue occurs when consecutive glyphs are placed far
    apart. This case is exercised by the new ft-show-glyphs-table test
    case, which was originally inspired by the Debian bug #23474136
    mentioned above.

Fix more misplaced glyphs in cairo's PostScript output:

    The issue here showed up under very particular circumstance, (when
    converting a PDF file with a CFF font with CID Identity-H encoding
    and using glyph 0, (defined by the CFF specification as .notdef)
    as a space instead). More concretely, this problem appeared when
    converting the UbuntuDesktop.pdf file mentioned in this bug


    As usual with arcane font-encoding-specific bugs like this, many
    thanks to Adrian Johnson for his magical ability to dive into
    specifications and emerge almost instantaneously with fixes. And
    thanks to Sebastien Bacher for bringing the bug to our attention.

Fix serious failure on X servers without the Render extension.

    Since the 1.5.14 snapshot (with support for PseudoColor visuals),
    any application attempting to create a "similar" xlib surface would
    fail on an X server without the Render extension. Thanks to
    Frederic Crozat for pointing out that cairo's test suite was
    entirely failing when run against Xvfb.

Avoid crashing cairo-xlib applications for too-large glyphs

    Naively sending glyphs of any size to the X server will eventually
    violate the X limit on maximum request sizes. We now properly
    detect when a glyph would be too large and use existing fallbacks
    to render the glyph rather than trying to send it to the X server.

Enable the buggy_repeat workaround for Xorg servers < 1.4

    We have determined that Xorg 1.3.0 (as packaged in Fedora 8 at
    least) has a bug that can result in an X server crash when cairo
    uses certain X Render repeat operations, (as exercised by cairo's
    extend-reflect test). We avoid this crash by using fallbacks
    whenever a repeating surface is needed for any Xorg server with a
    version less than 1.4. This is slower, but should prevent the

    (Meanwhile, there appears to be a separate bug where some X
    servers or specific X-server drivers will use random pixmap data
    when asked to draw a repeating surface. The buggy_repeat
    workaround would also avoid those problems, but we have not yet
    characterized whether the new "version < 1.4" is a good
    characterization of those problems or not.)

Implement cairo_font_extents for this backend.

The cairo-quartz-font implementation added in the 1.5.14 snapshot was
entirely missing support for the cairo_font_extents function. Thanks to
Richard Hult for pointing out this obvious shortcoming, (and obvious
lack of coverage in our test suite):

	CGFont backend returns 0 font extents

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 versions of cairo can always be found at:


Documentation on using cairo and frequently-asked questions:


Mailing lists for contacting cairo users and developers:


Roadmap and unscheduled things to do, (please feel free to help out):


All changes from cairo 1.5.16 to cairo 1.5.18
Adrian Johnson (9):
      PDF: Fix glyph positioning bug
      PS: Fix emulation of 'Td' pdf operator
      Add PS reference image for ft-show-glyphs-table
      TrueType: Remove assert
      TrueType: Fix buffer check
      Add assert to scaled_glyph_lookup in scaled-font-subsets
      Type1-fallback: Use correct glyph advance in Type 1 charstrings
      Type1-fallback: Use correct glyph metrics for .notdef glyph
      scaled-font-subsets: Special case .notdef in a new subset

Carl Worth (18):
      Increment cairo version to 1.5.17 after 1.5.16 snapshot
      Add new ft-show-glyphs-table test to exercise recent glyph positioning bug fix
      Enable buggy_repeat workaround for X.Org servers < 1.4
      Add new filter-bilinear-extents test
      Replace open-coded transformation with a call to _cairo_matrix_transform_bounding_box
      _cairo_pattern_get_extents: Fix to allow for expansion based on filter
      Update smask-text reference image
      Change default filter from BEST to GOOD
      Revert "[README] Remove the Dependencies section as it falls out of date easily"
      README: Update dependencies
      Document EXTEND_REFLECT and EXTEND_PAD as implemented for surfaces since 1.6
      Document default extend modes
      Document toy nature of cairo_select_font_face
      Document many more defaults
      Document default opaque black source pattern.
      Add missing parens() to function name in gtk-doc comment
      NEWS: Add notes for 1.5.18 snapshot
      Increment cairo version to 1.5.18 and library versioning to 19:1:17

Chris Wilson (29):
      [cairo-pdf-operators] Destroy stream on error.
      [cairo-ps-surface] Check error status before potential illegal dereference.
      [cairo-svg-surface] Release acquired surface on error path.
      [cairo-pdf-surface] Check surface status before extracting the pdf target.
      [cairo-pdf-surface] Do not mask error during cleanup.
      [cairo-svg-surface] Missing status check.
      [cairo-ps-surface] Check surface status before extracting the ps target.
      [cairo-svg-surface] Check surface status before extracting the svg target.
      [cairo-xlib] Handle malloc failures for cairo_xlib_visual_info_t.
      [test/text-transform] Fix pattern leak.
      [cairo-xlib-surface] Preserve Visuals for non-TrueColor similar surfaces.
      [cairo-xlib-surface] Avoid writing to the error surface.
      [.gitignore] Add test/stroke-image
      [cairo-font-face] Cleanup up the font_face on the error path.
      [test] Add a1-mask.
      [cairo-pdf-surface] Do not bitswap big-endian A1 masks.
      [cairo-array] Guard against integer overflow whilst growing the array.
      [cairo-truetype-subset] Perform a quick sanity check that glyf end >= begin.
      [cairo-truetype-subset] Prevent accesses beyond the end of the glyph array.
      [cairo-truetype-subset] Check reads are within valid data.
      Add links to the font specifications.
      [test] Exercise "soft" masks.
      [pdf] Copy the glyphs for use within an smask group.
      [configure.in] Add a link to the LTP homepage.
      [test] Add bilevel image test case.
      [xlib] Avoiding sending glyphs > XMaxRequestSize.
      [test] Summarise failures per backend.
      [test] Disable jobserver with make check.
      [test] Remove some redundant evals from the summary.

Vladimir Vukicevic (2):
      [cgfont] Implement missing scaled font metrics
      [cgfont] typo fix
-------------- 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/20080406/5387b89e/attachment.pgp 

More information about the cairo-announce mailing list