[cairo-announce] cairo snapshot 1.11.2 now available

Chris Wilson chris at chris-wilson.co.uk
Sun Jan 23 08:59:00 PST 2011

A new cairo snapshot 1.11.2 is now available from:


    which can be verified with:

	40b9e1066fcd33c2aeecd800764b1aa5a0ac7bde  cairo-1.11.2.tar.gz

	(signed by Chris Wilson)

  Additionally, a git clone of the source tree:

	git clone git://git.cairographics.org/git/cairo

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

    which can be verified with:
	git verify-tag 1.11.2

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

Snapshot 1.11.2 (2011-01-23)

In this first snapshot along the way to cairo-1.12.0, we are very excited
to announce the introduction of Bezier surface gradients, known as type
6/7 gradients in PS/PDF parlance. This is the culmination of much work by
the dynamic duo: Adrian Johnson and Andrea Canciani. Thanks guys!

Also, I want to warmly welcome Uli Schlachter who recently joined the
Cairo community on a mission. That mission is to make cairo-xcb a
supported backend for 1.12. And for this snapshot he has made great
strides in fixing all the bugs I had left behind. Thanks Uli!

And we have also seen a new contributor, Alexandros Frantzis, who has
begun bringing up cairo-gl for GLESv2 devices. Thanks Alex!

And lastly, I must also thank Adrian and Andrea for the vast numbers of
bugs that they have tackled between them, fixing all those little corner
cases that lie hidden until too late.

API additions:

The ability to construct piece-wise Bezier surface gradients:


        constructs a pattern of type CAIRO_PATTERN_TYPE_MESH using


The introduction of a unique ID accessible via the mime data type:

List of all changes between 1.10.0 and 1.11.2
Adrian Johnson (74):
      Fix font metrics in PDF Type 1 fonts
      Add capability for font subsets to put latin glyphs in a separate subset
      pdf-operators: output (abc) style strings when font is latin
      Return latin to glyph mapping in cairo_scaled_font_subset_t
      Add winansi glyph names
      Type 1 subsetting: add support for latin subsets
      Type 1 fallback: add support for latin subsets
      PS: Enable support for latin subsets
      TrueType subsetting: embed a cmap for latin subsets
      PDF: Add support for latin subsets
      pdf-operators: fix bug that was causing unnecessary repositioning of text
      Fix font metrics in PDF Type 1 fonts
      pdf-operators: fix bug that was causing unnecessary repositioning of text
      pdf-operators: word wrap latin text strings
      Don't embed cmap in TrueType fonts embedded in PostScript
      CFF subset: add support for latin subsets
      PS: Allow %%BoundingBox and %%PageBoundingBox to be overriden using DSC comments
      remove unused variable
      Fix bug in subsetting check for winansi characters
      Don't put Type3 glyphs in latin subsets
      Refresh ft-show-glyphs-positioning pdf ref image
      Rewrite pdf-operators word wrapping
      PDF: Fix regression in EXTEND_NONE gradients
      PS: Remove redundant code
      PDF: Remove radial gradient fallback
      PS: Remove radial gradient fallback
      Type 1 subset: Fix glyph advance
      PDF: Fix regression in EXTEND_NONE gradients
      Type 1 subset: Fix glyph advance
      PDF: Don't use the currently set color  after a 'Q' operator
      PDF: Don't use the currently set color  after a 'Q' operator
      PDF: Use correct bfchar size in toUnicode for latin fonts
      CFF Subset: Remove debug code
      configure.ac.features: s/Meta/Recording/
      Fix type1-fallback bbox
      Move glyph names into separate file
      Type 1 glyph names: Do not use an array of pointers for winansi glyph names
      PDF: Fix toUnicode for CID fonts
      PDF: Restrict ActualText to PDF version >= 1.5
      win32: Use a font_face hash table to provide unique font faces
      win32-print: print as unicode where possible
      win32: fix font_face hashing
      PS/PDF: Fix regression when changing page size to a larger size
      PS: Fix regression - missing page content in EPS output
      PS: Fix regression - incorrect EPS bounding box
      Fix regression in fallback-resolution test
      configure.ac.features: s/Meta/Recording/     (cherry picked from commit 8f2f5e5ad4f8e5f18da903865bb2d2afce3a544e)
      Fix type1-fallback bbox     (cherry picked from commit 74873c82242e9c124b69e05d0f8abdf78983d62d)
      PDF: Restrict ActualText to PDF version >= 1.5
      PS/PDF: Fix regression when changing page size to a larger size
      PS: Fix regression - missing page content in EPS output
      PS: Fix regression - incorrect EPS bounding box
      Add unique_id mime type
      Use fallback font for synthetic fonts
      win32: add synthetic font subsetting support
      Document load_truetype_table function and ensure ft-font and Win32-font are compliant
      Check table size in cairo_truetype_get_style()
      Automate error checking for ps-eps test
      Fix xml-surface use of load_truetype_font
      Check is_synthetic() font backend exists before calling it
      PDF: Add missing clipper_reset
      Truetype subset: add missing unicode ranges to cmap
      PDF: Add missing clipper_reset     (cherry picked from commit 2ae2be36d4551906fd4edbc8bf07aaa7fe0c93cf)
      Fix fallback-resolution test
      Boilerplate: Set fallback resolution using force_fallbacks function
      Change fallback resolution test to use resolutions in multiples of 72
      CFF subset: fix subsetting of Euro glyph
      CFF subset: fix bug with euro glyph in fallback fonts
      CFF Subsetting: Subset subroutines
      PDF: Output a stencil mask for cairo_mask() with solid source and A1 mask
      mesh: Add mesh pattern type and enum values
      pdf,ps: Add native mesh pattern support
      pattern: Add public mesh pattern API
      test: Add tests for mesh patterns

