GNOME 3591 Published by

A new cairo snapshot 1.3.12 is now available from:

http://cairographics.org/snapshots/cairo-1.3.12.tar.gz

which can be verified with:

http://cairographics.org/snapshots/cairo-1.3.12.tar.gz.sha1
d84b48e06b2499e894f81c42361650ab5e00b974 cairo-1.3.12.tar.gz

http://cairographics.org/snapshots/cairo-1.3.12.tar.gz.sha1.asc
(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.3.12 tag which points to a commit named:
c34a1a75fdb886b7a69875fb92d30c6dfd9d39cb

which can be verified with:
git verify-tag 1.3.12

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



The relentless march toward the cairo 1.4 release continues, (even if slightly late out of the starting blocks in 2007). This is the sixth development snapshot in the 1.3 series. It comes 4 weeks after the 1.3.10 snapshot.

What's new in cairo 1.3.12
==========================
Performance
-----------
As usual, this snapshot has some fun performance improvements to show
off:

image-rgba long-lines-uncropped-100 470.08 -> 4.95: 94.91x speedup
image-rgb long-lines-uncropped-100 461.60 -> 4.96: 93.02x speedup

This 100x improvement, (and yes, that's 100x, not 100%), in the image backend occurs when drawing large shapes where only a fraction of the shape actually appears in the final result, (the rest being outside the bounds of the destination surface). Many applications should see speedups here, and the actual amount of speedup depends on the ratio of non-visible to visible portions of geometry.

[Note: There remains a similar performance bug when drawing mostly non-visible objects with the xlib backend. This is due to a similar bug in the X server itself, but we hope a future cairo snapshot will workaround that bug to get a similar speedup with the xlib backend.]

unaligned_clip-100 0.09 -> 0.06: 1.67x speedup
image-rgb unaligned_clip-100 0.09 -> 0.06: 1.66x speedup

This speedup is due to further MMX optimization by Soeren Sandmann for a case commonly hit when rendering PDF files, (and thanks to Jeff Muizelaar for writing code to extract the test case for us).

There's another MMX optimization in this snapshot (without a fancy speedup chart) by Dan Williams which improves compositing performance specifically for the OLPC machine.

Thanks to Adrian Johnson, cairo's PDF output is now much more efficient in the way it encodes text output. By reducing redundant information and adding compression to text output streams, Adrian achieved a ~25x improvement in the efficiency of encoding text in PDF files, (was ~45 bytes per glyph and is now ~1.6 bytes per glyph).

Bug fixes
---------
In addition to those performance improvements, this snapshot includes several bug fixes:

* A huge number of bug fixes for cairo-atsui text rendering, (for mac OS X). These bugs affect font selection, glyph positioning, glyph rendering, etc. One noteworthy bug fixes is that cairo_select_font_face will no longer arbitrarily select bold nor italic when not requested, (at least not when using a standard CSS2 font family name such as "serif", "sans-serif", "monospace", etc.). All these fixes are thanks to Brian Ewins who continues to do a great job as the new cairo-atsui maintainer.

* Fix PDF output so that images that are scaled down no longer mysteriously repeat (Carl Worth).

* Fix segfault on Mac OS X dues to attempt to measure extents of a zero-length string (Behdad Esfahbod).

* Fix text extents to not include the size of initial/trailing non-inked characters (Behdad Esfahbod).

API tweaks
----------
Three functions have had API changes to improve consistency. Note that the API functions being changed here are all functions that were introduced as new functions during these 1.3.x snapshots. As always, there will not be any API changes to functions included in a major release (1.2.x, 1.4.x, etc.) of cairo.

The changes are as follows:

* Rename of cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list.

* Change cairo_get_dash_count to return an int rather than accepting a pointer to an int for the return value.

* Change cairo_get_dash to have a void return type rather than returning cairo_status_t.

It's possible there will be one more round of changes to these functions, (and perhaps cairo_get_color_stop as well), as we seek to establish a unifying convention for returning lists of values.

Summary of all changes from 1.3.10 to 1.3.12
============================================
Adrian Johnson (3):
PDF: Use Td where possible instead of Tm for positioning glyphs
Add cairo-deflate-stream.c
PDF: Compress the content stream

Alp Toker (1):
Fix various code/comment typos

Behdad Esfahbod (8):
[cairo-scaled-font] Skip invisible glyphs (like space) in glyph_exten
ts() (#9422)
Don't call into backends if num_glyphs is zero (#5177)
[test] Add new test text-zero-len (#5177)
In _cairo_scaled_font_text_to_glyphs, bail if text is zero-length (#5
177)
[src/Makefile.am] Don't remove cairo-features.h in "make clean"
Spell check the docs
[cairo-type1-subset] Do not use an array of pointers, to reduce .data
size
[TODO] Move some items from ROADMAP, and some new ones, into TODO

Brian Ewins (10):
[ATSUI] Compute glyph extents from the bounding boxes of their paths
(#9350)
[test/text-rotate] Use the same text for measuring and printing
[ATSUI] Scale glyphs using _cairo_matrix_compute_scale_factor (#9350)
[perf/cairo-perf-diff] Pass CAIRO_AUTOGEN_OPTIONS to autogen.
[ATSUI] Select Bitstream Vera and CSS font families reliably.
[ATSUI] correct the rotation of glyph paths. (#9378)
[ATSUI] Refactor code for creating CGBitmapContexts from cairo surfac
es.
[ATSUI] [1/2] Implement CAIRO_SCALED_GLYPH_INFO_SURFACE support.(#946
7)
[ATSUI] [2/2] Implement CAIRO_SCALED_GLYPH_INFO_SURFACE support.(#946
7)
[test] Test handling of out-of-range glyph indexes. (#9530)

Carl Worth (14):
Bump version to 1.3.11 after making 1.3.10 snapshot
Add long-lines perf case
Restrict _clip_and_composite_trapezoids to destination extents
Add unaligned_clip perf case courtesy of Jeff Muizelaar
cairo-path-fixed: Don't add redundant, succesive MOVE_TO operations t
o the path
Fix cairo_get_dash and cairo_get_dash_count APIs
Add new scale-down-source-surface-paint test
PDF: Fix CAIRO_EXTEND_NONE for source surface patterns
Fix two misspellings in a recent comment.
ROADMAP: Add 3 bugs to fix before the next snapshot
.gitignore: Add text-glyph-range
cairo-wideint: Fix to eliminate comparison of signed and unsigned val
ues
NEWS: Add notes for 1.3.12 snapshot
configure.in: Increment cairo version to 1.3.12

Dan Amelang (1):
Use the "-" option (instead of "-a") when calling "strings"

Dan Williams (1):
Implement pixman fbCompositeSrc_8888x0565mmx

Jinghua Luo (2):
glitz: fix all compiler warnings in glitz backend.
Glitz: position large glyph correctly.

Jonathan Watt (1):
Remove WINVER from public header file

Kalle Vahlman (1):
Add --use-ms option to cairo-perf-diff-files

Kjartan Maraas (1):
Remove unused variables (#7963)

M Joonas Pihlaja (1):
Make UTF-8 output from cairo-perf-diff-files optional

Pavel Roskin (1):
Clean up _fbOnes()

Peter Weilbacher (1):
Fix for OS/2 display drivers that cannot handle 32bit output (feed th
em a 24bit buffer instead).

Robert O'Callahan (1):
Rename cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list

Soeren Sandmann (1):
Add SRC and IN implementations to avoid CompositeGeneral in some case
s hit by PDF rendering

Vladimir Vukicevic (4):
Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo
[nquartz] use pattern snapshots, and correctly setup/teardown source
[nquartz] add test reference files for nquartz backend
Merge branch 'master' of git+ssh://git.cairographics.org/git/cairo

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=C3=A9zier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.).

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 1.1.

Where to get more information about cairo
=========================================
The primary source of information about cairo is:

http://cairographics.org/

The latest releases of cairo can be found at:

http://cairographics.org/releases

Snapshots of in-development versions of cairo:

http://cairographics.org/snapshots

The programming manual for using cairo:

http://cairographics.org/manual

Mailing lists for contacting cairo users and developers:

http://cairographics.org/lists

Answers to some frequently asked questions about cairo:

http://cairographics.org/FAQ