A new cairo release 1.2.2 is now available from: http://cairographics.org/releases/cairo-1.2.2.tar.gz which can be verified with: http://cairographics.org/releases/cairo-1.2.2.tar.gz.sha1 859b9ed4eaa200a03b9e41ccc45f3799742e6c5c cairo-1.2.2.tar.gz http://cairographics.org/releases/cairo-1.2.2.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.2.2 tag which points to a commit named: ac1c748868bdf4ca6fd195b184ec90827f6e8c94 which can be verified with: git verify-tag 1.2.2 and can be checked out with a command such as: git checkout -b build 1.2.2 This is the first bug fix release in the 1.2 series since the original 1.2.0 release made six weeks ago. There were some very serious bugs in the 1.2.0 release, (see below), so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2 release maintains source and binary compatibility with 1.2.0 and does not make any API additions. I'd like to thank everybody who has done so much to make this release possible. Some people have their names associated with fixes below, but many more people have been just as valuable in testing and reporting bugs. And I'd like to extend special recognition to the people who have been patient with some major failures in cairo 1.2.0! At the risk of neglecting the dozens of people who have done so much, I do want to mention two people in particular: First, Behdad Esfahbod has put an untold number of hours into this release, with over 80 commits since the 1.2.0 release just a few weeks ago. His efforts are often behind-the-scenes improving the Makefiles and the test suites so that everyone working on cairo can do so more smoothly and easily. Thanks Behdad! Second, I'd like to extend a special welcome to Adrian Johnson who has recently started working on cairo and immediately started contributing very valuable improvement. His work has focused on the printing backends, (particularly in the area of font subsetting), which are much better for his efforts. Welcome Adrian! And to everybody, have fun with cairo! -Carl 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, 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ézier 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 What's new in cairo 1.2.2 compared to 1.2.0 =========================================== Fix crashes with BGR X servers ------------------------------ With cairo 1.2.0 many people reported problems with all cairo-using programs, (including all GTK+ programs with GTK+ >= 2.8) immediately crashing with a complaint about an unsupported image format. This bug affected X servers that do not provide the Render extension and that provide a visual with BGR rather than RGB channel order. report: https://bugs.freedesktop.org/show_bug.cgi?id=7294 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59 Fix the "disappearing text" bug ------------------------------- With cairo 1.2.0 many people reported that text would disappear from applications, sometimes reappearing with mouse motion or selection. The text would disappear after the first space in a string of text. This bug was caused by an underlying bug in (very common) X servers, and only affected text rendered without antialiasing, (either a bitmap font or a vector font with antialiasing disabled). The bug was also exacerbated by a KDE migration bug that caused antialiasing to be disabled more than desired. report: https://bugs.freedesktop.org/show_bug.cgi?id=7494 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14 see also: Xorg: https://bugs.freedesktop.org/show_bug.cgi?id=7681 KDE: http://qa.mandriva.com/show_bug.cgi?id=23990 Fix broken image fallback scaling (aka. "broken printing") ---------------------------------------------------------- The various "print" backends, (pdf, ps, and svg), sometimes fallback to using image-based rendering for some operations. In cairo 1.2.0 these image fallbacks were scaled improperly. Applications using cairo can influence the resolution of the image fallbacks with cairo_surface_set_fallback_resolution. With the bug, any value other than 72.0 would lead to incorrect results, (larger values would lead to increasingly shrunken output). report: https://bugs.freedesktop.org/show_bug.cgi?id=7533 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod) ---------------------------------------------------------------------------- The 1.2.0 release introduced an inadvertent change to how the translation components of a font matrix are interpreted. In the 1.0 series, font matrix translation could be used to offset the glyph origin, (though glyph metrics were reported incorrectly in 1.0). However in 1.2.0, the translation was applied to the advance values between each glyph. The 1.2.0 behavior is fairly useless in practice, and it was not intentional to introduce a semantic change. With 1.2.2 we return to the 1.0 semantics, with a much better implementation that provides correct glyph metrics. fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051 Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod) ------------------------------------------------------------------------------------- There has been a long-standing issue with cairo_surface_create_similar such that font options and other settings from the original destination surface would not be preserved to the intermediate "similar" surface. This could result in incorrect rendering (particularly with respect to text hinting/antialiasing) with fallbacks, for example. report: https://bugs.freedesktop.org/show_bug.cgi?id=4106 fixes: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0 http://gitweb.freedesktop.org/?p=cairo;a=commit;h=bdb4e1edadb78a2118ff70b28163f8bd4317f1ec xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic) ---------------------------------------------------------------------------- Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0 caused a significant performance regression when using the xlib backend. This performance regression was particularly noticeable when doing lots of text rendering and when using a high-latency connection to the X server, (such as a remote X server over an ssh connection). The slowdown was identified and fixed in 1.2.2. report: https://bugs.freedesktop.org/show_bug.cgi?id=7514 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson) ------------------------------------------------------------------------- The cairo 1.2 series adds a supported pdf backend to cairo. In cairo 1.2.0 this backend required the freetype library, which was an undesirable dependency on systems such as win32, (cairo is designed to always prefer the "native" font system). As of cairo 1.2.2 the freetype library is not required to use the pdf backend on the win32 platform. report: https://bugs.freedesktop.org/show_bug.cgi?id=7538 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691 PDF: Fix broken output on amd64 (Adrian Johnson) ------------------------------------------------ report: http://bugzilla.gnome.org/show_bug.cgi?id=349826 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60 PS: Fix broken output for truetype fonts > 64k (Adrian Johnson) --------------------------------------------------------------- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94 PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop) ------------------------------------------------------------ Kent notices that with the PDF backend in cairo 1.2.0 as soon as a stroke was performed with dashing, all subsequent strokes would also be dashed. There was no way to turn dashing off again. fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256 Fix memory leaks in failure paths in gradient creation (Alfred Peng) -------------------------------------------------------------------- fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2 Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson) ------------------------------------------------------------ report: https://bugs.freedesktop.org/show_bug.cgi?id=7766 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng) ----------------------------------------------------------------------------- report: https://bugzilla.mozilla.org/show_bug.cgi?id=341874 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6 Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron) ------------------------------------------------------------------------------------- report: https://bugs.freedesktop.org/show_bug.cgi?id=7483 fix: http://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235 Various memory leak fixes ------------------------- Fix memory leak in _cairo_surface_show_glyphs (bug 7766) Fix file handle leak in failure path (bug 7616) Fix some memory leaks in the test cases. Fix some memory leaks in font subsetting code used in print backends. Documentation improvements (Behdad Esfahbod) -------------------------------------------- Added new documentation for several functions (cairo_show_page, cairo_copy_page, cairo_in_stroke, cairo_in_fill). Fixed some syntax errors that were preventing some existing documentation from being published. Fixed several minor typographical errors. Added an index for new symbols in 1.2. Detailed list of changes since 1.2.0 ===================================== Adrian Johnson: This patch fixes the problem where the postscript output Remove freetype dependency for truetype subsetting code. Make truetype subsetting work on x86_64 Alfred Peng: Add definition of cairo_private for some Sun compilers. Fix leaks in failure paths in pixman gradient creation Behdad Esfahbod: Do not use sighandler_t. Bug 7401. For check-valgrind, call the version of libtool in our source distribution, Update test/README Make CAIRO_TEST_TARGET="" make check pass tests. Fix typo when printing error for unsupported X formats. It was mistakenly Fix doc syntax. Fix doc typo. Include cairo-svg.h in cairo_win32_api_headers. (bug 7462) Better creation rules for cairo.def. Generate index of new symbols in 1.2. Fix nil surface initializations for surface type. (#7322) Small doc fix. Add change stat to ChangeLog. Change version number of Sun's Xorg server with buggy repeat from 60800000 to Disable PDF backend if zlib not found. Add note to docs for some enums about possible future additions. Oops. Fix doc format. Use Bitstream Vera Sans and Latin text in ft-text-vertical. Improve test suite build infrastructure More test suite infrastructure improvements: Improve backend .pc files generation: Improve test HTML generation: Tiny doc typo fix. Add prototype for draw in each test file and remove it from the header. ***cworth finds them [the background colors] a bit too bright Don't write FAIL messages on stdout if both stdout/err are going to screen. Send grep errors to hell^Wnull. Fix doc typo. Use cairo_bool_t. Fix Name tag in backend .pc files to include "cairo-". Fix test result formatting. Only generate HTML for log files passed on the command line. Go back to "!!!CRASHED!!!" message now that there's no confusion. Flush stdout after writing \r, to remove artifacts. Use font matrix offset to reposition glyph origin instead of adjusting advance Don't make doc upon make install. Make "CAIRO_TEST_TARGET=... make check" work again Make "double *dash" argument const in cairo_set_dash Move font-matrix translation and device transform from surface to gstate s/dist-hook/dist-hook-local/ Add -Wold-style-definition compiler falg and fix all warnings. Standardize on unsigned for ref_count type and add CAIRO_REF_COUNT_INVALID Remove config.cache in autogen.sh. Remove dummy create_similar in PS/PDF and let fallback do the same Implement per-surface font options. Let backends return NULL in create_similar to take the fallback path. Set font_options on image surfaces we create. Set fallback resolution in create_similar. Update docs to reflect that. Set font options in the test context and make tests not do that Add comments about CAIRO_ENABLE_BACKEND. Add vector_ignored_tests that is tests ignored for ps/pdf/svg Make image_diff_flattened flatten the first image too. Change the way diff images highlight differences. Switch from ghostscript's png16m driver to pngalpha for PS->PNG again. Change the text string "cd" to "AB" in test to match the other string New PS ref images, matching the recent png16m->pngalpha driver change Look for per-target reference image too Fail FreeType load_truetype_table on vertical fonts as we don't do it Add -Wwrite-strings compiler flag and fix all warnings Add several compiler warning flags (no code changes needed) Add -Wunsafe-loop-optimizations compiler flag and fix all warnings Mark x86_64 subsetting as fixed in ROADMAP. Remove the __attribute__ ((packed)) and the need for it Split the TrueType table definitions into a private header file Add test truetype-tables that checks sizeof truetype tables Add cairo-truetype-subset-private.h to list of ignored headers Update doc syntax More doc syntax update Document a few more functions Make "make html" not trigger test reruns Update reference images, mostly PDF and SVG Fix few remaining compiler warnings, revealed by -O3 Fix misplaced volatile keyword Set antialiasing to gray in default font options for PS/PDF/SVG [fontconfig] Set FC_RGBA_NONE on the pattern if we don't want subpixel. Restructure subpixel_order handling such that the code doesn't look suspicious! [TrueType] Fix leaks. [TrueType] More leak fixes [TrueType] Add comment block describing why we only use int16_t [FreeType] Unset and set to FC_RGBA_NONE the FC_RGBA attribute on pattern [TrueType] Zero out padding memory in generated TrueType subset [PDF] Fix leak: free glyphs Carl Worth: Increment CAIRO_VERSION to 1.2.1 after making the 1.2.0 release RELEASING: Mention README as the source for blurbs Add retest and recheck targets to the top-level Makefile Eliminate a few simple compiler warnings Add dash-no-dash test case to demonstrate PDF failure to turn off dashing. Make the various test and check targets depend on all as well. cairo-test.c: Prefer FALSE and TRUE for cairo_bool_t values. Rename no_fail_on_stdout to eliminate confusing negative inside a Boolean variable name Use 'FAIL' instead of 'UNEXPECTED FAILURE' in test output. ft-text-vertical-layout: Update stale reference images pixman-rotate: remove stale svg backend reference images Add font-matrix-translation test case. Elide size-zero glyphs from calls to XRender functions. Update ROADMAP with 1.2.2 and 1.4 plans now that 1.2.0 is out INSTALL: Mention DYLD_LIBRARY_PATH for mac OS X Add -Wsign-compare compiler flag and fix all warnings Update ROADMAP now that several of the 1.2.2-targeted bugs are fixed Simplify common set_clip operation in meta-surface replay. Apply device_transform during meta-surface replay to fix bug 7533 Use base pointer to avoid compiler warning. ROADMAP: Mark 7533 as fixed and add broken truetype subsetting on x86_64 Fix file handle leak in failure path (bug 7616) Fix bug 7294 by adding pixman BGR formats and internal cairo BGR formats. Add -Wswitch-enum compiler flag and fix all trivial warnings Squelch an annoying -Wswitch-enum warning by not using switch Merge branch 'warnings-cleanup' into cairo Fix some signed/unsigned comparison warnings that cropped up during the warnings-cleanup branch Document CAIRO_FORMAT_RGB16_565 as deprecated. Improve docs for cairo_surface_create_similar() Merge branch 'surface-font-options' into cairo Remove stale SVG-specific reference images for pixman-rotate test Eliminate most compiler warnings from the test suite Disable warning options that are not available in gcc 3.3.5 at least. Eliminate warning due to the test suite's private 'FLATTENEND' format value test-paginated: Fix memory leak within _test_paginated_surface_create_for_data Add a variation of an existing valgrind suppression Fix some memory leaks in a few of the tests. gtk-doc template file churn Fix EXTRA_DIST so that 'make distcheck' works again RELEASING: Add --stat option to recommended git-log command NEWS: Add notes for cairo 1.2.2 Update version to 1.2.2 and libtool version to 11:1:9. Chris Wilson: Fix memory leak in _cairo_surface_show_glyphs (bug 7766) David Reveman: Ignore color for CAIRO_OPERATOR_CLEAR in glitz backend. Declan Naughton: Fix typos in internal documentation. Dominic Lachowicz: Add binary garbage to PDF header as recommended in section 3.4.1 of PDF Reference v1.6 Ian Osgood: XCB: implement set_clip_region Jamey Sharp: XCB: XCBRenderTRAP was renamed to XCBRenderTRAPEZOID. XCB: Use xcb-renderutil where cairo-xlib used libXrender. Jonathon Jongsma: Fix a typo in cairo_font_extents_t documentation Fix documentation typo in cairo_scaled_font_get_font_options() Kent Worsnop: PDF: Fix for dash-no-dash test case, (so that dashing can be turned off) Kristian Høgsberg: Drop unused src/cairo-font-subset-private.h. Renamed cairo-font-subset.c to cairo-truetype-subset.c Rename truetype subset function to _cairo_truetype_*. Michael Emmel: Rewrote to remove intermediate surfaces Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo Fixed debug message to use new member name Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo Check for zero before freeing region Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo Fixed debug statement that broke compile Merge branch 'master' of ssh+git://git.cairographics.org/git/cairo Vladimir Vukicevic: [xlib] Remove XSync implementation of surface_flush
Attachment:
pgpI9XTGqJthV.pgp
Description: PGP signature