Alexandros Frantzis (10):
      gl: Add functions to query GL version and extensions
      gl: Add infrastructure for calling GL functions using a dispatch table
      gl: Embed the GL dispatch table in the cairo-gl context and initialize it.
      gl: Add definitions for the core variant names of used GL constants
      gl: Use the dispatch table for calling ARB/EXT functions
      gl: Use the GL core 2.0 shader implementation for both GL 1.x ARB and GL 2.x
      gl: Remove GL 1.x ARB shader implementation
      gl: Replace GLEW by using the facilities provided by cairo-gl-info
      gl: Remove GLEW from the build system and the source tree
      gl: Fix condition that prevents setting the size of window surfaces

Andrea Canciani (179):
      test: do not leak resources
      image: add _cairo_image_reset_static_data
      test: do not leak resources
      xcb: Do not return value in void function
      quartz: Remove unused argument from _cairo_surface_to_cgimage
      quartz: Assert upon invalid enum values
      quartz: Check for valid patterns
      quartz: Don't typecast surfaces
      quartz: Fix function call coding style
      quartz: Mark failures as unlikely
      quartz: Whitespace cleanup
      quartz: Beautify code
      quartz: Use NOTHING_TO_DO instead of SUCCESS where appropriate
      quartz: Simplify cairo_quartz_surface_create_for_cg_context
      quartz: Remove useless code
      quartz: Improve handling of surface creation failure
      quartz: Improve _cg function types
      quartz: Handle failures in _cairo_quartz_setup_fallback_source
      test: Make tests run in natural order
      test: Add a new test result html page
      test: Remove old html infrastructure
      test: Update ref images for radial tests
      quartz: Remove linear gradient fallback
      quartz: Make radial gradients follow PDF specification
      quartz: Remove unused code
      Add _cairo_rectangle_union
      quartz: Improve gradient consistency
      quartz: Fix EXTEND_PAD gradients
      quartz: Improve gradient quality
      quartz: Remove DO_NOTHING and DO_UNSUPPORTED actions
      quartz: Set operator when setting up source
      quartz: Unify DO_SOLID and DO_PATTERN
      quartz: Unify DO_SHADING, DO_IMAGE and DO_TILED_IMAGE
      quartz: Move drawing state out of surface
      quartz: Cleanup gradient setup functions
      quartz: Remove unused imageSurface field
      test: Add romedalen images copyright information
      test: Fix get-path-extents
      path: Replace _cairo_path_fixed_is_equal with _cairo_path_fixed_equal
      path: Do not access flags directly
      path: Improve hashing
      path: Make path equality independent of flags
      path: Rename _cairo_path_last_op to _cairo_path_fixed_last_op
      path: Add utility functions
      path: Simplify close_path
      path: Cleanup _cairo_path_fixed_line_to
      box: Add box header
      box: Add _cairo_box_add_curve_to
      path: Move _cairo_path_fixed_add at the end of line_to and curve_to
      path: Drop degenerate line_to in _cairo_path_fixed_curve_to
      path: New path construction logic
      path: Add stroke_is_rectilinear flag
      path: Rename fill optimization flags
      path: Log flags
      path: Cleanup _cairo_path_fixed_transform
      path: Cleanup _cairo_path_fixed_iter_at_end
      path: Make _cairo_path_fixed_last_op assert on empty path
      path: Cleanup close_path
      path: Recompute flags in _cairo_path_fixed_translate
      path: Transform current_point and last_move_to in _cairo_path_fixed_scale_and_offset
      path: Recompute flags in _cairo_path_fixed_scale_and_offset
      path: Fix _cairo_path_fixed_transform
      path: Replace _cairo_path_fixed_extents_add with _cairo_box_add_point
      Fix degenerate arcs
      path: Tighten curve_to extents
      path-bounder: Simplify code
      path: Tighten transformed extents
      drm: Do not access path flags directly
      path: Solve co-dependency problem
      cff: Fixes for 'make check'
      script: Fix compilation
      quartz-font: Add truetype font table tags accessor
      quartz-font: Do not leak CFDataRef's
      image: Use correct size for allocation
      image: Use correct size for allocation
      configure: Correct reporting of tee backend
      quartz-font: Implement new load_truetype_table semantics
      ps: Fix painting
      ps: Fix painting
      array: Remove snapshot support
      array: Add read-only accessor
      array: Cleanup types
      configure: Correct reporting of tee backend
      Fix degenerate arcs
      test: Add romedalen images copyright information
      xcb: Do not return value in void function
      array: Silence warnings
      pdf: Silence compiler warnings
      array: Fix comment
      test: Add rectilinear-grid
      image: Fix compositing of unaligned boxes
      image: Fix _pixel_to_solid
      test: Fix ref images
      test: Add rectilinear-grid
      image: Fix compositing of unaligned boxes
      test: Fix ref images
      test: Handle crashed tests
      arc: Avoid infinite loop
      arc: Clamp to 65536 full circles
      test: Add arc-looping-dash
      test: Add arc-infinite-loop
      surface: Remove _cairo_surface_fill_rectangle
      pdf: Use composite rectangles in fill_stroke
      surface: Remove _cairo_surface_*_extents
      path: Cleanup unused current_point
      path: Always interpret in forward direction
      path: Remove support for inverse direction interpretation
      fill: Simplify path to polygon conversion
      polygon: Merge _cairo_polygon_init and _cairo_polygon_limit
      test: Update reference images list
      pdf: Use switch instead of multiple if's
      ps: Use switch instead of multiple if's
      pattern: Specialise signatures of pattern specific functions
      pattern: Improve extents computation of radial gradients.
      ps, pdf, pattern: Implement _cairo_pattern_alpha_range to analyse patterns.
      ps: Avoid unneeded fallbacks for gradients with opaque stops.
      pattern: Compute a covering parameter range of a gradient for a box.
      pattern: Use pattern parameter range when analysing all gradients.
      pattern: Add a function to interpolate gradient objects.
      quartz: Unify gradient construction and fix radial gradients.
      pdf: Unify gradient emitters and support all extend modes.
      ps: Unify gradient emitters and support all extend modes.
      ps,pdf: Deal with empty domain gradients.
      test: Update ref images
      path: Silence warnings
      test: Add bug-extents
      path-bounder: Update current point after curve_to op
      test: Add bug-extents
      gl: Fix #include's to pass 'make check'
      quartz: Clean up dynamically loaded functions
      quartz: Don't dynamically load unused functions
      quartz: Use native PDF blend modes
      Keep makefiles in alphabetical order
      gstate: Disallow incomplete mesh gradient sources
      Add mesh gradient rasterizer
      script: Add support for mesh patterns
      test: Extend pattern-get-type and pattern-getters for mesh patterns
      doc: Add documentation for the mesh API
      pattern: Remove unused 'opaque' variable
      pattern: Use cairo_color_stop_t when hashing gradient stops
      pattern: Make functions not used elsewhere static
      test: New radial-gradient tests
      matrix: Cairo matrix to pixman transform/offset conversion
      test: Make huge-* test gradients not within pixed_fixed_t range
      pattern: Factor out pattern rescaling
      test: Huge means more than MAX_INT
      pattern: Use double precision for gradient extreme objects
      matrix: Fix warnings about documentation by 'make check'
      pattern: Remove unused _cairo_pattern_size function
      xcb: Correct handling of index 0 glyphs
      xcb: Stricter glyph validation
      xcb: Handle a wider range of glyph positions
      xlib: Handle a wider range of glyph positions
      doc: Add links to flush() and mark_dirty() in direct access functions
      test: Add white-in-noop
      test: Add missing ref image to REFERENCE_IMAGES
      Fix optimization of white IN dest compositing
      xcb: Add a short comment to the Picture cache
      mesh: Do not declare min and max functions
      gl: Ensure that gl surface resizes are properly applied
      gl: Update radial gradient implementation
      gl: Don't ignore offset for gradient sources
      pdf,ps,quartz: Use correct tolerance for gradient domain computation
      Add a results.tar.gz target to the test Makefile
      test: Fix operator-alpha-alpha
      test: Update quartz ref images
      quartz: Use standard stack allocation size
      quartz: Make huge domain handling more stable
      quartz: Do not use opaque patterns as masks
      quartz: Cleanup extents computation
      quartz: Use CGLayer to implement unbounded operators
      quartz: Avoid using private APIs
      quartz: Respect pattern filter settings
      test: Workaround pixman limits in large-source-roi
      Bump pixman requirements to 0.20.2 for radial gradients
      clip: Improve _cairo_clip_contains_*
      test: Add group-state
      gstate: Set an error status when restoring a push_group
      gstate: Remove unused code

Behdad Esfahbod (2):
      Fix typo
      Add note re gtk-doc.make

Benjamin Otte (4):
      build: Don't build cairo-fdr when the tee surface is off
      build: Don't build cairo-fdr when the tee surface is off
      xlib: Add more _cairo_error() calls
      xcb: Add more _cairo_error() calls

Carlos Garcia Campos (4):
      doc: Add section for recording surface
      recording: Add section doc comments
      recording: Fix cairo_recording_surface_create() doc comments
      recording: Document CAIRO_HAS_RECORDING_SURFACE macro

Chris Wilson (31):
      version: 1.10.1 open for bugfixing
      configure: Fix typo "(requires both --enable-xcb)"
      cairo: Remove trailing comma from cairo_device_t
      drm: Add missing header file for tarball
      version: 1.11.1
      image: Silence a compile warning
      test: Add a8-clear
      image: The a8 in-place span compositing is only valid for SOURCE
      Merge branch '1.10'
      xcb: Correct a minor typo prevent an assert from firing
      xcb: Fix reduction of clipping for bounded glyphs.
      xcb,image: Fix a missing clip fini
      xcb: Pass clip to composite_glyphs_via_mask
      perf: Only print description once per backend
      configure: Remove noisy -Wlogical-op
      drm/intel: Drop the bo cache.
      pdf: Silence compiler for an impossible case
      wgl: Use CreateWindowA with an ASCII string
      scaled-font: assert that we hold the scaled-font mutex when looking up glyphs
      test/arc-infinite-loop: Random return value fun.
      gl: Enable PLT symbol hiding for dispatch entries
      Add a KNOWN_ISSUES file to track WONTFIX(?) bugs
      NEWS: Add entry for 1.10.2
      version: Bump for 1.10.2 release
      version: Post release version bump
      xcb: Apply a clip region for compositing many-pixel-aligned-boxes
      xcb: Prefer RenderFillRectangles to perform the deferred clear
      Makefile: add missing cairo-box-private.h
      Merge branch '1.10' into tmp
      NEWS: 1.11.2 snapshot
      version: Bump for 1.11.2 snapshot

Eric Anholt (1):
      gl: Avoid using gl_FragCoord for linear gradients.

Erik Zeek (2):
      Fix build on gentoo
      Fix build on gentoo

Jeff Muizelaar (2):
      Fix degenerate vertical path bounds.
      Sync get-path-extents test with the one on 1.10.

Joerg Sonnenberger (2):
      LD_PRELOAD is supported on DragonFly.
      LD_PRELOAD is supported on DragonFly.

Koji Otani (2):
      PS: fix embedding of grayscale jpegs
      PS: fix embedding of grayscale jpegs

Kouhei Sutou (1):
      xml: fix a typo to correct the indentation after <path></path>

Maarten Bosmans (2):
      doc: Add a remark about toy status of the PNG API
      doc: Fix some broken references and gtk-doc warnings

Markus Stange (2):
      Fix type of _cairo_memory_stream_destroy parameter
      Fix type of _cairo_memory_stream_destroy parameter

Mats Palmgren (1):
      win32: Improve error logging

Robert O'Callahan (1):
      tee: Do not apply two times the master device transform

Tim Janik (1):
      cairo: docu fix for cairo_set_source_surface

Tomá\u0161 Chvátal (1):
      Fix posix calls in configure.ac test code.

Uli Schlachter (40):
      XCB: Fix some weird code
      xcb: Fix CAIRO_OPERATOR_IN
      xcb: Fix compiler warning about unused result
      xcb: Correctly clear the composite surface
      _cairo_xcb_surface_ensure_picture: Check fallback
      _cairo_xcb_surface_picture: Check for fallback
      xcb: Correctly handle ARGB visuals
      Add myself to AUTHORS
      XCB: Remove an incorrect clipping optimizations
      XCB: Move the assert from 5a0f8f7320c916c
      XCB: Fix for all unbounded operators
      XCB: Use consistent rounding modes for a1 rasterisation.
      font options: Add private round_glpyh_positions field
      Actually implement round_glpyh_positions
      raster backends: Set round_glpyh_positions to ON
      Other backends: Set round_glyph_positions to OFF
      xcb: Do not access flags directly
      xcb: Fix transformation matrix setting
      XCB: Check screen size in boilerplate
      _cairo_round: Fix documentation
      Make both versions of _cairo_lround consistent again
      test/README: Change suggested screen size
      xcb: Handle deferred_clear in _copy_to_picture
      Avoid some unneeded 'is_clear = FALSE'
      xcb: Work around wrong extent computation in the X server
      xcb: Remove a wrong optimization
      XCB: Stop taking the xcb socket
      Verify that surfaces leak no snapshots
      Detach snapshots after flushing in cairo_surface_finish()
      Remove an unused field from cairo_xcb_shm_info_t
      Switch the order of two functions in the C file
      XCB: Make sure SHM memory isn't reused too early
      xcb: Handle events in boilerplate
      xcb: Add a define for some magic number
      xcb: Only print the first error and ignore subsequent ones
      xcb: Check harder for X11 errors in boilerplate
      xcb: Check the check for errors in boilerplate
      xcb: Fix premature pixmap free in boilerplate cleanup
      Add a test case for a bug in the xcb backend
      xcb: Don't finish snapshots when they are detached

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


Chris Wilson, Intel Open Source Technology Centre

More information about the cairo-announce mailing list