Release Cairo 1.17.6 (snapshot)
[cairo.git] / NEWS
bloba6b14d937f4d4c666d81ab00d8e87153f174bb5e
1 Release 1.17.6 (2022-03-18 Emmanuele Bassi <ebassi@gnome.org>)
2 ==============================================================
4 I spy with my little eye… a Cairo snapshot!
6 First of all, many, many thanks to everyone who contributed to Cairo
7 during this development cycle. A special thank you goes to:
9 - Adrian Johnson
10 - Uli Schlachter
12 for their tireless efforts in ensuring that the lights are still on
13 in the Cairo project.
15 This snapshot sees the removal of the following backends and platform
16 support:
18 - Qt4
19 - BeOS
20 - OS/2
21 - DirectFB
22 - DRM
23 - Cogl
24 - OpenVG
26 Thanks to all past contributors for their work on them. If you were using
27 any of these backends then you will need to stick to Cairo 1.16.
29 To offset the removal of the backends above, Adrian Johnson landed the
30 DWrite font rendering backend on Windows.
32 There have been multiple improvements in the Quartz backend, courtesy of
33 John Ralls.
35 Tim-Philipp Müller has kept the Meson build in top shape.
37 This snapshot is going to be the **last** release of Cairo with the
38 Autotools build system. The Meson build has seen many improvements and
39 it is considerably easier to maintain and faster to build.
41 Release 1.17.4 (2020-11-27 Bryce Harrington <bryce@bryceharrington.org>)
42 ========================================================================
44 Thank you to the many people who have contributed the large number of
45 bug fixes and refinements since 1.17.2.
47 A particularly noteworthy improvement in this release is the addition of
48 the meson build system as an alternative to autotools.  Autotools is
49 still used for producing the releases, so will be the default in the
50 tarball and presumably will still be preferred by distro packagers of
51 Cairo.  It should be possible to build the release tarball using meson,
52 but as this is new functionality consider it still a work in progress.
53 The meson configuration has striven to track the autotools
54 implementation but be aware there may still be some differences between
55 the two.
57 Continuous Integration configurations have been added that enable
58 testing on a variety of platforms including Fedora, Windows MSVC, etc.
59 This work has helped in identifying updates and fixes including
60 adjusting to changes in API calls in dependencies like rsvg and
61 fontconfig, and to fix platform-specific build issues.
63 The cogl Cairo backend underwent significant development this cycle.
64 Cogl provides GPU accelerated drawing support.  The development work
65 includes implementation of core functionality, performance
66 optimizations, and stabilization.
68 Subpixel positioning support allows improved glyph outlines with the
69 Freetype font backend.
71 For a complete log of changes, please see
73     https://cairographics.org/releases/ChangeLog.1.17.4
75 [On a personal note, this will be my last release for Cairo.  My Cairo
76 time availability has been non-existent (particularly this crazy past
77 year).  The release process is well documented and hopefully will help
78 whomever picks up the baton from here.]
81 Release 1.17.2 (2019-01-31 Bryce Harrington <bryce@bryceharrington.org>)
82 ========================================================================
83 This snapshot provides the new support for writing floating point
84 formats as 16 bpc PNGs, with support for RGBA128F and RGB96F formats.
85 This new feature increases Cairo's pixman version requirement to 0.36.0.
87 Beyond this are a range of bugfixes and some work on establishing CI for
88 Cairo.
90 For a complete log of changes, please see
92     https://cairographics.org/releases/ChangeLog.1.17.2
94 API Changes
95 -----------
96 None
98 Dependency Changes
99 ------------------
100 pixman 0.36.0
103 Release 1.16.0 (2018-10-19 Bryce Harrington <bryce@bryceharrington.org>)
104 ========================================================================
105 This new stable release incorporates a number of improvements made in
106 the four years since 1.14.0.
108 Of particular note is a wealth of work by Adrian Johnson to enhance PDF
109 functionality, including restoring support for MacOSX 10.4, metadata,
110 hyperlinks, and more.
112 Much attention also went into fonts, including new colored emoji glyph
113 support, variable fonts, and fixes for various font idiosyncrasies.
115 Other noteworthy changes include GLESv3 support for the cairo_gl
116 backend, tracking of SVG units in generated SVG documents, and cleanups
117 for numerous test failures and related issues in the PDF and Postscript
118 backends.
120 For a complete log of changes, please see
122     https://cairographics.org/releases/ChangeLog.1.16.0
124 Features and Enhancements
125 -------------------------
126 * Add support for OpenGL ES 3.0 to the gl backend.
127 * The PDF backend has gained support for a range of widely used
128   features, including thumbnails, page labels, metadata, document
129   outlines, structured text, hyperlinks, and tags.  Tags permit adding
130   logical info such as headings, tables, figures, etc. that facilitates
131   indexing, accessibility, text reflow, searching, and extraction of the
132   tagged items to other software.  For details on this new PDF
133   functionality, see:
134     https://lists.cairographics.org/archives/cairo/2016-June/027427.html
135 * Variable font support.  Variable fonts are single font files with
136   various typography characteristics, such as weight or slant, that users
137   of the font can adjust between two points.  Effectively this enables a
138   single font to behave as multiple fonts.
139 * Restore MacOSX 10.4 support.  Cairo had dropped 10.4 support when
140   moving to the CoreText API.  Now we automatically detect which API to
141   use via dynamic linking, so can resume supporting this older version
142   of MacOSX.
143 * Support colored emoji glyphs, stored as PNG images in OpenType fonts.
144 * Skia backend is removed
145 * Use Reusable streams for forms in Level 3 Postscript.
146 * Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files.
147 * Add CCITT_FAX mime type for PDF and PS surfaces
148 * svg: add a new function to specify the SVG document unit
149   (Bug #90166)
150 * Use UTF-8 filenames on Windows
153 API Changes
154 -----------
155 Several new APIs were added.  No existing APIs were altered.
157 New PDF functionality:
159   * cairo_pdf_surface_add_outline
160   * cairo_pdf_surface_set_metadata
161   * cairo_pdf_surface_set_page_label
162   * cairo_pdf_surface_set_thumbnail_size
163   * cairo_tag_begin
164   * cairo_tag_end
165   * CAIRO_STATUS_TAG_ERROR
167 New error status items for problems relating to PDF tagging:
169   * CAIRO_STATUS_WIN32_GDI_ERROR
170   * CAIRO_STATUS_FREETYPE_ERROR
171   * CAIRO_STATUS_PNG_ERROR
173     New error status items for handling of GDI, libfreetype, and libpng
174     errors, respectively.
177 Setting up Win32 surfaces for HDC with alpha channels:
179   * cairo_win32_surface_create_with_format
181     New API for added PDF functionality (see above), and new error
182     status item for problems relating to PDF tagging.
184 Variable fonts:
186   * cairo_font_options_get_variations
187   * cairo_font_options_set_variations
189 Tracking units in SVG documents:
191   * cairo_svg_surface_set_document_unit
192   * cairo_svg_surface_get_document_unit
196 Dependency Changes
197 ------------------
198 None
201 Performance Optimizations
202 -------------------------
203 None
206 Notable Bug Fixes
207 -----------------
208 * Fix thin lines that don't show up when printing in Inkscape due to
209   overly aggressive culling.
210   (Bug #77298)
211 * Fix playback of recording surfaces into PDF surfaces, where objects
212   with negative coordinates were not getting drawn.  To address this,
213   the coordinate systems for PDF and PS have been changed to match
214   cairo's coordinate system.  This allows recording surfaces to be
215   emitted in cairo coordinates, and results in the same origin being
216   used for all operations when using the recording surface XObject.
217   Test cases for PDF and PS have also been updated accordingly.
218   (Bug #89232)
219 * Fix "invalidfont" error on some printers when printing PDFs with
220   embedded fonts that have glyphs (such as spaces) with
221   num_contours == 0.  (Bug #79897)
222 * Fix missing glyphs such as thin dashes, which get scaled to 0 in
223   userspace and thus have their drawing operations culled.  (Bug #94615)
224 * Fix other oddities caused by variously idiosyncratic fonts.
225 * Fix a data race in freed_pool discovered by Firefox's cairo usage.
226   The patch adads atomic int load and store functions, with relaxed
227   memory ordering.  (Bug #90318)
228 * Handle SOURCE and CLEAR operators when painting color glyphs.
229   (Bug #102661)
230 * Fix falling back to system font with PDFs using certain embedded
231   fonts, due to truncated font names.
232   (Bug #103249)
233 * Prevent curved strokes in small ctms from being culled from vector
234   surfaces
235   (Bug #103071)
236 * Fix assertion hit with PDFs using Type 4 fonts rendered with user
237   fonts, due to error when destroying glyph page.
238   (Bug #103335)
239 * Prevent invalid ptr access for > 4GB images.
240   (Bug #98165)
241 * pdf: Fix internal links pointing to other pages, by pre-calculating
242   page heights so that link positions can be calculated more accurately.
243 * Fix error reporting in the xcb backend if fallback fails.  Instead of
244   returning NULL when the X11 server can't do some operation, return a
245   surface in an error state.
246 * Clarify documentation regarding device scale inheritance and the units
247   used in cairo_surface_create_similar_image.
248   (Bug #99094)
249 * Call XSync in the xlib backend before setting the error handler to
250   ignore errors for certain requests, to make sure all pending errors
251   are handled first.
252 * Fix regression with text containing space character on Win32.
253   (Bug: https://gitlab.freedesktop.org/cairo/cairo/issues/339)
255 For a more comprehensive listing of fixed bugs, see the release notes for the
256 individual 1.15.x releases.
259 Release 1.15.14    (2018-09-19 Bryce Harrington <bryce@bryceharrington.org>)
260 ============================================================================
261 We're nearly ready to finalize the 1.16.0 release, so this snapshot
262 can be considered a beta for 1.16.
264 The most notable change this release is a performance optimization for
265 windows, discussed below.  Other than that, much of the development
266 focus was on final polish and stability as we prepare for 1.16.
268 Some attention went into getting the testsuite passing at least for the
269 image backend.  The Cairo testsuite depends on external software like
270 Pixman, and changes in the rendering behavior of these dependencies
271 change test behavior, leading to false positives.
273 Results from the Coverity static testing tool were also reviewed.  Most
274 of the issues flagged were false positives, but there were several
275 legitimate problems found and fixed.
277 For a complete log of changes, please see
279     https://cairographics.org/releases/ChangeLog.1.15.14
281 Features and Enhancements
282 -------------------------
283 * Add more FreeeType font color conversions to support COLR/CPAL
284 * Update test reference images against current pixman
286 API Changes
287 -----------
288 None
290 Dependency Changes
291 ------------------
292 None
294 Performance Optimizations
295 -------------------------
296 Vasily Galkin introduced a Win32 performance optimization for
297 CAIRO_OPERATOR_SOURCE when copying data from a backbuffer to an argb32
298 surface corresponding to a Win32 DC.  With this, argb32 drawing should
299 perform as fast as typical dibsection-buffered GDI drawing.  See the
300 Cairo mailing list for April 2018 for data and discussion of the
301 performance improvements.
304 Bug Fixes
305 ---------
306 * Fix crash when rendering Microsoft's Segoe UI Emoji Regular font.
307 * Fix build breakage with glesv3 enabled due to non-existant glesv3.pc.
308 * Fix memory leaks found by Coverity
309 * Fix incorrect null ptr handling found by Coverity
310 * Fix test compilation when font-config is disabled
311 * Use _cairo_malloc instead of malloc (Bug #101547) (CVE-2017-9814)
312 * Fix assertion failure in the freetype backend (Bug #105746)
315 Release 1.15.12    (2018-04-04 Bryce Harrington <bryce@osg.samsung.com>)
316 ========================================================================
317 The main focus for this release is the addition of Variable Font
318 support.  Variable fonts are single font files with various typography
319 characteristics, such as weight or slant, that users of the font can
320 adjust between two points.  Effectively this enables a single font to
321 behave as multiple fonts.
323 The Skia backend is disabled in this release, due to severe bitrot, and
324 will be removed in future releases.  Contact the cairo team if you have
325 a need of this backend.
327 For a complete log of changes, please see
329     https://cairographics.org/releases/ChangeLog.1.15.12
331 Features and Enhancements
332 -------------------------
333 * Variable font support
334 * Skia backend is disabled
336 API Changes
337 -----------
338 * cairo_font_options_get_variations() and
339   cairo_font_options_set_variations() are added.
341 Dependency Changes
342 ------------------
343 None
345 Performance Optimizations
346 -------------------------
347 None
349 Bug Fixes
350 ---------
351 * Fix errors in csi-trace --help and --version options
352 * Fix a 'memory leak' in the image compositor, with
353   pixman_glyph_cache_t.
354 * Fix access of uninitialized memory found by valgrind
355   (Bug #91271)
356 * Fix improper initialization of memory in
357   _cairo_ft_font_face_create_for_pattern()
358   (Bug #105084)
359 * Fix multi-monitor virtual desktop with negative coords on Win32
360   (Bug #100793)
361 * Fix issues occurring with older FreeType versions.
364 Release 1.15.10    (2017-12-07 Bryce Harrington <bryce@osg.samsung.com>)
365 ========================================================================
366 This release adds GLESv3 support to the cairo_gl backend, adds
367 tracking of SVG units in generated svg documents, and cleans up numerous
368 test failures and related issues in the PDF and Postscript backends.
370 For a complete log of changes, please see
372     https://cairographics.org/releases/ChangeLog.1.15.10
374 Features and Enhancements
375 -------------------------
376 * Add support for OpenGL ES 3.0 to the gl backend.
377 * Use Reusable streams for forms in Level 3 Postscript.
378 * Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files.
379 * Add CCITT_FAX mime type for PDF and PS surfaces
380 * svg: add a new function to specify the SVG document unit
381   (Bug #90166)
382 * Use UTF-8 filenames on Windows
384 API Changes
385 -----------
386 * cairo_svg_surface_set_document_unit() and
387   cairo_svg_surface_get_document_unit()
389 Dependency Changes
390 ------------------
391 None
393 Performance Optimizations
394 -------------------------
395 None
397 Bug Fixes
398 ---------
399 * Fix regression in gles version detection
400 * Fix undefined-behavior with integer math.
401 * Handle SOURCE and CLEAR operators when painting color glyphs.
402   (Bug #102661)
403 * Convert images to rgba or a8 formats when uploading with GLESv2
404 * Use _WIN32 instead of windows.h to check for windows build.
405 * Fix sigabrt printing documents with fonts lacking the mandatory .nodef
406   glyph.
407   (Bug #102922)
408 * Prevent curved strokes in small ctms from being culled from vector
409   surfaces
410   (Bug #103071)
411 * Fix painting an unbounded recording surface with the SVG backend.
412 * Fix falling back to system font with PDFs using certain embedded
413   fonts, due to truncated font names.
414   (Bug #103249)
415 * Fix handling of truetype fonts with excessively long font names
416   (Bug #103249)
417 * Fix race conditions with cairo_mask_compositor_t
418   (Bug #103037)
419 * Fix build error with util/font-view
420 * Fix assertion hit with PDFs using Type 4 fonts rendered with user
421   fonts, due to error when destroying glyph page.
422   (Bug #103335)
423 * Set default creation date for PDFs
424 * Prevent invalid ptr access for > 4GB images.
425   (Bug #98165)
426 * Prevent self-copy infinite loop in Postscript surface.
427 * Fix padded image crash in Postscript surface.
428 * Fix annotation bugs in PDFs and related memory leaks
429 * Fix test failures and other assorted issues in ps and pdf code.
430 * Fix code generation when using GCC legacy atomic operations
431   (Bug #103559)
432 * Fix various compilation warnings and errors.
433 * Fix various distcheck errors with private symbols, doxygen formatting,
434   etc.
436 Release 1.15.8     (2017-08-29 Bryce Harrington <bryce@osg.samsung.com>)
437 ========================================================================
438 This small snapshot provides new colored emoji glyph support, and a
439 handful of minor fixes.
441 For a complete log of changes, please see
443     https://cairographics.org/releases/ChangeLog.1.15.8
445 Features and Enhancements
446 -------------------------
447 * Support colored emoji glyphs, stored as PNG images in OpenType fonts.
450 API Changes
451 -----------
452 None
454 Dependency Changes
455 ------------------
456 None
458 Performance Optimizations
459 -------------------------
460 None
462 Bug Fixes
463 ---------
465 * pdf: Fix internal links pointing to other pages, by pre-calculating
466   page heights so that link positions can be calculated more accurately.
468 * image: Fix crash on negative lengths
470 * win32: Fix initialization of mutexes for static builds
472 * pdf: Don't emit /PageLabel dict when no labels defined
474 * font: Fix color font loading on big-endian systems
476 * font: Fix color font support infinite-loop with empty glyphs
478 * Fix off by one check in cairo-image-info.c
482 Release 1.15.6     (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>)
483 ========================================================================
484 This new snapshot incorporates changes over the past half-year since the
485 1.15.4 snapshot, including all the fixes from the 1.14 release series.
487 The PDF code continues to be enhanced, and we're restored MacOSX 10.4
488 support.  Font-related fixes and improved error handling for X round out
489 the release.
491 For a complete log of changes, please see
493     https://cairographics.org/releases/ChangeLog.1.15.6
496 Features and Enhancements
497 -------------------------
498 * Detect if variable fonts have synthesized bold/italic or non-default
499   variants, and      use a fallback font where needed.
501 * Restore MacOSX 10.4 support.      Cairo had dropped 10.4 support when
502   moving to the CoreText API.  Now we automatically detect which API to
503   use via dynamic linking, so can resume supporting this older version
504   of MacOSX.
507 API Changes
508 -----------
509 None
511 Dependency Changes
512 ------------------
513 None
515 Performance Optimizations
516 -------------------------
517 None
519 Bug Fixes
520 ---------
521 * Fix error reporting in the xcb backend if fallback fails.  Instead of
522   returning NULL when the X11 server can't do some operation, return a
523   surface in an error state.
525 * Call XSync in the xlib backend before setting the error handler to
526   ignore errors for certain requests, to make sure all pending errors
527   are handled first.
529 * Fix text-glyph-range for quartz-font.  Use 0xFFFF instead of 0 for
530   invalid index        tracking.
532 * Fix handling of Supplementary Multilingual Plane (SMP) Unicode
533   characters in quartz-font.
535 * Fix various issues in the drm backend including updating API usage and
536   general code cleanup.
538 * Clarify documentation regarding device scale inheritance and the units
539   used in cairo_surface_create_similar_image.
540   Bug #99094.
543 Release 1.15.4     (2016-12-9 Bryce Harrington <bryce@osg.samsung.com>)
544 =======================================================================
545 This new snapshot incorporates changes over the past year since the
546 1.15.2 snapshot, including all the fixes from the 1.14 release series.
548 Of particular note in this snapshot is a wealth of work by Adrian
549 Johnson to enhance PDF support, as well as numerous bug fixes provided
550 by him and other contributors.
552 For a complete log of changes since the last release, please see:
554     https://cairographics.org/releases/ChangeLog.1.15.4
556 Features
557 --------
558 * The PDF backend has gained support for a range of widely used
559   features, including thumbnails, page labels, metadata, document
560   outlines, structured text, hyperlinks, and tags.  Tags permit adding
561   logical info such as headings, tables, figures, etc. that facilitates
562   indexing, accessibility, text reflow, searching, and extraction of the
563   tagged items to other software.  For details on this new PDF
564   functionality, see:
566     https://lists.cairographics.org/archives/cairo/2016-June/027427.html
569 API Changes
570 -----------
572   cairo_win32_surface_create_with_format
574     Added a cairo API to set up Win32 surfaces for HDC with alpha channels.
576   cairo_pdf_surface_add_outline
577   cairo_pdf_surface_set_metadata
578   cairo_pdf_surface_set_page_label
579   cairo_pdf_surface_set_thumbnail_size
580   cairo_tag_begin
581   cairo_tag_end
582   CAIRO_STATUS_TAG_ERROR
584     New API for added PDF functionality (see above), and new error
585     status item for problems relating to PDF tagging.
587   CAIRO_STATUS_WIN32_GDI_ERROR
588   CAIRO_STATUS_FREETYPE_ERROR
589   CAIRO_STATUS_PNG_ERROR
591     New error status items for handling of GDI, libfreetype, and libpng
592     errors, respectively.
594 Dependency Changes
595 ------------------
596 None
598 Performance Optimizations
599 -------------------------
600 None
602 Bug Fixes
603 ---------
604 * Bug fixes from 1.15.2 (see the 1.15.2 NEWS for details)
606 * Fix playback of recording surfaces into PDF surfaces, where objects
607   with negative coordinates were not getting drawn.  To address this,
608   the coordinate systems for PDF and PS have been changed to match
609   cairo's coordinate system.  This allows recording surfaces to be
610   emitted in cairo coordinates, and results in the same origin being
611   used for all operations when using the recording surface XObject.
612   Test cases for PDF and PS have also been updated accordingly.
613   (Bug #89232)
615 * Fix "invalidfont" error on some printers when printing PDFs with
616   embedded fonts that have glyphs (such as spaces) with
617   num_contours == 0.  (Bug #79897)
619 * Fix missing glyphs such as thin dashes, which get scaled to 0 in
620   userspace and thus have their drawing operations culled.  (Bug #94615)
622 * Fix other oddities caused by variously idiosyncratic fonts.
624 * Fix deadlock when destruction of a scaled font indirectly triggers
625   destruction of a second scaled font, causing the global cache to be
626   locked twice.  (Bug #93891)
628 * Fix X errors reported to applications when shmdt() is called before
629   the Attach request is processed, due to missing xcb and xlib calls.
631 * Fix random failure in record-paint-alpha-clip-mast test case, caused
632   by an incorrect assumption that a deferred clear can be skipped.
633   (Bug #84330)
635 * Fix crash when dealing with an XShmGetImage() failure, caused by a
636   double free in _get_image_surface().  (Bug #91967)
638 * Fix invalid execution of ASCII85 data by the PS interpreter that the
639   image operator didn't use, by flushing the extraneous data after
640   drawing the image.  (Bug #84811)
642 * Fix decoding of Adobe Photoshop's inverted CMYK JPEG files in PDF
643   export.
645 * Fix unbounded surface assertion in win32-print code.
647 * Fix a data race in freed_pool discovered by Firefox's cairo usage.
648   The patch adads atomic int load and store functions, with relaxed
649   memory ordering.  (Bug #90318)
651 * Cleanup debugging text sent to stdout instead of log.  (Bug #95227)
653 * Fix build issue when using non-GNU strings utility.  (Bug #88639)
655 * Fix build of cairo modules as regular modules, not as versioned shared
656   libraries.  (Bug #29319)
658 * Fix build on win32 using gcc 5.4.
660 * Fix build of script backend to require zlib.
662 * Update test suite reference images using Debian Jessie 64-bit and
663   poppler current as of June, 2016.
665 * Various improvements to documentation and tests, compiler warning
666   fixes, and an assortment of code refactoring and cleanup.
669 Release 1.15.2     (2015-12-10 Bryce Harrington <bryce@osg.samsung.com>)
670 ========================================================================
671 This release is largely a rollup to include a variety of fixes that
672 didn't make the cut for the stable 1.14.2 and 1.14.4 releases, as well
673 as all the fixes from those releases.  Notably this includes a highly
674 requested new API for Win32 surfaces.
676 For a complete log of changes since the last release, please see:
678     https://cairographics.org/releases/ChangeLog.1.15.2
680 Features
681 --------
682 None
684 API Changes
685 -----------
687   cairo_win32_surface_create_with_format
689     Added a cairo API to set up Win32 surfaces for HDC with alpha channels.
691 Dependency Changes
692 ------------------
693 None
695 Performance Optimizations
696 -------------------------
697 None
699 Bug Fixes
700 ---------
701 * All the bug fixes from 1.14.2, 1.14.4, and 1.14.6
703 * Fix xcb/xlib compilation and calls.  Make image boxes behave when SHM
704   is not available.
706 * Fix various issues with printing and transparent images on Win32.
708 * Fix thin lines that don't show up when printing in Inkscape due to
709   overly aggressive culling.
710   (Bug #77298)
712 * Fix broken printing via pdf when glyph 0 is used for rendering,
713   resulting in missing spaces and letters.
714   (Bug #89082)
716 * Fix crash for certain glyphs in opentype fonts.
717   (Bug #91902)
719 * Fix incorrect rendering of SVG paths with more than one subpath.  If
720   more than one trap is passed in then it's guaranteed that the returned
721   traps will have their left edge to the left of their right edge, but
722   if only one trap is passed in then the function always returns without
723   doing anything.
724   (Bug #90984)
726 * Improve rendering with Quartz to better match pixman's blending and
727   filtering behavior.
730 Release 1.14.6    (2015-12-09  Bryce Harrington <bryce@osg.samsung.com>)
731 ========================================================================
732 Simple bugfix release to fix one Windows issue.
734 For a complete log of changes since 1.14.4, please see:
736     https://cairographics.org/releases/ChangeLog.1.14.6
738 Features
739 --------
740 None
742 API Changes
743 -----------
744 None
746 Dependency Changes
747 ------------------
748 None
750 Performance Optimizations
751 -------------------------
752 None
754 Bug Fixes
755 ---------
756 * Fix failure on Windows due to reference of the function
757   cairo_win32_surface_create_with_format(), which isn't included in the
758   1.14.4 release. (Bug #92771)
761 Release 1.14.4    (2015-10-28  Bryce Harrington <bryce@osg.samsung.com>)
762 ========================================================================
763 Just in time for Halloween we see another bug-fix release for Cairo.
764 This brings a few dozen straightforward bug fixes with no API changes.
766 In addition, this includes a typical assortment of fixes to tests,
767 cleanup of warnings and memory leaks, correction of misspellings,
768 updates to documentation, etc.
770 For a complete log of changes since 1.14.2, please see:
772     https://cairographics.org/releases/ChangeLog.cairo-1.14.4
774 Features
775 --------
776 None
778 API Changes
779 -----------
780 None
782 Dependency Changes
783 ------------------
784 None
786 Performance Optimizations
787 -------------------------
788 None
790 Bug Fixes
791 ---------
792 * Avoid appending empty slots to user data arrays.  Fixes a memory
793   consumption regression since commit 9341c254a.
795 * Return a better error (file-not-found) when setting up pango on
796   devices where the font files don't have read permissions.
798 * Fix regression in the font size of canvas text in Inkscape when
799   compiled with the Quartz backend.  (Bug #84324)
801 * Fix _cairo_gl_shader_bind_matrix() to maintain compatibility with
802   OpenGL ES 2.0.  Manually transpose the matrix.
804 * Fix incorrect font descriptor conversion when the font matrix yy is
805   negative. (Bug #90538)
807 * Fix crash when using a complex path for clip and stroke due to
808   discarding the intersection exactly at the top edge.
809   (Bug #74779)
811 * Fix cairo_get_locale_decimal_point() on Android
813 * Fix compilation problem on AIX due to conflicting usage of symbol
814   'jmpbuf'.  (Bug #89339)
816 * Fix broken rendering with XCB due to snapshotting of uploaded part of
817   surfaces.  (Bug #67505)
819 * Fix loss of alpha when copying a mask for a cairo recording surface,
820   resulting in a double copy.  (Bugs #73038, #73901)
822 * Fix incorrect recording of certain paths with script surfaces.
823   (Bug #91054)
825 * Fix typo in definition of MAYBE_WARN in configure script.
826   (Bug #89750)
828 * Fix use of filename variable after it's been freed.
829   (Bug #91206)
831 * Fix out of bounds access when printing pattern.
832   (Bug #91266)
834 * Fix incorrect size calculation in glyph cache unlocking for Cairo GL
835   compositor.
836   (Bug #91321)
838 * Fix memory leak in _cairo_gl_pattern_texture_setup()
839   (Bug #91537)
841 * Fix transparent images in win32-print.
842   (Bug #91835)
844 * Fix _put_shm_image_boxes and _put_image_boxes when no SHM available
845   with XCB.
848 Release 1.14.2 (2015-03-09 Bryce Harrington <bryce@osg.samsung.com>)
849 ====================================================================
850 This release provides collected bug fixes, along with one feature
851 enhancement for the xcb backend, and a small performance improvement for
852 fonts.
854 The running theme of the bug fixes is platform-specific issues, both
855 build and run-time.  Platforms with fixes include Sparc, AIX, Windows
856 (mingw), and Windows (MSVC8).  Memory leaks, valgrind issues, and PDF
857 issues round out our list.
859 It's come to light that changes in cairo 1.14 resulted in breakage on
860 MacOS X 10.4.  We've not yet determined whether to fix up the support,
861 or excise the 10.4-specific code and support only OS X 10.5 or newer.
862 Meantime, we'll only advertise cairo as working on OS X 10.5.
864 Features
865 --------
866  * Improve xcb's handling of per-screen subpixel ordering.  If no
867    Xft.rgba property is specified, default to the screen's subpixel
868    order.
870 API Changes
871 -----------
872 None
874 Dependency Changes
875 ------------------
876 None
878 Performance Optimizations
879 -------------------------
880  * Improve performance of cpu_to_be32 and be32_to_cpu, making truetype
881    subsetting of large fonts run about 15% faster.
883 Bug Fixes
884 ---------
885  * Fix unaligned access on sparc with the compact font format (CFF).
886    Unlike truetype, all data in CFF is not aligned.
887    (Debian bug #712836)
888  * Fix unaligned access on sparc with tor-scan-converter's memory pool.
889  * Fix crash when loading a PDF with a transformed image.
890    (fdo bug #85151)
891  * Fix regression on mingw for bigendian test due to removal of file
892    extension for executables.
893    (fdo bug #85120)
894  * Fix handling of backslash in PDF interpreter
895    (fdo bug #85662)
896  * Fix crash in xlib and xcb renderers when swapping a 0-sized glyph
897  * Fix bug with RTL text in PDF operators
898    (fdo bug #86461)
899  * Fix compilation 'cairo-path-stroke-traps.c' with MSVC8
900    (fdo bug #84908)
901  * Fix crash in _fill_xrgb32_lerp_opaque_spans when a span length is
902    negative.
903  * Fix valgrind error by releasing pattern created by
904    cairo_pattern_create_rgb().
905  * Fix valgrind errors when running cairo-test-suite.
906  * Fix memory leak in recording surface replays
907    (fdo bug #87898)
908  * Fix destruction of fonts in api-special-cases test.
909    (fdo bug #87567)
910  * Fix duplicated surface push on similar-image, preventing trivial GTK3
911    program traces from being replayable, with an error message about
912    invalid values for the size of the input.
913    (fdo bug #73580)
914  * Fix crash when win32 surface's image size does not cover the entire
915    surface.
916    (fdo bug #53121)
917  * Fix crash due to obsolete CGFontGetGlyphPath call
918    (fdo bug #84324)
919  * Fix several build issues on AIX
920    (fdo bugs #89338, #89340, #89356, #89354)
921  * Fix various documentation warnings and errors
924 Release 1.14.0 (2014-10-13 Bryce Harrington <bryce@osg.samsung.com>)
925 ====================================================================
926 Hard to believe it's been over a year since our last release, but it's
927 not for lack of activity.  This release includes contributions of a wide
928 assortment of bug fixes, build system improvements, warnings cleanups,
929 codebase refactoring, test suite repairs, and static analysis work.
931 This release is lighter on features (compared with 1.12.10) but includes
932 a highly demanded rehaul of our image downscaling functionality, which
933 solves a serious problem experienced by Inkscape users when shrinking
934 embedded bitmaps in SVG files.  The new scaling algorithms are used by
935 the image backend and by other backends as needed for fallbacks.
938 Features
939 --------
941   Filtering improvements for the image backend, in particular
942   down-scaling of images produces filtered images that depend on all the
943   pixels of the source. When using the image backend you get the
944   following settings:
946   CAIRO_FILTER_GOOD: uses a box filter for scales less than .75 in
947     either direction. For scales larger than this, the same filter as
948     CAIRO_FILTER_BILINEAR is used.
950   CAIRO_FILTER_BEST: uses a Catmull-Rom filter always. When upscaling
951     more than 2x this will produce anti-aliased square pixels, similar
952     to OS/X.
954   CAIRO_FILTER_GAUSSIAN: uses PIXMAN_FILTER_BEST, which in current
955     pixman is the same as BILINEAR. (This is subject to change in the
956     future).
958   xlib and xcb also use the image fallback for GOOD/BEST filters, but
959   note that other backends do not implement these filtering fixes yet,
960   however other actions may cause them to use an image fallback which
961   will cause these filters to be used.
963   Improve handling of device transformation and scaling, allowing Cairo
964   to now support scaling at a device level, permitting easier, more
965   transparent HiDPI support.
967   Support JBIG2 mime data in PDF.  This allows embedding of more
968   compressed JPEG formats within PDF, rather than including the full
969   uncompressed image.  Also, reduce the number of transparency groups
970   used by PDF to keep the file size small and viewing/printing of the
971   PDF fast.
973   Expand the embedding section to include stencil mask support.
975   Reorder font declarations to be in natural order.
977   Update the Skia backend to build against current Skia (as of June
978   2014).
980   Drop Link-Time Optimization (LTO) support from build system.  This
981   seems to have caused much trouble for unclear benefit, and most
982   distros are reverting or disabling it anyway.
984   Optimize VBO size on GL to 1M and to 16k for EGL.  This improves
985   (theoretical) performance for desktop GLX use cases while avoiding
986   hitting VBO memory size limitations on embedded devices.
988 API Changes
989 -----------
991   cairo_surface_set_device_scale, cairo_surface_get_device_scale:
993     Sets a scale that is multiplied to the device coordinates
994     determined by the CTM when drawing to @surface. One common use for
995     this is to render to very high resolution display devices at a scale
996     factor, so that code that assumes 1 pixel will be a certain size
997     will still work.
999   cairo_egl_device_get_display, cairo_egl_device_get_context:
1001     Support get/set of EGLContext and EGLDisplay for egl-based cairo
1002     devices, similar to GLX.
1004 Dependency Changes
1005 ------------------
1007   Cairo now requires glib 2.14 for its gobject helper functions,
1008   and pixman 0.30 for downscaling.
1011 Bug fixes
1012 ---------
1014   Don't embed CMYK Jpeg images in svg.
1016   Fix tests to place output in proper location.
1018   Fix determination of alpha for all surfaces when recording.
1020   Extend oversize check to cairo_gl_surface_create_for_texture, so an
1021   error surface is returned if the texture is too large to render to.
1023   Fix embedding of mime data in PDF and PS files.
1025   Remove useless error handling in *_reply() functions in XCB.
1027   Fix a double-free exposed by multithreaded apps creating and
1028   destroying the same font concurrently.
1029   https://bugs.freedesktop.org/show_bug.cgi?id=69470
1031   Fix corrupt stacks produced by bugs in operand emission for trace.
1033   Fix out of bounds array access in format cache for xlib
1035   Don't rename glyphs used by seac operator.  This can cause certain
1036   combined characters to use their decorations (e.g. umlauts on ö) to be
1037   lost during printing of PDFs using evince.
1038   https://bugs.freedesktop.org/show_bug.cgi?id=70364
1040   Fix crash on calling cairo_create with a finished surface
1042   Fix SSIZE_T definition problem when making with MSYS on Windows7
1044   Fix one off issue in gl context cleanup
1046   Fix usage of CAIRO_STACK_ARRAY_LENGTH
1048   Fix rectangle stroke with non rectilinear pen
1050   Fix imagemask with pattern source failure on some printers.  This bug
1051   could cause files converted using pdftops to fail for example on Ricoh
1052   printers, or opening in Adobe Distiller on Windows.
1053   https://bugs.freedesktop.org/show_bug.cgi?id=69485
1055   Fix whitespace in font names
1057   Fix page size in generated PDFs.  When printing using pdftocairo on
1058   larger page sizes, such as 11x17, the image would be cropped to letter
1059   size.
1060   https://bugs.freedesktop.org/show_bug.cgi?id=73452
1062   Fix path-currentpoint test by preserving current-point in
1063   copy_path()/append_path() sequence
1065   Fix generation of HTML in code docs for
1066   cairo-format-stride-for-width.  Raw HTML code was being passed
1067   to the browser, instead of displaying normally.
1068   https://bugs.freedesktop.org/show_bug.cgi?id=63257
1070   Fix spelling of "tessellator" throughout code.  We're using the
1071   American rather than British spelling of this word.
1072   https://bugs.freedesktop.org/show_bug.cgi?id=50411
1074   Fix crash in pixman_image_composite32
1076   Fix crash when trying to modify a (const) all-clipped cairo_clip_t
1077   https://bugs.freedesktop.org/show_bug.cgi?id=75819
1079   Add check_composite method to all compositors, to fix crashes in the
1080   test suite.
1082   Fix crash in Firefox when scrolling on certain pages.
1084   Fix memory leaks found by static analysis.
1086   Fix build of any2ppm if fork is not available.
1088   Fix broken build for Qt backend, due to missing libstdc++.
1090   Fix typo in two cairo_uint128 functions.  Fixes potential build issues
1091   on systems without a uint128 type.
1093   Fix build when --enable-pdf=no
1095   Fix cache_frozen assertions for Win32 print.
1097   Correctly check for xcb image surface for inplace upload
1099   Fix webkit-based web browser crashes due to empty boxes by skipping
1100   over them when tesselating.
1102   Make pixman, libpng, and zlib paths commandline configurable for win32
1103   builds.
1105   Fix image scale on Win32 when GDI scale is not identity.
1107   Fix float endian configure test when using clang -O4
1109   Fix compilation with Android bionic libc
1111   Don't try to build util/sphinx on Windows
1113   Fix loss of precision when emitting joins.  This was caused by
1114   discrepancies in line gradients when passing trapezoids around.
1116   Fix loss of precision and associated rendering issues in
1117   cairo-tor-scan-converter from projection onto sample grid.
1119   Fix pixman oversampling of neighbouring edges within a cell by
1120   eliminating self-intersections for the pixman traps compositor.
1122   Fix multi-line string splitting in PDFs
1124   Various cleanups and fixes to warnings, documentation, tests, and
1125   build system.  Improve error handling and return value checks.
1126   Cleanup XFAIL tests and reference images.  Cover recently added
1127   functionality.
1130 Release 1.12.16 (2013-08-21 Chris Wilson <chris@chris-wilson.co.uk>)
1131 ===================================================================
1132 Thanks to everybody who reported a bug and helped us develop a fix,
1133 we have amassed quite a few bug fixes. There are still more outstanding
1134 bugs that seek attention and a little bit of TLC, but this release has
1135 been delayed long enough...
1137 Bug fixes
1138 ---------
1140   Set the correct orientation for simple boxes with a negative scale
1141   factor.
1143   Fix the creation of the shading dictionary in PDF.
1145   Fix a crash in PDF when incorporating an image with CAIRO_EXTEND_PAD.
1146   https://bugs.freedesktop.org/show_bug.cgi?id=61451
1148   Avoid upscaling bitmap fonts if possible.
1150   Fix an assertion failure within the mempool allocator for shared memory.
1152   Fix allocation size for CFF subsets.
1154   Export cairo_matrix_t for GObject bindings.
1156   Fix a double free in the Quartz backend.
1157   https://bugs.freedesktop.org/show_bug.cgi?id=62885
1159   Fix origin of GDI StretchBlits for the Windows backend
1160   https://bugs.freedesktop.org/show_bug.cgi?id=61876
1162   Fix error propagation for requests to create a similar surface with
1163   negative size.
1164   https://bugs.freedesktop.org/show_bug.cgi?id=63196
1166   Fix complex clipping of trapezoids with regions
1167   https://bugzilla.gnome.org/show_bug.cgi?id=697357
1169   Stop leaking the image data when loading PNGs
1171   Fix unbounded operations with a clip mask through the span compositor
1172   https://bugs.freedesktop.org/show_bug.cgi?id=61592
1174   Add missing checks before rendering to a finished surface - so we return
1175   an error rather than hit an assert.
1176   https://bugs.freedesktop.org/show_bug.cgi?id=68014
1178   Prevent an assertion failure when creating similar GL surfaces larger
1179   than supported by hardware.
1181   Prevent a double free of a similar image under Windows.
1182   https://bugs.freedesktop.org/show_bug.cgi?id=63787
1185 Release 1.12.14 (2013-02-10 Chris Wilson <chris@chris-wilson.co.uk>)
1186 ===================================================================
1187 In the last week we had a few more bugs reported and promptly resolved.
1188 As these are a combination of regressions and stability issues, it is
1189 time for a prompt update and release. Many thanks to everyone for
1190 testing and reporting issues, and helping to make Cairo better.
1192 Bug fixes
1193 ---------
1195   Prevent user callbacks accessing user-data during destroy to prevent
1196   use-after-free bugs.
1197   https://bugzilla.mozilla.org/show_bug.cgi?id=722975
1199   Use standard names for glyphs in subset fonts (PDF).
1200   https://bugs.freedesktop.org/show_bug.cgi?id=60248
1202   Fix detection of Win98. The logic for detecting Win98 (and its broken
1203   AlphaBlend()) was inverted, disabling AlphaBlend() for everyone.
1205   Prevent numeric overflow from extrapolating polygon edges to the clip
1206   boundary and causing severe render artifacts.
1207   https://bugs.freedesktop.org/show_bug.cgi?id=60489
1209   Fix computation of glyph string coordinates when breaking up runs
1210   for xlib.
1212   Fix an assertion in the win32 backend for failing to clear its
1213   similar-images.
1214   https://bugs.freedesktop.org/show_bug.cgi?id=60519
1217 Release 1.12.12 (2013-01-31 Chris Wilson <chris@chris-wilson.co.uk>)
1218 ===================================================================
1219 The goal of this release is to fix the synchronisation problems that
1220 were exhibited in the SHM transport for cairo-xlib. This cropped up
1221 any place that tried to rapidly push fresh pixel data to the X server
1222 through an ordinary image surface, such as gimp-2.9 and evince.
1224 Bug fixes
1225 ---------
1227    Avoid replacing the entire image when uploading subimages
1228    https://bugs.freedesktop.org/show_bug.cgi?id=59635
1230    Force synchronisation for scratch SHM image buffers, so that we do
1231    not overwrite data as it is being read by X.
1232    https://bugs.freedesktop.org/show_bug.cgi?id=59635 (also)
1234    Fix typos in detecting multisampling for the GL (MSAA) backend.
1236    Fix a memory leak in the GL (MSAA) backend.
1238    Fix a reference counting bug when mapping a GL surface to an image.
1241 Release 1.12.10 (2013-01-16 Chris Wilson <chris@chris-wilson.co.uk>)
1242 ===================================================================
1243 A heap of bug fixes everywhere, and the gradual completion of the MSAA
1244 backend for cairo-gl. Perhaps the most noteworthy set of the bugfixes
1245 was the crusage lead by Behdad Eshfabod to make font handling by
1246 pango/cairo/fontconfig fully threadsafe. This testing revealed a couple
1247 of races that needed fixing in Cairo's scaled-font and glyph cache.
1249 Bug fixes
1250 ---------
1252   Append coincident elements to the recording's surface bbtree so that
1253   the list is not corrupted and the overlapping elements lost.
1255   Fix cairo-trace to correctly record map-to-image/unmap-image and then
1256   replay them.
1258   Ignore MappingNotifies when running the XCB testsuite as they are sent
1259   to all clients when the keyboard changes. The testsuite would detect
1260   the unexpected event and complain.
1262   Handle very large images in the XCB backend.
1264   Fix a memory leak in the xlib/shm layer, and prevent use of the SHM
1265   surfaces after the display is closed.
1266   https://bugs.freedesktop.org/show_bug.cgi?id=58253
1268   Handle resizing of bitmap fonts, in preparation for a fix to
1269   fontconfig to correctly pass on the user request for scaling.
1271   Always include subroutine 4 (hint replacement idion) when subsetting
1272   type 1 fonts in order to prevent a crash in cgpdftops on Mac OS/X
1274   Fix a couple of typos in the cairo-gobject.h header files for
1275   introspection.
1277   Prevent a mutex deadlock when freeing a scaled-glyph containing a
1278   recording-surface that itself references another scaled-glyph.
1279   https://bugs.freedesktop.org/show_bug.cgi?id=54950
1281   Make scaled-font cache actually thread-safe and prevent
1282   use-after-frees.
1284   Restore support for older versions of XRender. A couple of typos and a
1285   few forgotten chunks prevented the xlib compositor from running
1286   correctly with XRender < 0.10. Note that there are still a few
1287   regressions remaining.
1290 Release 1.12.8 (2012-11-24 Chris Wilson <chris@chris-wilson.co.uk>)
1291 ===================================================================
1292 Another couple of weeks and a few more bugs have been found and fixed,
1293 it is time to push the next point release. Many thanks to everyone who
1294 reported their issues and helped us track down the bugs and helped
1295 testing the fixes.
1297 Bug fixes
1298 ---------
1300   Expand the sanity checking for broken combinations of XSendEvent and
1301   ShmCompletionEvent.
1303   Notice that "The X.Org Foundation" sometimes also identifies itself
1304   as "The Xorg Foundation".
1306   Handle various ages of libXext and its Shm headers.
1308   Fix the invalid clipping of the source drawable when using SHM
1309   transport to upload images.
1310   https://bugs.freedesktop.org/show_bug.cgi?id=56547
1312   Handle all Type1 postscript operators for better font compatibility.
1313   https://bugs.freedesktop.org/show_bug.cgi?id=56265
1315   Fix a couple of memory leaks in Type1 font subsetting
1316   https://bugs.freedesktop.org/show_bug.cgi?id=56566
1318   Tighten the evaluation of the start/stop pen vertices, and catch a few
1319   instances where we would use a fan instead of a bevel.
1320   https://bugs.freedesktop.org/show_bug.cgi?id=56432
1322   Fix assumption that geometric clipping always succeeds with the
1323   span-compositor.
1324   https://bugs.freedesktop.org/show_bug.cgi?id=56574
1326   Fix call to spline intersection when evaluating whether a stoke is
1327   visible.
1329   Remember to copy inferior sources when using SHM to readback the
1330   surface for use as a source.
1332 Release 1.12.6 (2012-10-22 Chris Wilson <chris@chris-wilson.co.uk>)
1333 ===================================================================
1334 Thanks to everyone who download cairo-1.12.4 and gave us their feedback.
1335 It truly was invaluable and has helped us to fix many portability issues
1336 that crept in with some of the new features. This release aims to fix
1337 those stability issues and run on a wider range of systems.
1339 Bug fixes
1340 ---------
1342   Fix the recording surface to actually snapshot the source and so fix
1343   PDF drawing.
1345   Calling XSendEvent with an XShmCompletionEvent is incompatabile with
1346   older Xorg servers.
1348   Reorder CloseDisplay chain so that XShm is not reinstantiated after
1349   shutdown, causing a potential crash if the Display was immediately
1350   recreated using the same memory address.
1352   Make sure that the Xserver has attached to the SHM segment before
1353   deleting it from the global namespace on systems that do not support
1354   deferred deletion.
1356   Type1 subsetting support for PDF (and PS) was once again improved to
1357   work with a larger number of PDF readers.
1359   GLESv2 build fixes and improved support for embedded GPUs.
1361   Tweak the invisible pen detection for applications that are currently
1362   using too large values for geometric tolerance.
1364   A build fix for older freetype libraries.
1367 Release 1.12.4 (2012-10-05 Chris Wilson <chris@chris-wilson.co.uk>)
1368 ===================================================================
1369 More bugs, and more importantly, more fixes. On the cairo-gl side, we
1370 have refinements to the MSAA compositor which enables hardware
1371 acceleration of comparatively low-quality antialiasing - which is useful
1372 in animations and on very high density screens. For cairo-xlib, we have
1373 finally enabled SHM transport for image transfers to and from the X
1374 server. A long standing required feature, SHM transport offers a notable
1375 reduction in rendering latency by reducing the number of copies
1376 required to upload image data - given hardware and driver support,
1377 cairo-xlib can now perform zero copy uploads onto the GPU. And as usual
1378 Adrian Johnson has been very busy fixing many different corner cases in
1379 cairo-pdf, improving opacity groups and font subsetting. Last, but not
1380 least, for cairo-image Søren Sandmann Pedersen added support for
1381 rendering glyphs to pixman and using that from within cairo. The new
1382 glyph rendering facility reduces the overhead for setting up the
1383 compositing operation, improving glyph thoughput for the image backend
1384 by a factor of about 4. And before he did so, he also fixed up a few
1385 bugs in the existing glyph rendering code. So many thanks to Andrea
1386 Canciani, Adrian Johnson, Chuanbo Weng, Dongyeon Kim, Henry Song, Martin
1387 Robinson, Søren Sandmann Pedersen and Uli Schlachter for their
1388 contributions, finding and fixing bugs.
1390 Bug fixes
1391 ---------
1393  Interior boxes were being dropped when amalgamating regions during
1394  tessellation.
1395  https://bugs.freedesktop.org/show_bug.cgi?id=49446
1397  Allow building without gtk-doc installed
1399  Invalid edge generation whilst reducing complex polygons.
1400  https://bugs.freedesktop.org/show_bug.cgi?id=50852
1402  Stroking around tight cusps
1404  Use locale correct formats for reading font subsetting and valid
1405  buffers.
1406  https://bugs.freedesktop.org/show_bug.cgi?id=51443
1408  Ensure that the type1 subset includes all the glyph encodings
1409  https://bugs.freedesktop.org/show_bug.cgi?id=53040
1411  Upload the whole source for a repeating pattern.
1412  https://bugs.freedesktop.org/show_bug.cgi?id=51910
1414  Fix damage tracking to handle continuation chunks correctly and so
1415  prevent crashes on win32.
1416  https://bugs.freedesktop.org/show_bug.cgi?id=53384
1418  Avoid emitting miter joins for degenerate line segments
1419  https://bugzilla.mozilla.org/show_bug.cgi?id=407107
1421  Convert the relative path semgents into the backend coordinates
1422  and then back again to user coordinates (cairo_copy_path,
1423  cairo_append_path)
1424  https://bugs.freedesktop.org/show_bug.cgi?id=54732
1426  Fix extents computations for a degenerate path consisting only of a
1427  move-to
1428  https://bugs.freedesktop.org/show_bug.cgi?id=54549
1430  Prevent crashing on a degenerate project edge after polygon
1431  intersection
1432  https://bugs.freedesktop.org/show_bug.cgi?id=54822
1436 Release 1.12.2 (2012-04-29 Chris Wilson <chris@chris-wilson.co.uk>)
1437 ===================================================================
1438 After such a long gestation period for the release of Cairo 1.12, we
1439 inevitably accumulated a few bugs that were flushed out by broadening the
1440 test base. Thanks to everybody who tried the release, apologies to any one
1441 unfortunate enough to encounter a bug and many thanks for reporting it. As
1442 a result Adrian Johnson, Alexandros Frantzis, Andrea Canciani, Kalev
1443 Lember, Maarten Bosman, Marcus Meissner, Nis Martensen and Uli Schlachter
1444 have squashed many more bugs and improved the documentation. I would
1445 strongly recommend everyone to upgrade to cairo-1.12.2.
1446 -Chris
1448 Bug fixes
1449 ---------
1451  Allow applications to create 0x0 xlib surfaces, such as used by LibreOffice.
1452  https://bugs.freedesktop.org/show_bug.cgi?id=49118
1454  Trim composite extents for SOURCE/CLEAR operators to the mask.
1456  Use fallback fonts in PDF for unhandled computed glyph widths
1457  https://bugs.freedesktop.org/show_bug.cgi?id=48349
1459  Handle snapshots of recording surfaces for analysing pattern extents.
1460  Fixes a regression of reporting the PDF bounding box as being the page size.
1462  Fix allocation size for PDF pattern ids.
1463  Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=49089
1465  Fix emission of rectilinear dashed segments, with and without scaling, and
1466  application of degenerate line joins.
1468  Clamp unbounded fixup polygons to the clip extents.
1470  Prevent infinite loop due to rounding errors whilst incrementing along dashes.
1472  Prevent overflow for inline a8 span filling.
1474  Miscellaneous build fixes for Cygwin on Windows and Solaris.
1476 Release 1.12.0 (2012-03-23 Chris Wilson <chris@chris-wilson.co.uk>)
1477 ===================================================================
1478 It's taken over 18 months, but the wait is finally over. A new cairo release!
1479 We are pleased to announce a new stable release of Cairo that brings many
1480 new features and performance improvements, all whilst maintaining
1481 compatibility with cairo-1.0 and all releases since. We recommend anyone
1482 using a previous release of Cairo to upgrade to 1.12.0.
1484 The major feature of this release is the introduction of a new procedural
1485 pattern; the mesh gradient. This, albeit complex, gradient is constructed
1486 from a set of cubic Bezier patches and is a superset of all other gradient
1487 surfaces which allows for the construction of incredibily detailed patterns.
1488 In PDF parlance, the mesh gradient corresponds with type 7 patterns. Many
1489 thanks to Andrea Canciani for bringing this to Cairo, and for his work on
1490 making gradient handling robust.
1492 Not content with just adding another procedural pattern, Cairo 1.12 also
1493 adds new API to create a callback pattern,
1494 cairo_pattern_create_raster_source, that allows the application to
1495 provide the pixel data for the region of interest at the time of
1496 rendering. This can be used for instance, by an application to decode
1497 compressed images on demand and to keep a cache of those decompressed
1498 images, independently of Cairo. When combined with the recording
1499 surface, it should form a useful basis for a deferred renderer.
1501 With the release of cairo-1.12, we also introduce a new supported
1502 backend for interoperating with X using XCB. Uli Schlachter, also
1503 maintainer of awesome and contributor to libxcb, has volunteered to
1504 maintain cairo-xcb for us. Thanks Uli!
1506 For cairo-1.12, we have also added some common API to address any
1507 surface as an image and so allow direct modification of the raster data.
1508 Previously, only the Quartz and Win32 backends supported a very narrow
1509 interface to allow for efficient pixel upload. Now with
1510 cairo_surface_create_similar_image, cairo_surface_map_to_image, and
1511 cairo_surface_unmap_image, Cairo exports a consistent method for
1512 treating those surfaces as an image and so allow modification inplace.
1513 These are the same routines used internally, and should support
1514 efficient transfer or direct mapping of the target surfaces as
1515 applicable.
1517 Another focus over the past year has been to address many performance
1518 issues, without sacrificing the composition model. To accomplish the
1519 goal, once again the rasterisation pipeline was overhauled and made
1520 explicit, giving the backends the freedom to implement their own
1521 specific pipeline whilst also providing a library of common routines
1522 from which to build the pipeline. For instance, this allows the image
1523 backend and the gl backend to composite scan line primitives inplace,
1524 and to then implement custom fallbacks to catch the corner cases that do
1525 not map onto their fastest paths. Similarly, this allows for the Xlib
1526 backend to implement trapezoidation without compromising the other
1527 backends, yet still allow for the pipeline to be used elsewhere for
1528 testing and fallbacks. Clipping was once again overhauled, so that the
1529 common cases for the raster pipelines could be captured and processed
1530 with fast paths with the emphasis on performing geometric clipping to
1531 reduce the frequency of using multi-pass clipmasks. Stroking was made
1532 faster, both by providing specialised fast-paths for simple, yet frequent,
1533 cases (such as stroking around a rectangle) and by reducing the number
1534 of edges generated by the general stroker.
1536 As part of the focus on performance, Cairo 1.12 introduces some
1537 antialias hints (NONE, FAST, GOOD, BEST) that are interpolated by the
1538 rasterisers to fine tune their performance versus quality. Cairo 1.12
1539 also introduces a new observation architecture,
1540 cairo_surface_observer_t, which can be used to analyse the amount of
1541 time consumed by drawing commands and help identify inefficiencies in
1542 both Cairo and the application.
1544 Last, but by no means least, the OpenGL backend has seen significant
1545 work including the port to GLESv2 and the exploitation of advanced
1546 hardware features. Interesting times.
1548 As always, I would like to thank everyone who contributed to Cairo,
1549 not only through writing code, but also submitting documentation, bug
1550 reports, suggestions and generally having fun with Cairo! In particular
1551 though this release could not have happened without the efforts of
1552 Adrian Johnson, Alexandros Frantiz, Andrea Canicani, Martin Robinson,
1553 Nis Martensen, and Uli Schlachter. Thanks.
1554 -Chris
1556 Snapshot 1.11.4 (2012-13-12)
1557 ============================
1558 The cairo community is pleased to finally announce the long aniticpated
1559 release candidate for 1.12, 1.11.4, of the cairo graphics library. This
1560 is the first major update to cairo in over a year and brings a large
1561 number of new features; undoubtably a few bugs as well.
1563 While many people have contributed and have helped to test the release,
1564 providing feedback on 1.10 and suggesting improvements, this release
1565 is the result of a few persevering souls who deserve recognition for their
1566 outstanding contributions: Andrea Canciani (all round bug fixing,
1567 performance tuning and master of the gradients), Adrian Johnson (PDF
1568 supremo) and Uli Schlachter (who stepped forward as maintainer for the
1569 XCB backend).
1571 Major additions since 1.11.2:
1573  * cairo_surface_map_to_image API for pixel level access to any surface
1575  * New antialias hints to control the trade-off between speed and quality
1577  * A callback pattern, cairo_pattern_create_raster_source, for lazy
1578    decoding of image data.
1580  * cairo_surface_observer_t, a new type of surface to gather performance
1581    statistics
1583  * XCB as a supported backend
1585  * A rewritten compositor pipeline for performance improvements for, but not
1586    limited to, the xlib and image backends.
1587    From ION and PineView through to SandyBridge, every machine I have shows
1588    across the board performance improvement on the cairo-traces:
1590    i5-2520m     gnome-system-monitor:   5.97x speedup
1591    pnv          gnome-system-monitor:   4.86x speedup
1592    i5-2520m     firefox-asteroids:      4.66x speedup
1593    pnv          firefox-asteroids:      4.43x speedup
1594    image        firefox-canvas:         3.82x speedup
1595    i5-2520m     firefox-canvas-alpha:   3.49x speedup
1596    image        firefox-asteroids:      2.87x speedup
1597    pnv          firefox-talos-svg:      2.83x speedup
1598    ion          grads-heat-map:         2.75x speedup
1599    pnv          firefox-canvas-alpha:   2.66x speedup
1600    image        gnome-system-monitor:   2.66x speedup
1601    image        swfdec-giant-steps:     2.46x speedup
1602    image        firefox-canvas-alpha:   2.14x speedup
1603    i5-2520m     firefox-talos-svg:      2.03x speedup
1604    image        grads-heat-map:         2.02x speedup
1605    ion          gnome-system-monitor:   2.00x speedup
1606    pnv          firefox-particles:      1.99x speedup
1607    i5-2520m     grads-heat-map:         1.96x speedup
1608    pnv          firefox-canvas:         1.92x speedup
1609    ion          firefox-particles:      1.80x speedup
1610    image        poppler-reseau:         1.77x speedup
1611    pnv          xfce4-terminal-a1:      1.72x speedup
1612    image        firefox-talos-svg:      1.65x speedup
1613    pnv          grads-heat-map:         1.63x speedup
1614    i5-2520m     firefox-canvas:         1.63x speedup
1615    pnv          swfdec-youtube:         1.62x speedup
1616    image        ocitysmap:              1.59x speedup
1617    i5-2520m     firefox-fishbowl:       1.56x speedup
1618    i5-2520m     poppler-reseau:         1.50x speedup
1619    i5-2520m     evolution:              1.50x speedup
1620    i5-2520m     midori-zoomed:          1.43x speedup
1621    pnv          firefox-planet-gnome:   1.42x speedup
1622    i5-2520m     firefox-talos-gfx:      1.41x speedup
1623    i5-2520m     gvim:                   1.41x speedup
1624    pnv          ocitysmap:              1.37x speedup
1625    image        poppler:                1.31x speedup
1626    ion          firefox-canvas-alpha:   1.35x speedup
1627    ion          firefox-talos-svg:      1.34x speedup
1628    i5-2520m     ocitysmap:              1.32x speedup
1629    pnv          poppler-reseau:         1.31x speedup
1630    i5-2520m     firefox-planet-gnome:   1.31x speedup
1631    pnv          firefox-fishbowl:       1.30x speedup
1632    pnv          evolution:              1.28x speedup
1633    image        gvim:                   1.27x speedup
1634    i5-2520m     swfdec-youtube:         1.25x speedup
1635    pnv          gnome-terminal-vim:     1.27x speedup
1636    pnv          gvim:                   1.25x speedup
1637    image        firefox-planet-gnome:   1.25x speedup
1638    image        swfdec-youtube:         1.25x speedup
1639    ...
1641 And a plethora of minor improvements everywhere!
1642 -Chris
1644 Snapshot 1.11.2 (2011-01-23)
1645 ===========================
1647 In this first snapshot along the way to cairo-1.12.0, we are very excited
1648 to announce the introduction of Bezier surface gradients, known as type
1649 6/7 gradients in PS/PDF parlance. This is the culmination of much work by
1650 the dynamic duo: Adrian Johnson and Andrea Canciani. Thanks guys!
1652 Also, I want to warmly welcome Uli Schlachter who recently joined the
1653 Cairo community on a mission. That mission is to make cairo-xcb a
1654 supported backend for 1.12. And for this snapshot he has made great
1655 strides in fixing all the bugs I had left behind. Thanks Uli!
1657 And we have also seen a new contributor, Alexandros Frantzis, who has
1658 begun bringing up cairo-gl for GLESv2 devices. Thanks Alex!
1660 And lastly, I must also thank Adrian and Andrea for the vast numbers of
1661 bugs that they have tackled between them, fixing all those little corner
1662 cases that lie hidden until too late.
1664 API additions:
1666 The ability to construct piece-wise Bezier surface gradients:
1668         cairo_pattern_create_mesh
1670         constructs a pattern of type CAIRO_PATTERN_TYPE_MESH using
1672         cairo_pattern_mesh_begin_patch
1673         cairo_pattern_mesh_end_patch
1674         cairo_pattern_mesh_curve_to
1675         cairo_pattern_mesh_line_to
1676         cairo_pattern_mesh_move_to
1677         cairo_pattern_mesh_set_control_point
1678         cairo_pattern_mesh_set_corner_color_rgb
1679         cairo_pattern_mesh_set_corner_color_rgba
1680         cairo_pattern_mesh_get_patch_count
1681         cairo_pattern_mesh_get_path
1682         cairo_pattern_mesh_get_corner_color_rgba
1683         cairo_pattern_mesh_get_control_point
1685 The introduction of a unique ID accessible via the mime data type:
1686         CAIRO_MIME_TYPE_UNIQUE_ID
1692 Release 1.10.2 (2010-12-25 Chris Wilson <chris@chris-wilson.co.uk>)
1693 ===================================================================
1694 The cairo community is pleased to announce the 1.10.2 release of the
1695 cairo graphics library. This is the first update to cairo's stable 1.10
1696 series and contains a large number of bug fixes.
1698 While many people have contributed and have help to test the release,
1699 2 people deserve special recognition for their efforts in tracking down
1700 and fixing bugs, Andrea Canciani and Adrian Johnson. Thanks to their
1701 tremendous efforts, and of all cairo contributors, it is much
1702 appreciated.
1704 We recommend everyone upgrade to cairo 1.10.2 and hope that everyone
1705 will continue to have lots of fun with cairo!
1707 -Chris
1709 Bug fixes
1710 ---------
1712   Fix embedding of grayscale jpegs in PS.
1713   https://bugs.freedesktop.org/show_bug.cgi?id=31632
1715   Fix the reported path of extents containing a curve.
1717   Fix the compositing of unaligned boxes.
1719   Reset the clipper in PDF upon finish.
1721   Fix degenerates arcs to become a degenerate line.
1723   Build support for autoconf 2.67
1725   Fix painting of transformed patterns in PS
1727   Fix the EPS bounding box for PS
1728   https://bugs.freedesktop.org/show_bug.cgi?id=24688
1730   Fix the missing content for EPS
1731   https://bugs.freedesktop.org/show_bug.cgi?id=24688
1733   Fix regression upon changing page size in PS/PDF
1734   https://bugs.freedesktop.org/show_bug.cgi?id=24691
1736   Only use ActualText with PDF-1.5 documents
1738   Fix the bbox for type1 fallbacks.
1740   Reset the color after ending the context in PDF
1741   https://bugs.freedesktop.org/show_bug.cgi?id=31140
1743   Fix the advance of subsetted type1 fonts
1744   https://bugs.freedesktop.org/show_bug.cgi?id=31062
1746   Fix handling of EXTEND_NONE gradients for PDF
1748   Restrict in-place optimisation for a8 image masks with SOURCE
1751 Release 1.10.0 (2010-09-06 Chris Wilson <chris@chris-wilson.co.uk>)
1752 ===================================================================
1753 The cairo community is astounded (and flabbergast) to finally announce
1754 the 1.10.0 release of the cairo graphics library. This is a major update
1755 to cairo, with new features and enhanced functionality which maintains
1756 compatibility for applications written using any previous major cairo
1757 release, (1.8, 1.6, 1.4, 1.2, or 1.0). We recommend that anybody using
1758 a previous version of cairo upgrade to cairo 1.10.0.
1760 One of the more interesting departures for cairo for this release is the
1761 inclusion of a tracing utility, cairo-trace. cairo-trace generates a
1762 human-readable, replayable, compact representation of the sequences of
1763 drawing commands made by an application. This can be used to inspecting
1764 applications to understand issues and as a means for profiling
1765 real-world usage of cairo.
1767 The traces generated by cairo-trace have been collected in
1769   git://git.cairographics.org/git/cairo-traces
1771 and have driven the performance tuning of cairo over the last couple of
1772 years. In particular, the image backend is much faster with a new
1773 polygon rasterisation and a complete overhaul of the tessellator. Not
1774 only is this faster, but also eliminates visual artifacts from
1775 self-intersecting strokes. Not only has cairo-trace been driving
1776 performance improvements within cairo, but as a repeatable means of
1777 driving complex graphics it has been used to tune OpenGL, DDX, and
1778 pixman.
1780 Cairo's API has been extended to better support printing, notably
1781 through the ability to include a single compressed representation of an
1782 image for patterns used throughout a document, leading to dramatic file
1783 size reductions. Also the meta-surface used to record the vector
1784 commands compromising a drawing sequence is now exposed as a
1785 CAIRO_SURFACE_TYPE_RECORDING, along with a new surface that is a child of a
1786 larger surface, CAIRO_SURFACE_TYPE_SUBSURFACE. One typical usage of a
1787 subsurface would be as a source glyph in a texture atlas, or as a
1788 restricted subwindow within a canvas.
1790 Cairo's API has also resurrected the RGB16 format from the past as
1791 the prevalence of 16-bit framebuffers has not diminished and is a
1792 fore-taste of the extended format support we anticipate in the future.
1793 Increasing cairo's utility, we introduce the cairo_region_t for handling
1794 sets of pixel aligned rectangles commonly used in graphics applications.
1795 This is a merger of the GdkRegion and the pixman_region_t, hopefully
1796 providing the utility of the former with the speed of the latter.
1798 Furthermore cairo has been reworked to interoperate more closely with
1799 various acceleration architectures, gaining the ability to share
1800 those hardware resources through the new cairo_device_t. For instance,
1801 with the new OpenGL backend that supersedes the Glitz backend, hardware
1802 and rendering operations can be shared between a classic OpenGL
1803 application mixing libVA for the hardware assisted video decode with
1804 cairo for high quality overlays all within the same OpenGL canvas.
1806 Many thanks for the hard work of Adrian Johnson, Andrea Canciani, Behdad
1807 Esfahbod, Benjamin Otte, Carl Worth, Carlos Garcia Campos, Chris Wilson,
1808 Eric Anholt, Jeff Muizelaar, Karl Tomlinson, M Joonas Pihlaja, Søren
1809 Sandmann Pedersen and many others that have contributed over the last
1810 couple of years to cairo. Thank you all!
1812 Snapshot 1.9.14 (2010-07-26)
1813 ============================
1815   A quiet couple of weeks, hopefully Cairo is seeing widescale deployment and
1816   we are being to see the results of the stabilisation effort. Clipping bugs
1817   seems to have been the order of the last couple of weeks, with a couple
1818   reported and duly fixed. Thank you Igor Nikitin and Karl Tomlinsion for
1819   finding those regressions. At this point all that seems to remain to do is
1820   to fix the outstanding regressions in the PDF backend...
1822 Bugs fixes
1823 ----------
1825     Clip doesn't work for text on the image backend
1826     https://bugs.freedesktop.org/show_bug.cgi?id=29008
1828     Add explicit dependency for cxx
1829     https://bugs.freedesktop.org/show_bug.cgi?id=29114
1831     Fix regressions in reporting clip extents
1832     https://bugs.freedesktop.org/show_bug.cgi?id=29120
1833     https://bugs.freedesktop.org/show_bug.cgi?id=29121
1834     https://bugs.freedesktop.org/show_bug.cgi?id=29122
1835     https://bugs.freedesktop.org/show_bug.cgi?id=29124
1836     https://bugs.freedesktop.org/show_bug.cgi?id=29125
1839 Snapshot 1.9.12 (2010-07-12)
1840 ============================
1842   A couple of weeks spent fixing those annoying bugs and cleaning up the build
1843   system; the list of outstanding tasks to complete for the stable release is
1844   finally shrinking. The chief bug fixer has been Benjamin Otte who not only
1845   made sure that the public API is consistent and being tested for its
1846   consistency, but also ensured that the documentation was up-to-date and
1847   spent time clarifying cases where even the Cairo developers have come
1848   unstuck in the past. Many thanks, Benjamin. However, he was not alone,
1849   as Andrea Canciani continued his fine work in isolating broken corner cases
1850   and proceeding to fix them, and tidying up the quartz backend. And last, but
1851   definitely not least, M Joonas Pihlaja tried building Cairo across a
1852   perverse range of systems and fixed up all the loose bits of code that came
1853   unravelled. Thanks everybody!
1855 API Changes
1856 -----------
1858   cairo_surface_set_mime_data, cairo_surface_get_mime_data:
1860     The length parameter is now an unsigned long (as opposed to an unsigned
1861     int). The parameter is intended to be an equivalent to a size_t without
1862     requiring POSIX types and be large enough to store the size of the
1863     largest possible allocation.
1865   cairo_gl_surface_create_for_texture:
1867     This a new surface constructor for cairo-gl that explicitly enables
1868     render-to-texture for foreign, i.e. application, textures.
1870   cairo_region_xor, cairo_region_xor_rectangle
1872     A couple of utility routines add to the region handling interface for
1873     the purpose of replacing existing GdkRegion functionality.
1875 Bugs fixes
1876 ----------
1878   https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/600622
1880     Inkscape was caught in the act of attempting to modify a finished surface.
1881     Unfortunately, we had the ordering of our guards and assertions wrong and
1882     so an ordinary application error was triggering an assert in Cairo. This
1883     lead Benjamin to add a test case to ensure that the entire public API
1884     could handle erroneous input and then proceeded to fix a whole slew of
1885     uncovered bugs.
1888   https://bugs.freedesktop.org/show_bug.cgi?id=28888
1890     A regression introduced by the special casing of uploading images to an
1891     xlib surface in-place which was ignoring the translation applied to the
1892     image.
1895 Snapshot 1.9.10 (2010-06-26)
1896 ============================
1898    The first "quick" snapshot in the run up to the stable release.  The
1899    last snapshot was picked up by the bleeding edge distributions and so the
1900    bug reports have to started to roll in.  The most frequent of these are the
1901    introduction of rendering errors by applications that modify a surface
1902    without subsequently calling cairo_surface_mark_dirty(). Make sure the
1903    application developers are aware of increased reliance on strict use of the
1904    Cairo API before 1.10 is released!
1906    The usual slew of bugs reported and we would like to thank Zoxc for
1907    contributing the WGL interface for cairo-gl, and finding more build
1908    failures on win32.  And it just wouldn't be a 1.9 snapshot unless
1909    Benjamin Otte improved the error handling within cairo-gl, as well as
1910    isolating and fixing some more errors in the test suite. The biggest bug of
1911    the snapshot turned out to be a major sign extension issue that had lain
1912    hidden for many years and was suddenly exposed by incorrectly rounding
1913    rectangles when performing non-antialiased rendering.  Also to the relief
1914    of many we have included the downstream patch to honour the user's LCD
1915    filtering preferences for subpixel rendering of fonts.  The interface
1916    remains private for the time being, whilst the proposed public API is
1917    finalized.
1919 API changes
1920 -----------
1921    None.
1923 Snapshot 1.9.8 (2010-06-12)
1924 ===========================
1926    One major API changes since the last snapshot, and a whole slew of bugs
1927    fixed and inconsistencies eliminated. Far too many bugs fixed to
1928    individually identify. We need to thank Benjamin Otte for his fantastic
1929    work on the cairo-gl backend making it faster and more robust, Andrea
1930    Canciani for finding so many bugs and developing test cases for them, as
1931    well fixing them. And last but not least we must all thank Adrian Johnson for
1932    continuing to eliminate bugs and improving the PostScript and PDF backends.
1934    This snapshot represents almost 4 months of bug fixing, bringing Cairo to
1935    a point where we consider it almost ready to be a candidate for release.
1936    There are a few known bugs left to be fixed, being tracked in
1937    https://bugs.freedesktop.org/show_bug.cgi?id=24384, so please give Cairo a
1938    whirl and report any regressions. The plan is to release a new snapshot
1939    every other week leading to a 1.10 release with a target date of
1940    2010-08-16.
1942 API additions
1943 -------------
1944   CAIRO_FORMAT_RGB16_565
1946     16 bit devices still remain popular, and so with great demand,
1947     CAIRO_FORMAT_RGB16_565 has been restored enabling applications to create
1948     and use 16 bit images as sources and render targets.
1950   cairo_surface_create_for_rectangle()
1952     It is common practice to cut an image up into many smaller pieces and use
1953     each of those as a source - a technique called texture atlasing.
1954     cairo_surface_create_for_rectangle() extends Cairo to directly support use
1955     of these subregions of another cairo_surface_t both as a source and as a
1956     render target.
1958   cairo_region_create()
1959   cairo_region_create_rectangle()
1960   cairo_region_create_rectangles()
1961   cairo_region_copy()
1962   cairo_region_reference()
1963   cairo_region_destroy()
1964   cairo_region_equal()
1965   cairo_region_status()
1966   cairo_region_get_extents()
1967   cairo_region_num_rectangles()
1968   cairo_region_get_rectangle()
1969   cairo_region_is_empty()
1970   cairo_region_contains_rectangle()
1971   cairo_region_contains_point()
1972   cairo_region_translate()
1973   cairo_region_subtract()
1974   cairo_region_subtract_rectangle()
1975   cairo_region_intersect()
1976   cairo_region_intersect_rectangle()
1977   cairo_region_union()
1978   cairo_region_union_rectangle()
1980     The Cairo region API was actually added a couple of snapshots ago, but we
1981     forgot to mention it at the time. A simple API for the handling of
1982     rectangular pixel-aligned regions by Soeren Sandmann.
1985 Backend-specific improvements
1986 -----------------------------
1987 cairo-gl
1989   Benjamin Otte made more than 200 commits in which he refactored the cairo-gl
1990   backend, reducing a lot of code duplication and enabled him to begin working
1991   on improving performance by reducing state changes and associated overhead.
1993 cairo-xlib
1995   Access to the underlying connection to the Display is now thread-safe
1996   enabling cairo-xlib to be used in a multi-threaded application without fear
1997   of random corruption. Thanks Benjamin Otte!
1999   cairo-xlib will now attempt to use PolyModeImprecise when compositing
2000   trapezoids (i.e. a fill or a stroke operation with a non-trivial path) which
2001   should allow hardware drivers more scope for accelerating the operation at
2002   the cost of potentially incurring minute rendering errors. The mode can be
2003   forced back to PolyModePrecise by setting the antialias parameter to
2004   CAIRO_ANTIALIAS_SUBPIXEL.
2006 cairo-svg
2008   A notable improvement was contributed by Alexander Shulgin to enable SVG to
2009   reference external image through the use an extended MIME data type.
2011 Snapshot 1.9.6 (2010-02-19)
2012 ===========================
2013 API additions
2014 -------------
2015     Add cairo_device_t
2017     The device is a generic method for accessing the underlying interface
2018     with the native graphics subsystem, typically the X connection or
2019     perhaps the GL context. By exposing a cairo_device_t on a surface and
2020     its various methods we enable finer control over interoperability with
2021     external interactions of the device by applications. The use case in
2022     mind is, for example, a multi-threaded gstreamer which needs to serialise
2023     its own direct access to the device along with Cairo's across many
2024     threads.
2026     Secondly, the cairo_device_t is a unifying API for the mismash of
2027     backend specific methods for controlling creation of surfaces with
2028     explicit devices and a convenient hook for debugging and introspection.
2030     The principal components of the API are the memory management of:
2032       cairo_device_reference(),
2033       cairo_device_finish() and
2034       cairo_device_destroy();
2036     along with a pair of routines for serialising interaction:
2038       cairo_device_acquire() and
2039       cairo_device_release()
2041     and a method to flush any outstanding accesses:
2043       cairo_device_flush().
2045     The device for a particular surface may be retrieved using:
2047       cairo_surface_get_device().
2049     The device returned is owned by the surface.
2051 API changes (to API new in the cairo 1.9.x series)
2052 --------------------------------------------------
2053   cairo_recording_surface_create()
2054   cairo_recording_surface_ink_extents()
2056     These are the replacement names for the functions previously named
2057     cairo_meta_surface_create and cairo_meta_surface_ink_extents.
2059   cairo_surface_set_mime_data
2061     This interface is now changed such that the MIME data will be
2062     detached if the surface is modified at all. This guarantees that
2063     the MIME data will not become out of synch due to surface
2064     modifications, and also means that for the MIME data to be useful,
2065     it must be set after all modifications to the surface are
2066     complete.
2068 API removal (of experiment API)
2069 -------------------------------
2070   The cairo-glitz backend is removed entirely, (in favor of the new
2071   cairo-gl backend). See below for more on cairo-gl.
2073 Generic fixes
2074 -------------
2076   Many improvements for drawing of dashed strokes
2078         Fix incorrect handling of negative offset
2079         Faster computation of first dash (avoids near-infinite looping)
2080         Approximate extremely fine dash patterns with appropriate alpha value
2082   Optimize spans-based renderers for repeated rows, (such as in a rounded rectangle)
2084 Backend-specific improvements
2085 -----------------------------
2086 cairo-drm
2088   This is a new, direct-rendering backend that supports Intel graphics
2089   chipsets in the i915 and i965 families. It's still experimental and
2090   will likely remain that way for a while. It's already got extremely
2091   good performance on the hardware it supports, so if nothing else
2092   provides a working proof and performance target for the cairo-gl
2093   work for Intel graphics.
2095 cairo-gl
2097   Start using GLSL to accelerate many operations. Many thanks to Eric
2098   Anholt and T. Zachary Laine for this work. For the first time, we
2099   have what looks like what will be a very compelling OpenGL-based
2100   backend for cairo (in terms of both quality and performance).
2102   See this writeup from Eric for more details on recent progress of
2103   cairo-gl (which he presented at FOSDEM 2010):
2105         http://anholt.livejournal.com/42146.html
2107 cairo-image
2109   The image backend is made dramatically faster (3-5 times faster for
2110   benchmarks consisting primarily of glyph rendering).
2112 cairo-quartz fixes:
2114   Many fixes from Robert O'Callahan and Andrea Canciani including:
2116         Fixed gradient pattern painting
2117         Improved A8 image handling
2118         Fixes for "unbounded" and other compositing operators
2120 cairo-pdf fixes:
2122   Improvements to embedding of JPEG and JPEG2000 data.
2124 cairo-ps fixes:
2126   Fix printing of rotated user fonts.
2128 Snapshot 1.9.4 (2009-10-15)
2129 ===========================
2130 API additions:
2132   cairo_meta_surface_create()
2133   cairo_meta_surface_ink_extents()
2135     Finally exporting the internal meta-surface so that applications
2136     have a method to record and replay a sequence of drawing commands.
2138   cairo_in_clip()
2140     Determines whether a given point is inside the current clip.
2141     ??? Should this be called cairo_in_paint() instead? in-clip is the test
2142     that is performed, but in-paint would be similar to in-fill and in-stroke.
2144 New utilities:
2146   cairo-test-trace
2148     A companion to cairo-perf-trace, this utility replays a trace against
2149     multiple targets in parallel and looks for differences in the output,
2150     and then records any drawing commands that cause a failure.
2151     Future plans:
2152       Further minimisation of the fail trace using "delta debugging".
2153       More control over test/reference targets.
2155 Backend improvements:
2157   xlib
2159      Server-side gradients. The theory is that we can offload computation
2160      of gradients to the GPU and avoid pushing large images over the
2161      connection. Even if the driver has to fallback and use pixman to render
2162      a temporary source, it should be able to do so in a more efficient manner
2163      than Cairo itself. However, cairo-perf suggests otherwise:
2165      On tiny, Celeron/i915:
2167       before: firefox-20090601 211.585
2168        after: firefox-20090601 270.939
2170      and on tiger, CoreDuo/nvidia:
2172       before: firefox-20090601 70.143
2173        after: firefox-20090601 87.326
2175      In particular, looking at tiny:
2177      xlib-rgba paint-with-alpha_linear-rgba_over-512   47.11 (47.16 0.05%) -> 123.42 (123.72 0.13%):  2.62x slowdown
2178      █▋
2179      xlib-rgba paint-with-alpha_linear3-rgba_over-512   47.27 (47.32 0.04%) -> 123.78 (124.04 0.13%):  2.62x slowdown
2180      █▋
2183 New experimental backends:
2185    QT
2187    OpenVG - The initial work was done by Øyvind Kolås, and made ready for
2188             inclusion by Pierre Tardy.
2190    OpenGL - An advanced OpenGL compositor. The aim is to write a integrate
2191             directed rendering using OpenGL at a high-level into Cairo. In
2192             contrast to the previous attempt using Glitz which tried to
2193             implement the RENDER protocol on top of OpenGL, using the
2194             high-level interface should permit greater flexibility and
2195             more offloading onto the GPU.
2196             The initial work on the backend was performed by Eric Anholt.
2198 Long standing bugs fixed:
2200   Self-intersecting strokes.
2202     A long standing bug where the coverage from overlapping semi-opaque
2203     strokes (including neighbouring edges) was simply summed in lieu of
2204     a costly global calculation has been fixed (by performing the costly
2205     global calculation!) In order to mitigate the extra cost, the
2206     tessellator has been overhauled and tune, which handles the fallback
2207     for when we are unable to use the new span rasteriser on the stroke
2208     (e.g. when using the current RENDER protocol). The large number of
2209     pixel artifacts that implementing self-intersection elimination
2210     removes is ample justification for the potential performance
2211     regression. If you unfortunately do suffer a substantial performance
2212     regression in your application, please consider obtaining a
2213     cairo-trace and submitting it to us for analysis and inclusion into
2214     our performance suite.
2216 Special thanks:
2218    To the AuroraUX team for providing access to one of their OpenSolaris
2219    machines for cairo and pixman development.  http://www.auroraux.org/
2221 Snapshot 1.9.2 (2009-06-12)
2222 ===========================
2223 API additions:
2225   cairo_surface_set_mime_data()
2226   cairo_surface_get_mime_data()
2228     Should this take unsigned int, unsigned long or size_t for the length
2229     parameter? (Some datasets may be >4GiB in size.)
2231     Associate an alternate, compressed, representation for a surface.
2232     Currently:
2233      "image/jp2" (JPEG2000) is understood by PDF >= 1.5
2234      "image/jpeg" is understood by PDF,PS,SVG,win32-printing.
2235      "image/png" is understood by SVG.
2237   cairo_pdf_version_t
2238   cairo_pdf_surface_restrict_to_version()
2239   cairo_pdf_get_versions()
2240   cairo_pdf_version_to_string()
2242     Similar to restrict to version and level found in SVG and PS,
2243     these limit the features used in the output to comply with the PDF
2244     specification for that version.
2246   CAIRO_STATUS_INVALID_SIZE
2247     Indicates that the request surface size is not supported by the
2248     backend.  This generally indicates that the request is too large.
2250   CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED
2251     Indicates that a required callback for a user-font was not implemented.
2253   CAIRO_STATUS_LAST_STATUS
2254     This is a special value to indicate the number of status values enumerated
2255     at compile time. (This may differ to the number known at run-time.)
2257   The built-in twin font is now called "@cairo:" and supports a limited set
2258   of options like "@cairo:mono". Where are these specified?
2260   cairo_in_fill() now uses HTML Canvas semantics, all edges are inside.
2262 New experimental backends:
2264    CairoScript
2266 New utility:
2268   cairo-trace and cairo-perf-trace
2270     cairo-trace generates a human-readable, replayable, compact(-ish!)
2271     representation of the sequences of drawing commands made by an
2272     application.
2274     Under the util/cairo-script directory is a library to replay traces.
2276     perf/cairo-perf-trace replays traces against multiple backends
2277     and makes useful benchmark reports. This is integrated with
2278     'make perf'. You may collect your own traces or take advantage
2279     of traces collected by the community:
2281       git://git.cairographics.org/git/cairo-traces
2283     (Put this into perf/cairo-traces to run these as part of "make perf".)
2285     There is additional WIP in building a debugging tool for cairo applications
2286     based on CairoScript (currently very preliminary, mostly serves to show
2287     that GtkSourceView is too slow) :
2289       people.freedesktop.org:~ickle/sphinx
2291 Test suite overhaul:
2293   The test suite is undergoing an overhaul, primarily to improve its speed
2294   and utility. (Expect more changes in the near future to improve XFAIL
2295   handling.)
2297 Optimisations:
2298   polygon rasterisation! Joonas implemented the Tor polygon scan converter,
2299   on typical geometry is about 30% faster for the image backend.
2301   Bovine Polaroids! For those not in on the joke, this is the long
2302   awaited "copy-on-write snapshot" or "COW snapshot" support. The
2303   user-visible feature is that including the same image multiple times
2304   into a PDF file should result in only a single instance of that
2305   image in the final output. This is unlike previous versions of cairo
2306   which would generate very large PDF files with multiple copies of
2307   the same image. Adrian says that the PDF is not quite working as
2308   well as it should yet, so we hope for further improvements before
2309   cairo 1.10.
2311 Bug fixes:
2313   EXTEND_PAD.
2315   Better handling of large scale-factors on image patterns.
2317   Emit /Interpolate for PS,PDF images.
2319   Global glyph cache - cap on the total number of inactive glyphs,
2320   should prove fairer for fonts with larger glyph sets.
2322   Compilation without fontconfig
2324   Improved handling of low-bitdepth sources (e.g. copying the contents
2325   of 16-bit xserver windows)
2327 Regressions:
2329   cairo_traps_extract_region >10x slower. Fix pending.
2331 Still to come:
2333   Region tracking API (ssp) for damage tracking, hit testing etc
2334   mime-surface
2336   An expiremental OpenGL backend?
2338   Tweaks to tessellator, allocations of patterns, delayed
2339   initialisation of the xlib backend (reduce the cairo overhead of
2340   render_bench by ~80%).
2343 Release 1.8.8 (2009-06-16 Chris Wilson <chris@chris-wilson.co.uk>)
2344 ==================================================================
2345 The cairo community is pleased to announce the 1.8.8 release of the
2346 cairo graphics library. This is the fourth update to cairo's stable
2347 1.8 series and contains a small number of bug fixes (in particular a
2348 few corrections to the documentation and a few fixes in the FreeType font
2349 backend). This is being released just over six months after cairo 1.8.6.
2351 We recommend that everyone using cairo upgrade to 1.8.8.
2353 -Chris
2355 Build fixes
2356 -----------
2357 There were reports of incompatibilities with the autotools bundled in with
2358 the 1.8.6 tarball.  This release has been built with automake-1.10.2 and
2359 autoconf-2.63.
2361 The configure check for FreeType has been improved:
2363    typo in check for version of freetype in configure script
2364    https://bugs.freedesktop.org/show_bug.cgi?id=19283
2366 Compilation on 64-bit MacOS/X fixes:
2368   Cannot build cairo_quartz_font_face_create_for_atsu_font_id on 64-bit Mac OS X
2369   https://bugs.freedesktop.org/show_bug.cgi?id=15702
2371 Bug fixes
2372 ---------
2373 Uninitialised status return within _cairo_clip_intersect_mask(). This caused
2374 random crashes and general mayhem as an error could be generated causing all
2375 rendering to the context to stop.
2377 Avoid transforming nearly-degenerate matrices into degenerate matrices:
2379    Painting stops in this case, using -moz-transform: scale, rotate and video
2380    https://bugzilla.mozilla.org/show_bug.cgi?id=467423
2382 A few FreeType font handling bugs were fixed:
2384    Rendering with PANGO_GRAVITY_EAST leads to different results with image and pdf
2385    https://bugs.freedesktop.org/show_bug.cgi?id=21985
2387    Don't call FT_Done_Face() on faces we did not create
2389    zombie ft_font_face / ft_unscaled_font mutual referencing problems
2390    https://bugs.freedesktop.org/show_bug.cgi?id=21706
2392 Ensure win32 font backend sets the return value to -1 (indicating the absent
2393 glyph) if the font index lookup for the unicode character fails. And
2394 similarly fix a bug where a fatal error was raised for an invalid glyph.
2396    cairo_scaled_font_glyph_extents breaks with invalid glyph id
2397    https://bugs.freedesktop.org/show_bug.cgi?id=20255
2399 Various improvements to the documentation, reported by Truc Troung:
2401    https://bugs.freedesktop.org/show_bug.cgi?id=20095
2402    https://bugs.freedesktop.org/show_bug.cgi?id=20154
2403    https://bugs.freedesktop.org/show_bug.cgi?id=20180
2404    https://bugs.freedesktop.org/show_bug.cgi?id=20183
2405    https://bugs.freedesktop.org/show_bug.cgi?id=20182
2406    https://bugs.freedesktop.org/show_bug.cgi?id=20441
2409 Release 1.8.6 (2008-12-13 Chris Wilson <chris@chris-wilson.co.uk>)
2410 ==================================================================
2411 The cairo community is pleased to announce the 1.8.6 release of the
2412 cairo graphics library. This is the third update to cairo's stable
2413 1.8 series and contains a small number of bug fixes (in particular a
2414 few fixes for failures of cairo 1.8.4 on Quartz and PDF, and build fixes for
2415 a couple of backends). This is being released just under a month after
2416 cairo 1.8.4.
2418 We recommend that everyone using cairo upgrade to 1.8.6.
2420 -Chris
2422 Build fixes
2423 -----------
2424 Fix build of DirectFB backend with debugging enabled:
2426    Bug in _cairo_directfb_surface_release_source_image function
2427    https://bugs.freedesktop.org/show_bug.cgi?id=18322
2429 Fix build on OS/2.
2431 Bug fixes
2432 ---------
2433 Workaround a mis-compilation of cairo_matrix_invert() that generated invalid
2434 matrices and triggered assertion failures later. The issue was reported by
2435 Peter Hercek.
2437 Invalid computation of the modulus:
2439    https://bugzilla.mozilla.org/show_bug.cgi?id=466258
2441 Invalid referencing of patterns in the Quartz backend:
2443    Failed assertion `CAIRO_REFERENCE_COUNT_HAS_REFERENCE
2444    (&pattern->ref_count)' when using cairo quartz backend
2445    https://bugs.freedesktop.org/show_bug.cgi?id=18632
2447 Invalid references to glyphs after early culling, causing segmentation faults
2448 in the PDF backend:
2450    https://lists.cairographics.org/archives/cairo/2008-December/015976.html
2452 Check for XRender in the XCB backend, or else we may attempt an invalid memory
2453 access:
2455     XCB backend fails with missing render.
2456     https://bugs.freedesktop.org/show_bug.cgi?id=18588
2458 Release 1.8.4 (2008-11-14 Carl Worth <cworth@cworth.org>)
2459 =========================================================
2460 The cairo community is pleased to announce the 1.8.4 release of the
2461 cairo graphics library. This is the second update to cairo's stable
2462 1.8 series and contains a small number of bug fixes, (in particular a
2463 few fixes for build failures of cairo 1.8.2 on various systems). This
2464 is being released just over two weeks after cairo 1.8.2.
2466 We recommend that everyone using cairo upgrade to 1.8.4.
2468 -Carl
2470 Build fixes
2471 -----------
2472 Fix build with older XRender that doesn't define RepeatNone:
2474    Build of xlib backend fails against old XRender (RepeatNone undeclared)
2475    https://bugs.freedesktop.org/show_bug.cgi?id=18385
2477 Fix build with bash version <= 3.0:
2479    doltlibtool broken on linux with bash 3.00.0
2480    https://bugs.freedesktop.org/show_bug.cgi?id=18363
2482 Bug fixes
2483 ---------
2484 Avoid triggering a bug in X.org server 6.9 resulting in a hung machine
2485 requiring a reboot:
2487     https://bugs.freedesktop.org/show_bug.cgi?id=15628#c2
2489 Fix display of user fonts as exercised by proposed support for type3
2490 fonts in poppler (unsigned promotion fixes):
2492     Use cairo user-font for Type 3 fonts
2493     https://lists.freedesktop.org/archives/poppler/2008-October/004181.html
2495 Avoid miscomputing size of fallback images required when rendering
2496 with CLEAR, IN, or SOURCE operator to vector surfaces, (PS, PDF, SVG,
2497 etc.).
2499 Be more tolerant of broken fonts when subsetting type1 fonts:
2501    Error handling in cairo_type1_font_subset_get_glyph_names_and_widths
2502    https://lists.cairographics.org/archives/cairo/2008-October/015569.html
2504 Fix cairo_fill_extents, cairo_stroke_extents, cairo_path_extents, to
2505 correctly allow NULL parameters as documented.
2507 Fix potential crash on emitting a type3 glyph after having drawn text
2508 paths from the same font, (for example with cairo_text_path).
2510 Release 1.8.2 (2008-10-29 Carl Worth <cworth@cworth.org>)
2511 =========================================================
2512 The cairo community is pleased to announce the 1.8.2 release of the
2513 cairo graphics library. This is the first update to cairo's stable 1.8
2514 series and contains a large number of bug fixes. It is being released
2515 just over one month since cairo 1.8.0.
2517 This release consists primarily of bug fixes, but there is one notable
2518 new feature, (the ability to build cairo without an external font
2519 backend), and there are a few optimizations as well. See below for
2520 details on these changes and the most important bug fixes.
2522 While many people have contributed to this release, Chris Wilson
2523 deserves particular mention. He has contributed well over twice as
2524 many changes to cairo since 1.8.0 than everyone else combined. We
2525 greatly appreciate the tremendous efforts of Chris and all cairo
2526 contributors.
2528 We recommend everyone upgrade to cairo 1.8.2 and hope that everyone
2529 will have lots of fun with cairo!
2531 -Carl
2533 New feature
2534 -----------
2535 It is now possible to build cairo without any font backend, (such as
2536 freetype, win32 or quartz). This is most useful when the application
2537 provides custom font rendering through the user-font API. But in the
2538 case where no external font backend is available, and no user-font is
2539 provided, cairo will render with a failsafe font, (a stroked font
2540 covering visible ASCII character). (Behdad Esfahbod)
2542 Optimizations
2543 -------------
2544 Dramatically speed up compilation with dolt (removes much of the
2545 libtool overhead) (Behdad Esfahbod with thanks to Josh Triplett).
2547 Several minor optimizations to tessellator (special-cased comparisons,
2548 faster insert for skiplist, etc.) (Chris Wilson).
2550 Optimize away fractional translation component when doing
2551 EXTEND_NEAREST filtering, (for better performance).
2553 General bug fixes
2554 -----------------
2555 Allow cloning sub-regions of similar surfaces to fix this bug
2556 (Chris Wilson):
2558         Crafted gif file will crash firefox
2559         [XError: 'BadAlloc (insufficient resources for operation)']
2560         https://bugzilla.mozilla.org/show_bug.cgi?id=424333
2562 Fix some matrix confusion to fix this regression (Chris Wilson):
2564         Translucent star exports in a wrong way to PDF
2565         https://bugs.launchpad.net/inkscape/+bug/234546
2567 Fix some long-standing bugs with respect to properly computing the
2568 extents of transformed, filtered surfaces (Owen Taylor, Carl Worth,
2569 and Chris Wilson):
2571         Bad clipping with EXTEND_NONE
2572         https://bugs.freedesktop.org/show_bug.cgi?id=15349
2574         Improve filtering handling in cairo-pattern.c
2575         https://bugs.freedesktop.org/show_bug.cgi?id=15367
2577         Many thanks to Chris Wilson for digging out and cleaning up
2578         these fixes.
2580 Fix compilation on Solaris 10 (Chris Wilson):
2582         Cairo requires -DREENTRANT (along with  -D_POSIX_THREAD_SEMANTICS)
2583         to compile on Solaris 10 with pthreads
2584         https://bugs.freedesktop.org/show_bug.cgi?id=18010
2586 Fix very old bug causing dashes to be rendered at the wrong length in
2587 fallback images (Adrian Johnson)
2589         Dashed strokes too long in fallback images
2590         https://bugs.freedesktop.org/show_bug.cgi?id=9189
2592 Fix broken dashing when a dashed path starts outside the clip region
2593 (Chris Wilson).
2595 Avoid range overflow when computing large patterns (Benjamin Otte and
2596 Chris Wilson).
2598 Avoid crashing due to an invalid font with an incorrect entry in its
2599 CMAP table (Adrian Johnson).
2601 Fix bugs in computing maximum size of text requests that can be sent
2602 with the Render extension, (avoiding potential crashes when rendering
2603 large amounts of text) (Behdad Esfahbod and Chris Wilson).
2605 Fix rendering of operators unbounded by the mask (Chris Wilson).
2607 Fix compilation on systems without compiler support for a native
2608 64-bit type (Chris Wilson).
2610 Fix several cases of missing error-status propagation. (Chris Wilson,
2611 doing the work he seems to never tire of).
2613 Fix several locking issues found with the lockdep valgrind skin (Chris
2614 Wilson).
2616 Backend-specific bug fixes
2617 --------------------------
2618 xlib: Avoid crash due to attempting XRender calls on pixmaps with
2619 formats not supported by the Render extension (Chris Wilson):
2621         XRender crashes due to NULL pointer from Cairo on SGI O2
2622         https://bugs.freedesktop.org/show_bug.cgi?id=11734
2624 xlib: Add support for XImages with depth of 4, 20, 24, or 28 bits
2625 (Chris Wilson):
2627         cairo doesn't support 24 bits per pixel mode on X11
2628         https://bugs.freedesktop.org/show_bug.cgi?id=9102
2630 xlib: Avoid mistakenly considering two surfaces as similar just
2631 because their depths match (while their Render formats do not) (Karl
2632 Tomlinson).
2634 ps: Fix slight mis-scaling of bitmapped fonts (Adrian Johnson)
2636 svg: Correctly emit comp-op for paint, mask, and show_glyphs
2637 operations (Emmanuel Pacaud).
2639 svg: Use finer-grained fallbacks for SVG 1.2 (as PS and PDF backends
2640 have been doing since 1.6.0) (Chris Wilson).
2642 win32: Fallback to DIB if DDB create fails for
2643 cairo_surface_create_similar (Vladimir Vukicevic).
2645 win32: Fix compatibility with Windows Mobile (Vladimir Vukicevic).
2647 win32: Fix static builds to not do __declspec(dllimport) on public
2648 functions. This requires the user to set a CAIRO_WIN32_STATIC_BUILD
2649 environment variable when compiling (Behdad Esfahbod).
2651 Release 1.8.0 (2008-09-25 Carl Worth <cworth@cworth.org>)
2652 =========================================================
2653 The cairo community is happy (and relieved) to announce the 1.8.0
2654 release of the cairo graphics library. This is a major update to
2655 cairo, with new features and enhanced functionality which maintains
2656 compatibility for applications written using any previous major cairo
2657 release, (1.6, 1.4, 1.2, or 1.0). We recommend that anybody using a
2658 previous version of cairo upgrade to cairo 1.8.0.
2660 The dominant theme of this release is improvements to cairo's ability
2661 to handle text. The highlights include a new "user fonts" feature as
2662 well as a new cairo_show_text_glyphs API which allows glyphs to be
2663 embedded in PDF output along with their original text, (for searching,
2664 selection, and copy-and-paste). Another major feature is a revamp of
2665 cairo's build system making it much easier to build cairo on various
2666 platforms.
2668 See below for more details.
2670 User fonts
2671 ----------
2672 This new API allows the user of cairo API to provide drawings for
2673 glyphs in a font. A common use for this is implementing fonts in
2674 non-standard formats, like SVG fonts and Flash fonts. This API can
2675 also be used by applications to provide custom glyph shapes for fonts
2676 while still getting access to cairo's glyph caches. See
2677 test/user-font.c and test/user-font-proxy.c for usage examples. This
2678 is based on early work by Kristian Høgsberg. Thanks Kristian!
2680 This new API consists of the following functions (and corresponding
2681 _get functions):
2683         cairo_user_font_face_create
2685         cairo_user_font_face_set_init_func
2686         cairo_user_font_face_set_render_glyph_func
2687         cairo_user_font_face_set_text_to_glyphs_func
2688         cairo_user_font_face_set_unicode_to_glyph_func
2690 An additional, new API is
2692         cairo_scaled_font_text_to_glyphs
2694 We were previously reluctant to provide this function as
2695 text-to-glyphs support in cairo was limited to "toy" font
2696 functionality, not really interesting for real-world text
2697 processing. However, with user fonts landing, this API is needed to
2698 expose full access to how user fonts convert text to glyphs. This is
2699 expected to be used by text toolkits like Pango, as well as "proxy"
2700 user-font implementations.
2702 cairo_show_text_glyphs
2703 ----------------------
2704 This new API allows the caller of cairo to provide text data
2705 corresponding to glyphs being drawn. The PDF backend implements this
2706 new API so that complex text can be copied out of cairo's PDF output
2707 correctly and reliably, (assuming the user of cairo calls
2708 cairo_show_text_glyphs). The cairo_show_text_glyphs API is definitely
2709 the most daunting API to debut in cairo. It is anticipated that pango
2710 (and similar high-level text libraries) will be the primary users of
2711 this API. In fact, pango 1.22 already uses cairo_show_text_glyphs.
2712 Behdad was the architect and implementor of this effort. Thanks,
2713 Behdad!
2715 The cairo_show_text_glyphs API includes the following new functions:
2717         cairo_show_text_glyphs
2719         cairo_glyph_allocate
2720         cairo_glyph_free
2722         cairo_text_cluster_allocate
2723         cairo_text_cluster_free
2725         cairo_surface_has_show_text_glyphs
2727 Build system revamp
2728 -------------------
2729 The primary goal of the revamp is to make the build system less
2730 fragile, (particularly for non-Linux platforms). For example, now
2731 people building on win32 will no longer need to maintain a
2732 platform-specific list of files to be built. See the new README.win32
2733 for details. Also, the .so file will now be installed with a different
2734 naming scheme, (for example, 1.7.6 will install with a .10800
2735 suffix). Many thanks to Behdad and his small army of helpers!
2737 Assorted API additions
2738 ----------------------
2739 For API completeness, several missing "getter" functions were added:
2741         cairo_scaled_font_get_scale_matrix
2743         cairo_surface_get_fallback_resolution
2745         cairo_toy_font_face_create
2746         cairo_toy_font_face_get_family
2747         cairo_toy_font_face_get_slant
2748         cairo_toy_font_face_get_weight
2750 The new cairo_toy_font_face functions provide access to functionality
2751 and settings provided by cairo_select_font_face(). Thanks Behdad!
2753 cairo-ps/cairo-pdf: More efficient output
2754 -----------------------------------------
2755 Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF
2756 backends, as well making them generate much more compact output by
2757 avoiding things like re-emitting the color or linestyle on every
2758 drawing operation. Thanks Adrian!
2760 cairo-xlib: dithering
2761 ---------------------
2762 Dithering: Cairo now does simple dithering when rendering to legacy X
2763 servers. This is most visible with 8-bit visuals. Thanks Behdad!
2765 cairo-xlib: Avoid rendering glyphs out of surface bounds
2766 --------------------------------------------------------
2767 This seemingly harmless optimization exposed a bug in OpenOffice.org 3
2768 versions where OO.o was passing bogus surface extents to cairo,
2769 resulting in no text rendered in OO.o. Please contact your
2770 distribution's OO.o maintainers if you see this bug and point them to
2771 the following URL:
2773  https://bugs.freedesktop.org/show_bug.cgi?id=16209
2775 cairo-xlib: Improved performance with X server without Render
2776 -------------------------------------------------------------
2777 Cairo now performs better on remote X servers that lack the Render
2778 extension by being smarter about using X core protocol facilities
2779 instead of falling back to doing all rendering on the client side.
2781 cairo-ft: respecting FC_FT_FACE
2782 -------------------------------
2783 Previously it was impossible to instruct cairo to do emboldening on a
2784 font face object created from an FT_Face. Cairo now respects and uses
2785 the FC_FT_FACE fontconfig pattern element, so emboldening can be
2786 achieved by using cairo_ft_font_face_create_for_pattern() and a
2787 carefully crafted pattern using FC_FT_FACE and FC_EMBOLDEN. Thanks
2788 Behdad!
2790 cairo-directfb: backend improvements
2791 ------------------------------------
2792 The directfb backend, though still unsupported, has seen a good deal
2793 of improvements. Thanks Vlad!
2795 Bug fixing and optimizations
2796 ----------------------------
2797 xlib: Faster bookkeeping (Karl Tomlinson)
2798         https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5
2800 PS: Fix gradients with non-constant alpha (Chris Wilson)
2802 Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod)
2803         https://bugs.freedesktop.org/show_bug.cgi?id=16819
2805 Countless other bugs have been fixed and optimizations made, many of
2806 them thanks to Chris Wilson. Thanks Chris and others!
2808 Note also that the code that had been in cairo 1.7.x calling into
2809 freetype's optional lcd_filter function was removed from cairo before
2810 the 1.8.0 release. We do expect this code to come back in some form in
2811 the future.
2813 Snapshot 1.7.6 (2008-09-17 Carl Worth <cworth@cworth.org>)
2814 ==========================================================
2815 The cairo community is happy to announce the 1.7.6 snapshot of the
2816 cairo graphics library. This is a "release candidate" for the upcoming
2817 1.8.0 release, so we will greatly appreciate any reports of problems
2818 in this release, and no major changes are currently planned before
2819 1.8.
2821 Notable changes in 1.7.6
2822 ------------------------
2823 The largest number of changes since 1.7.4 did not change the
2824 implementation of cairo itself, but instead revamped cairo's build
2825 system. The primary goal of the revamp is to make the build system
2826 less fragile, (particularly for non-Linux platforms). For example, now
2827 people building on win32 will no longer need to maintain a
2828 platform-specific list of files to be built. Also, the .so file will
2829 now be installed with a different naming scheme, (for example, 1.7.6
2830 will install with a .10706 suffix). Much thanks, Behdad!
2832 And, as usual, Chris Wilson has made another large round of robustness
2833 improvements, (eliminating dead code, fixing propagation of error
2834 status values, test suite improvements, etc. etc.). Thanks as always,
2835 Chris!
2837 API changes since 1.7.4
2838 -----------------------
2839 There have been a few changes of API that was new during the 1.7
2840 series:
2842 * Remove cairo_font_options_set_lcd_filter
2843    and cairo_font_options_get_lcd_filter
2845   Motivation: At the Cairo Summit, this API was determined to be too
2846         specific to the freetype font backend to be in the general
2847         API. A similar API with a cairo_ft prefix might be introduced
2848         in the future. Note that cairo will still respect the
2849         corresponding fontconfig settings for these options.
2851 * Replace cairo_has_show_glyphs
2852      with cairo_surface_has_show_glyphs
2854   Motivation: This really is a surface-specific interface, and the
2855         convenience function on the cairo_t is not obviously
2856         necessary. An application can easily call:
2858         cairo_surface_has_show_glyphs (cairo_get_target (cr));
2860         as needed.
2862 * Add cairo_text_cluster_flags_t
2863    to cairo_show_text_glyphs
2864       cairo_scaled_font_text_to_glyphs
2865       cairo_user_scaled_font_text_to_glyphs_func_t
2867   Motivation: This flag, (and specifically the
2868         CAIRO_TEXT_CLUSTER_FLAG_BACKWARD value), replaces the
2869         cairo_bool_t backward argument in each of the above
2870         interfaces. This leads to more readable user code, and also
2871         allows future extensibility.
2873 As always, there are no changes to any API from any major cairo
2874 release, (1.0.x, 1.2.x, 1.4.x, 1.6.x). Cairo maintains the same
2875 compatibility promise it always has.
2877 Bug fixes since 1.7.4
2878 ---------------------
2879 xlib: Faster bookkeeping (Karl Tomlinson)
2880         https://bugzilla.mozilla.org/show_bug.cgi?id=453199#c5
2882 PS: Fix gradients with non-constant alpha (Chris Wilson)
2884 Fix deadlock in user-font code (Richard Hughes and Behdad Esfahbod)
2885         https://bugs.freedesktop.org/show_bug.cgi?id=16819
2887 Several other minor fixes.
2889 Snapshot 1.7.4 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>)
2890 ===============================================================
2891 The cairo community is embarrassed to announce availability of the 1.7.4
2892 snapshot of the cairo graphics library.  This is a followup release to the
2893 1.7.2 snapshot to ship a tarball that can actually be built.  The only
2894 change since 1.7.4 is including the missing header file
2895 cairo-user-font-private.h in the distribution.
2897 Snapshot 1.7.2 (2008-08-11 Behdad Esfahbod <behdad@behdad.org>)
2898 ===============================================================
2899 The cairo community is finally ready to announce availability of the 1.7.2
2900 snapshot of the cairo graphics library.  This is embarrassingly the first
2901 snapshot in the 1.7 unstable series of cairo, leading to the eventual release
2902 of cairo 1.8, currently planned for late September.
2904 This snapshot comes four months after the 1.6.4 release.  We have done a
2905 really bad job on getting development snapshots out this cycle, but
2906 hopefully all the API changes for 1.8 are now finished and the remaining
2907 weeks will be spent on bug-fixing.  There is more than 400 commits worth
2908 of changes in this snapshot, and those can use some testing.  Read on!
2910 Text, text, and more text!
2911 --------------------------
2912 The dominant theme of this release, and 1.8 in general, is improvements
2913 around cairo text API.  Here is a high-level list of changes with text
2914 handling:
2916 User fonts
2917 ----------
2918 This is new API allowing the user of cairo API to provide drawings for glyphs
2919 in a font.  This is most useful in implementing fonts in non-standard formats,
2920 like SVG fonts and Flash fonts, but can also be used by games and other
2921 applications to draw "funky" fonts.  See test/user-font.c and
2922 test/user-font-proxy.c for usage examples.  This is based on early work by
2923 Kristian Høgsberg.  Thanks Kristian!
2925 show_text_glyphs
2926 ----------------
2927 This new API allows the caller of cairo to mark text glyphs with their
2928 original text.  The PDF backend implements this new API and latest Pango
2929 master uses it.  The result is (when bugs are fixed) that complex text can be
2930 copied out of pangocairo's PDF output correctly and reliably.  There are bugs
2931 to fix though.  A few poppler bugs, and some more in cairo and pango.
2933 To test show_text_glyph, just grab pango master and this cairo snapshot and
2934 print text in gedit.  Open in acroread or evince, select all, copy, paste
2935 in gedit and compare.  The Arabic text with diacritic marks is particularly
2936 showing bad.  Try with pango/pango-view/HELLO.txt if you are brave
2937 enough.  The Indic text is showing improvements, but is still coming out
2938 buggy.
2940 LCD subpixel filtering using FreeType
2941 -------------------------------------
2942 FreeType 2.3.5 added support for various LCD subpixel filtering, and
2943 fontconfig 2.6.0 added support for configuring LCD filter on a font by font
2944 basis.  Cairo now relies on FreeType and fontconfig for subpixel filtering.
2945 This work is based on David Turner's original patch to cairo, maintained
2946 and tested by Sylvain Pasche and others.  Thanks all!
2948 Toy font face constructor and getter
2949 ------------------------------------
2950 Mostly for API completion, but also useful for higher level (like Pango) to
2951 hook into what the user has set using cairo_select_font_face(), making that
2952 toy API a bit more useful.
2954 FreeType: respecting FC_FT_FACE
2955 -------------------------------
2956 Previously it was impossible to instruct cairo to do emboldening on a font
2957 face object created from an FT_Face.  Cairo now respects and uses the
2958 FC_FT_FACE fontconfig pattern element, so emboldening can be achieved by
2959 using cairo_ft_font_face_create_for_pattern() and a carefully crafted pattern
2960 using FC_FT_FACE and FC_EMBOLDEN.
2963 PS/PDF: More efficient output
2964 -----------------------------
2965 Adrian Johnson has been busy fixing all kinds of bugs in PS and PDF
2966 backends, as well making them generate much more compact output by avoiding
2967 things like re-emitting the color or linestyle on every drawing operation.
2968 Thanks Adrian!
2971 Xlib: Dithering
2972 ---------------
2973 Cairo now does simple dithering when rendering to legacy X servers.  This is
2974 mostly visible with 8-bit visuals.
2976 Xlib: Avoid rendering glyphs out of surface bounds
2977 --------------------------------------------------
2978 This seemingly harmless change manifested a bug with OpenOffice.org 3 versions
2979 where OO.o was passing bogus surface extents to cairo, resulting in no text
2980 rendered in OO.o.  Please contact your distro's OO.o maintainers if you see
2981 this bug and point them to the following URL:
2983   https://bugs.freedesktop.org/show_bug.cgi?id=16209
2985 Xlib: Improved performance with Xrender-less X servers
2986 ------------------------------------------------------
2987 Cairo now performs better on remote, Xrender-less X servers by being smarter
2988 about using X core protocol facilities instead of falling back to doing all
2989 rendering on the client side.
2992 Directfb: backend improvements
2993 ------------------------------
2994 The directfb backend, though still unsupported, has seen a good deal of
2995 improvements.  Thanks Vlad!
2998 Bug fixing and optimizations
2999 ----------------------------
3000 Countless bugs have been fixed and optimizations made, many of them thanks to
3001 Chris Wilson.  Thanks Chris!
3004 API additions
3005 -------------
3007 cairo_show_text_glyphs
3009   This is a new text rendering API.  Being a more advanced version of
3010   cairo_show_glyphs(), it is aimed for use by higher-level text toolkits like
3011   Pango, and enables better text extraction from output generated by backends
3012   like PDF and SVG.  The PDF backend already implements it, and the upcoming
3013   Pango release will use it.
3015   To make that API work, a bunch of other additions were made:
3017 cairo_glyph_allocate
3018 cairo_glyph_free
3019 cairo_text_cluster_t
3020 cairo_text_cluster_allocate
3021 cairo_text_cluster_free
3022 cairo_surface_has_show_text_glyphs
3025 cairo_user_font_face_create
3027   This is the "user" font face constructor, accompanied by a variety of method
3028   signatures, getters, and setters for a callback-based font backend:
3030 CAIRO_FONT_TYPE_USER
3031 cairo_user_scaled_font_init_func_t
3032 cairo_user_scaled_font_render_glyph_func_t
3033 cairo_user_scaled_font_text_to_glyphs_func_t
3034 cairo_user_scaled_font_unicode_to_glyph_func_t
3035 cairo_user_font_face_set_init_func
3036 cairo_user_font_face_set_render_glyph_func
3037 cairo_user_font_face_set_text_to_glyphs_func
3038 cairo_user_font_face_set_unicode_to_glyph_func
3039 cairo_user_font_face_get_init_func
3040 cairo_user_font_face_get_render_glyph_func
3041 cairo_user_font_face_get_text_to_glyphs_func
3042 cairo_user_font_face_get_unicode_to_glyph_func
3045 cairo_scaled_font_text_to_glyphs
3047   We were previously reluctant to provide this function as text-to-glyphs
3048   support in cairo was limited to "toy" font functionality, not really
3049   interesting for real-world text processing.  However, with user-fonts
3050   landing, this API is needed to expose full access to how user-fonts
3051   convert text to glyphs.  This is expected to be used by text toolkits like
3052   Pango, as well as "proxy" user-font implementations.
3055 cairo_lcd_filter_t
3056 cairo_font_options_set_lcd_filter
3057 cairo_font_options_get_lcd_filter
3059   These add the possibility to choose between various available LCD subpixel
3060   filters.  The available filter values are modelled after what FreeType
3061   provides.
3064 cairo_toy_font_face_create
3065 cairo_toy_font_face_get_family
3066 cairo_toy_font_face_get_slant
3067 cairo_toy_font_face_get_weight
3069   These provide access to functionality and settings provided by
3070   cairo_select_font_face().
3073 cairo_scaled_font_get_scale_matrix
3074 cairo_surface_get_fallback_resolution
3076   For API completeness.
3079 Various new values for cairo_status_t enum
3082 Known issues:
3084 - Type3 fonts generated by cairo's PDF backend may show up in poppler/Evince
3085   in a different color than expected.  This is fixed in poppler master branch.
3086   This mostly affects cairo user fonts.  The test case test/user-font.c
3087   demonstrates this.
3089 - User fonts using other fonts in their rendering are currently embedded in
3090   PDF as fallback bitmap glyphs.  This will be (hopefully) fixed before 1.8.
3091   The test case test/user-font-proxy.c demonstrates this.
3094 Release 1.6.4 (2008-04-11 Carl Worth <cworth@cworth.org>)
3095 =========================================================
3096 The cairo community is wildly embarrassed to announce the 1.6.4
3097 release of the cairo graphics library. This release reverts the xlib
3098 locking change introduced in 1.6.4, (and the application crashes that
3099 it caused).  The community would be glad to sack its current release
3100 manager and is accepting applications for someone who could do the job
3101 with more discipline.
3103 Revert 'add missing locking in cairo-xlib'
3104 ------------------------------------------
3105 This change was introduced in cairo 1.6.2, but also introduced a bug
3106 which causes many cairo-xlib applications to crash, (with a
3107 segmentation fault inside of XSetClipMask). Instead of attempting
3108 another fix for the broken fix, the change in 1.6.2 has been
3109 reverted. The original bug which the change was addressing has been
3110 present since at least cairo 1.4, so it is not expected that leaving
3111 this bug unfixed will cause any new problems for applications moving
3112 from cairo 1.4 to cairo 1.6.
3114 At this point, the code of cairo 1.6.4 differs from cairo 1.6.0 only
3115 in the fix for the PostScript-printer crashes.
3117 Tweak build to avoid linking with g++
3118 -------------------------------------
3119 Cairo 1.6.4 avoids a quirk in automake that was causing the cairo
3120 library to be linked with g++ and linked against libstdc++ even when
3121 only C source files were compiled for the library.
3123 Release 1.6.2 (2008-04-11 Carl Worth <cworth@cworth.org>)
3124 =========================================================
3125 The cairo community is pleased (but somewhat sheepish) to announce the
3126 1.6.2 release of the cairo graphics library. This is an update to
3127 yesterday's 1.6.0 release with an important fix to prevent cairo's
3128 PostScript output from crashing some printers. This release also
3129 includes a locking fix for cairo's xlib backend to improve thread
3130 safety. There are no changes beyond these two fixes.
3132 Fix for PostScript printer crash
3133 --------------------------------
3134 Adrian Johnson discovered that cairo 1.6.0 was being a bit hard on
3135 PostScript printers, by changing the font matrix very frequently. This
3136 causes some PostScript interpreters to allocate new font objects every
3137 few glyphs, eventually exhausting available resources. The fix
3138 involves leaving translational components of the font matrix as zero,
3139 so that the PostScript interpreter sees an identical font matrix
3140 repeatedly, and can more easily share internal font object resources.
3142 This fix has been tested to resolve the bugs posted here, (for both
3143 Xerox and Dell printers):
3145         Printing some PDFs from evince is crashing our Xerox printer
3146         https://bugs.freedesktop.org/show_bug.cgi?id=15348
3148         Cairo-generated postscript blocks Dell 5100cn
3149         https://bugs.freedesktop.org/show_bug.cgi?id=15445
3151 Add missing locking in cairo-xlib
3152 ---------------------------------
3153 Chris Wilson noticed that cairo 1.6.0 was manipulating an internal
3154 cache of GC object within cairo's Xlib backend without proper
3155 locking. The missing locking could cause failures for multi-threaded
3156 applications. He fixed this in 1.6.2 by adding the missing locks.
3158 Release 1.6.0 (2008-04-10 Carl Worth <cworth@cworth.org>)
3159 =========================================================
3160 The cairo community is quite pleased to announce the 1.6.0 release of
3161 the cairo graphics library. This is a major update to cairo, with new
3162 features and enhanced functionality which maintains compatibility for
3163 applications written using cairo 1.4, 1.2, or 1.0. We recommend that
3164 anybody using a previous version of cairo upgrade to cairo 1.6.0.
3166 The most significant new features in this release are dramatically
3167 improved PDF and PostScript[*] output, support for arbitrary X server
3168 visuals (including PseudoColor), a new Quartz backend, and and a new
3169 "win32 printing" backend. See below for more details on these and
3170 other new features.
3172 New dependency on external pixman library (Thanks, Søren!)
3173 ----------------------------------------------------------
3174 As of cairo 1.6, cairo now depends on the pixman library, for which
3175 the latest release can be obtained alongside cairo:
3177         https://cairographics.org/releases/pixman-0.10.0.tar.gz
3179 This library provides all software rendering for cairo, (the
3180 implementation of the image backend as well as any image fallbacks
3181 required for other backends). This is the same code that was
3182 previously included as part of cairo itself, but is now an external
3183 library so that it can be shared by both cairo and by the X server,
3184 (which is where the code originated).
3186 Improved PDF, PostScript, and SVG output (Thanks, Adrian!)
3187 ----------------------------------------------------------
3188 Users of the cairo-pdf, cairo-ps, and cairo-svg should see a dramatic
3189 improvement from cairo 1.2/1.4 to 1.6. With this release there are now
3190 almost no operations that will result in unnecessary rasterization in
3191 the PDF and PostScript. Rasterized "image fallbacks" are restricted
3192 only to minimal portions of the document where something is being
3193 drawn with cairo that is beyond the native capabilities of the
3194 document, (this is rare for PDF or SVG, but occurs when blending
3195 translucent objects for PostScript).
3197 This means that the final output will be of higher quality, and will
3198 also be much smaller, and therefore will print more quickly. The
3199 machinery for doing analysis and minimal fallbacks also benefits the
3200 win32-printing surface described below.
3202 In addition to doing less rasterization, the PostScript and PDF output
3203 also has several other improvements to make the output more efficient
3204 and more compatible with specifications.
3206 [*] Note: Just before this release, a bug has been reported that the
3207 PostScript output from cairo can crash some printers, (so far the
3208 following models have been reported as problematic Xerox Workcentre
3209 7228 or 7328 and Dell 5100cn). We will implement a workaround as soon
3210 as we can learn exactly what in cairo's output these printers object
3211 to, (and we could use help from users that have access to misbehaving
3212 printers). This bug is being tracked here:
3214         Printing some PDFs from evince is crashing our Xerox printer
3215         https://bugs.freedesktop.org/show_bug.cgi?id=15348
3217 New support for arbitrary X server visuals (Thanks, Keith and Behdad!)
3218 ----------------------------------------------------------------------
3219 As of cairo 1.6, cairo should now work with an arbitrary TrueColor or
3220 8-bit PseudoColor X server visual. Previous versions of cairo did not
3221 support these X servers and refused to draw anything. We're pleased to
3222 announce that this limitation has been lifted and people stuck with
3223 ancient display systems need no longer be stuck with ancient software
3224 just because of cairo.
3226 New, supported Quartz backend for Mac OS X (Thanks, Brian and Vladimir!)
3227 ------------------------------------------------------------------------
3228 As of cairo 1.6, the cairo-quartz backend is now marked as "supported"
3229 rather than "experimental" as in previous cairo releases. Its API now
3230 has guarantees of API stability into future cairo releases, and its
3231 output quality is comparable to other backends. There have been
3232 significant improvements to cairo-quartz since 1.4. It now uses many
3233 fewer image fallbacks, (meaning better performance), and has greatly
3234 improved text rendering.
3236 New, "win32 printing" backend (Thanks, Adrian and Vladimir!)
3237 ------------------------------------------------------------
3238 A new win32-printing surface has been added with an interface very
3239 similar to the original win32 surface, (both accept an HDC
3240 parameter). But this new surface should only be called with a printing
3241 DC, and will result in all drawing commands being stored into a
3242 meta-surface and emitted after each page is complete. This allows
3243 cairo to analyze the contents, (as it does with PDF, PostScript, and
3244 SVG backends), and to do minimal image-based fallbacks as
3245 necessary. The analysis keeps things as efficient as possible, while
3246 the presence of fallbacks, (when necessary), ensure the consistent,
3247 high-quality output expected from cairo.
3249 Robustness fixes (Thanks, Chris!)
3250 ---------------------------------
3251 There has been a tremendous number of improvements to cairo's
3252 robustness. Areas that have been improved include:
3254         * Proper reporting of errors
3256         * Responding correctly to invalid input
3258         * Avoiding integer overflows
3260         * Avoiding memory leaks on error-recovery paths
3262         * Making reference counting thread safe
3264         * Exhaustive testing of memory allocation points
3266 Other fixes (Thanks, everybody!)
3267 --------------------------------
3268 Cairo's internal fixed-point representation has been changed from
3269 16.16 to 24.8. This has a direct impact on applications as it allows
3270 much larger objects to be drawn before internal limits in cairo make
3271 the drawing not work.
3273 The CAIRO_EXTEND_PAD mode is now fully supported by surface
3274 patterns. This mode allows applications to use cairo_rectangle and
3275 cairo_fill to draw scaled images with high-quality bilinear filtering
3276 for the internal of the image, but without any objectionably blurry
3277 edges, (as would happen with the default EXTEND_NONE and cairo_paint).
3279 Rendering with CAIRO_ANTIALIAS_NONE has been fixed to be more
3280 predictable, (previously image rendering and geometry rendering would
3281 be slightly misaligned with respect to each other).
3283 The reference manual at https://cairographics.org/manual now documents
3284 100% of the functions and types in cairo's public API.
3286 API additions
3287 -------------
3288 Several small features have been added to cairo with new API functions:
3290 cairo_format_stride_for_width
3292     Must be called to compute a properly aligned stride value before
3293     calling cairo_image_surface_create_for_data.
3295 cairo_has_current_point
3297     Allows querying if there is a current point defined for the
3298     current path.
3300 cairo_path_extents
3302     Allows querying for path extents, (independent of any fill or
3303     stroke parameters).
3305 cairo_surface_copy_page
3306 cairo_surface_show_page
3308     Allow beginning a new document page without requiring a cairo_t
3309     object.
3311 cairo_ps_surface_restrict_to_level
3312 cairo_ps_get_levels
3313 cairo_ps_level_to_string
3314 cairo_ps_surface_set_eps
3316     Allow controlling the Post PostScript level, (2 or 3), to
3317     target, as well as to generate Encapsulated PostScript (EPS).
3319 cairo_quartz_font_face_create_for_cgfont
3321     Create a quartz-specific cairo_font_face_t from a CGFontRef.
3323 cairo_win32_font_face_create_for_logfontw_hfont
3325     Create a win32-specific cairo_font_face from a LOGFONTW and an
3326     HFONT together.
3328 Thanks, Everyone!
3329 -----------------
3330 I've accounted for 32 distinct people with attributed code added to
3331 cairo between 1.4.14 and 1.6.0, (their names are below). That's an
3332 impressive number, but there are certainly dozens more that
3333 contributed with testing, suggestions, clarifying questions, and
3334 encouragement. I'm grateful for the friendships that have developed as
3335 we have worked on cairo together. Thanks to everyone for making this
3336 all so much fun!
3338 Adrian Johnson, Alp Toker, Antoine Azar, Behdad Esfahbod,
3339 Benjamin Otte, Bernardo Innocenti, Bertram Felgenhauer,
3340 Boying Lu, Brian Ewins, Carl Worth, Chris Heath, Chris Wilson,
3341 Claudio Ciccani, Emmanuel Pacaud, Jeff Muizelaar, Jeremy Huddleston,
3342 Jim Meyering, Jinghua Luo, Jody Goldberg, Jonathan Gramain,
3343 Keith Packard, Ken Herron, Kouhei Sutou, Kristian Høgsberg,
3344 Larry Ewing, Martin Ejdestig, Nis Martensen, Peter Weilbacher,
3345 Richard Hult, Shailendra Jain, Søren Sandmann Pedersen,
3346 Vladimir Vukicevic
3348 Snapshot 1.5.20 (2008-04-04 Carl Worth <cworth@cworth.org>)
3349 ===========================================================
3350 This is the tenth snapshot in cairo's unstable 1.5 series. It comes
3351 just two days (and only one working day) after the 1.5.18
3352 snapshot. The quick snapshot is due to two embarrassing bugs (both
3353 affecting cairo-xlib) that had been introduced in the 1.5.18
3354 snapshot. The fixes for these are described below along with a few
3355 other fixes, (which hopefully aren't introducing new bugs this time).
3357 cairo-xlib
3358 ----------
3359 Revert fix from 1.5.18 to allow pattern expansion based on the filter
3360 mode. This fix seemed so boring, (the use case it addresses is almost
3361 never used in practice), that it didn't even get mentioned in the
3362 1.5.18 release notes. However, the "fix" happened to break rendering
3363 that is always used resulting in corrupt image rendering in mozilla,
3364 evolution, and probably everything else that uses cairo.
3366 Fix to avoid BadMatch errors in cairo_surface_create_similar. These
3367 were introduced, (inadvertently, of course), as part of the fix in
3368 1.5.18 for creating similar surfaces without the Render
3369 extension. Again, thanks to mozilla, (and Vladimir Vukicevic in
3370 particular), for noticing our mistake.
3372 general
3373 -------
3374 Correctly handle an in-error surface in
3375 cairo_surface_write_to_png. Previously this function would cause an
3376 assertion failure if you gave it a finished surface. Now it cleanly
3377 returns a CAIRO_STATUS_SURFACE_FINISHED result instead.
3379 Avoid potentially infinite wandering through memory inside
3380 _cairo_hull_prev_valid. Thanks to Jonathan Watt for noticing this
3381 problem:
3383         https://bugzilla.mozilla.org/show_bug.cgi?id=306649#c21
3385 cairo-pdf
3386 ---------
3387 Fix generation of "soft" masks made by drawing to a similar surface
3388 and then calling cairo_mask_surface() with it.
3390 cairo-svg
3391 ---------
3392 Fix for code that uses cairo_mask() on an intermediate surface which
3393 is later passed to cairo_mask_surface().
3395 Snapshot 1.5.18 (2008-04-05 Carl Worth <cworth@cworth.org>)
3396 ===========================================================
3397 This is the ninth snapshot in cairo's unstable 1.5 series. It comes
3398 just 4 days after the 1.5.16 snapshot. We had hoped to not need
3399 another snapshot before the final 1.6.0 release, but several critical
3400 bugs were found and fixed in the last few days, so we thought it
3401 important to let people test the fixes with this snapshot. See below
3402 for details.
3404 documentation
3405 -------------
3406 The README now lists necessary dependencies.
3408 Various graphics state defaults are now documented, (source pattern is
3409 opaque black, line width is 2.0, line join is miter, line cap is butt,
3410 miter limit is 10.0, etc.).
3412 general
3413 -------
3414 Several cleanups have been made along many error-path returns,
3415 (carefully propagating up the original error status values, cleaning
3416 up memory leaks during error recovery, etc.). This is yet another in
3417 Chris "ickle" Wilson's long series of error-handling cleanups during
3418 the 1.5 series.
3420 Avoid undesired clipping when drawing scaled surface patterns with
3421 bilinear filtering.
3423 cairo-pdf
3424 ---------
3425 Fix emission of 1-bit alpha masks in PDF output.
3427 Fix a bug that would cause glyphs to be misplaced along the Y axis:
3429     http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=%23474136
3431     Originally, an issue about a crash, but later leading to the
3432     misplaced glyphs issue being discovered.
3434 cairo-ps
3435 --------
3436 Fix misplaced glyphs in cairo's PostScript output.
3438     This issue occurs when consecutive glyphs are placed far
3439     apart. This case is exercised by the new ft-show-glyphs-table test
3440     case, which was originally inspired by the Debian bug #23474136
3441     mentioned above.
3443 Fix more misplaced glyphs in cairo's PostScript output:
3445     The issue here showed up under very particular circumstance, (when
3446     converting a PDF file with a CFF font with CID Identity-H encoding
3447     and using glyph 0, (defined by the CFF specification as .notdef)
3448     as a space instead). More concretely, this problem appeared when
3449     converting the UbuntuDesktop.pdf file mentioned in this bug
3450     report:
3452         https://bugs.freedesktop.org/show_bug.cgi?id=15348#c3
3454     As usual with arcane font-encoding-specific bugs like this, many
3455     thanks to Adrian Johnson for his magical ability to dive into
3456     specifications and emerge almost instantaneously with fixes. And
3457     thanks to Sebastien Bacher for bringing the bug to our attention.
3459 cairo-xlib
3460 ----------
3461 Fix serious failure on X servers without the Render extension.
3463     Since the 1.5.14 snapshot (with support for PseudoColor visuals),
3464     any application attempting to create a "similar" xlib surface would
3465     fail on an X server without the Render extension. Thanks to
3466     Frederic Crozat for pointing out that cairo's test suite was
3467     entirely failing when run against Xvfb.
3469 Avoid crashing cairo-xlib applications for too-large glyphs
3471     Naively sending glyphs of any size to the X server will eventually
3472     violate the X limit on maximum request sizes. We now properly
3473     detect when a glyph would be too large and use existing fallbacks
3474     to render the glyph rather than trying to send it to the X server.
3476 Enable the buggy_repeat workaround for Xorg servers < 1.4
3478     We have determined that Xorg 1.3.0 (as packaged in Fedora 8 at
3479     least) has a bug that can result in an X server crash when cairo
3480     uses certain X Render repeat operations, (as exercised by cairo's
3481     extend-reflect test). We avoid this crash by using fallbacks
3482     whenever a repeating surface is needed for any Xorg server with a
3483     version less than 1.4. This is slower, but should prevent the
3484     crash.
3486     (Meanwhile, there appears to be a separate bug where some X
3487     servers or specific X-server drivers will use random pixmap data
3488     when asked to draw a repeating surface. The buggy_repeat
3489     workaround would also avoid those problems, but we have not yet
3490     characterized whether the new "version < 1.4" is a good
3491     characterization of those problems or not.)
3493 cairo-quartz-font
3494 -----------------
3495 Implement cairo_font_extents for this backend.
3497 The cairo-quartz-font implementation added in the 1.5.14 snapshot was
3498 entirely missing support for the cairo_font_extents function. Thanks to
3499 Richard Hult for pointing out this obvious shortcoming, (and obvious
3500 lack of coverage in our test suite):
3502         CGFont backend returns 0 font extents
3503         https://bugs.freedesktop.org/show_bug.cgi?id=15319
3505 Snapshot 1.5.16 (2008-04-01 Carl Worth <cworth@cworth.org>)
3506 ===========================================================
3507 This is the eighth snapshot in cairo's unstable 1.5 series. It comes
3508 less than two weeks after the 1.5.14 snapshot and it really is a
3509 legitimate snapshot, (in spite of sharing this date with that of many
3510 bogus announcements). The major change in this snapshot is that the
3511 cairo-quartz backend is now officially "supported", including new API
3512 to construct a font face from a CGFontRef . Also several bug fixes
3513 have been fixed in many backends. See below for details.
3515 general
3516 -------
3517 Cairo now depends on pixman 0.10.0 which was recently released. The
3518 latest pixman release can always be found alongside cairo releases at:
3520    https://cairographics.org/releases
3522 Increase the precision of color stops for gradients. This fixes a
3523 regression in gradient rendering that had been present since the
3524 1.5.12 snapshot.
3526 paginated (all of ps, pdf, svg, and win32-printing)
3527 ---------------------------------------------------
3528 Fix assertion failure when some drawing elements are outside the page
3529 boundaries, (this bug was noticed when using Inkscape to print a
3530 drawing with landscape orientation to a portrait-oriented piece of
3531 paper).
3533 cairo-ps
3534 --------
3535 Fix of bug causing incorrect glyph positioning.
3537 Fix handling of CAIRO_OPERATOR_SOURCE.
3539 cairo-pdf
3540 ---------
3541 More reduction of unnecessary digits of precision in PDF output.
3543 Fix handling of CAIRO_OPERATOR_SOURCE.
3545 cairo-svg
3546 ---------
3547 Fix bug in usage of libpng that was preventing cairo_mask from working
3548 with the svg backend.
3550 Fix transformation of source pattern for cairo_stroke().
3552 cairo-win32-printing
3553 --------------------
3554 Fix fallback resolution, (thanks again to inkscape users/developers
3555 for helping us find this one).
3557 cairo-quartz
3558 ------------
3559 Mark the cairo-quartz backend as "supported" rather than
3560 "experimental". This means the following:
3562     * The backend will now be built by default (if possible).
3564     * We are committing that the backend-specific API (as published in
3565       cairo-quartz.h) are stable and will be supported in all future
3566       cairo 1.x releases.
3568     * We are committing that the output quality of this backend
3569       compares favorably with other cairo backends, (and that quality
3570       is ensured by good results from the cairo test suite).
3572     * We recommend that distributions build and distribute this
3573       backend when possible.
3575 Note that the cairo_quartz_image API (in cairo-quartz-image.h) is
3576 still experimental, will not build by default, (pass
3577 --enable-quartz-image to configure to build it), and may see API
3578 changes before it is marked as "supported" in a future release.
3580 Put the CAIRO_FONT_TYPE_ATSUI name back into
3581 cairo-deprecated.h. Without this, the cairo 1.5.14 snapshot broke all
3582 builds for applications using the C++ cairomm bindings (and perhaps
3583 others) which have the CAIRO_FONT_TYPE_ATSUI name in their header
3584 files. This breakage happened even for applications not using
3585 cairo-quartz at all.
3587     Note: Even though the CAIRO_FONT_TYPE_ATSUI name is provided to
3588     avoid this build breakage, we still recommend that bindings and
3589     applications move to the new, and more accurate,
3590     CAIRO_FONT_TYPE_QUARTZ name.
3592 Replace the implementation of cairo-quartz-font to use CFFont instead
3593 of ATSUI. The CGFont API is a better fit than ATSUI, and this new
3594 implementation is also more correct than the old one as well.
3596 This also adds the following new API call:
3598         cairo_public cairo_font_face_t *
3599         cairo_quartz_font_face_create_for_cgfont (CGFontRef font);
3601 The previous cairo_quartz_font_face_create_for_atsu_font_id function
3602 continues to exist and is part of the supported API going
3603 forward. (However, the old name of that same function, which was
3604 cairo_atsui_font_face_create_for_atsu_font_id is officially
3605 deprecated. Any source code using the old name should be updated to
3606 use the new name.)
3608 Fix transformation of source pattern for cairo_stroke().
3610 cairo-win32
3611 -----------
3612 Avoid crash in create_similar is cairo_win32_surface_create fails.
3614 Snapshot 1.5.14 (2008-03-20 Carl Worth <cworth@cworth.org>)
3615 ===========================================================
3616 This is the seventh snapshot in cairo's unstable 1.5 series. It comes
3617 3 weeks after the 1.5.12 snapshot. This snapshot includes support for
3618 arbitrary X server visuals, (including PseudoColor), which was the
3619 final remaining cairo-specific item on the cairo 1.6 roadmap. It also
3620 includes a huge number of improvements to the cairo-quartz backend. So
3621 this is effectively a cairo 1.6 release candidate. We expect very few
3622 changes from now until 1.6 and only for specific bug fixes.
3624 API Change
3625 ----------
3626 Rename ATSUI font backend to Quartz font backend. This affects the
3627 following usage:
3629         --enable-atsui          -> --enable-quartz-font
3630         CAIRO_HAS_ATSUI_FONT    -> CAIRO_HAS_QUARTZ_FONT
3631         CAIRO_FONT_TYPE_ATSUI   -> CAIRO_FONT_TYPE_QUARTZ
3633         cairo_atsui_font_face_create_for_atsu_font_id ->
3634         cairo_quartz_font_font_create_for_atsu_font_id
3636 This API change is justified by the cairo-quartz backend still be
3637 marked as "experimental" rather than "supported", (though this is one
3638 step toward making the change to "supported" before 1.6). Cairo will
3639 still provide ABI compatibility with the old symbol name, however.
3641 paginated (all of ps, pdf, svg, and win32-printing)
3642 ---------------------------------------------------
3643 Optimize by not analyzing an image surface for transparency more than
3644 once, (previously all images were analyzed twice).
3646 cairo-ps and cairo-pdf
3647 ----------------------
3648 Avoiding emitting a matrix into the stroke output when unnecessary,
3649 (making output size more efficient).
3651 Reduce rounding error of path shapes by factoring large scale factors
3652 out of the path matrix, (ensuring that a fixed-number of printed
3653 digits for path coordinates contains as much information as possible).
3655 Reduce excess digits for text position coordinates. This makes the
3656 output file size much smaller without making the result any less
3657 correct.
3659 cairo-ps
3660 --------
3661 Eliminate bug causing extraneous text repetition on Linux PostScript
3662 output in some cases.
3664         See: Mozilla Bug 419917 – Printed page contents are reflected
3665         inside bordered tables (Linux-only)
3667         https://bugzilla.mozilla.org/show_bug.cgi?id=419917
3669 Optimize output when EXTEND_PAD is used.
3671 cairo-pdf
3672 ---------
3673 Fix to not use fill-stroke operator with transparent fill, (else PDF
3674 output doesn't match the cairo-defined correct result). See:
3676         https://bugs.launchpad.net/inkscape/+bug/202096
3678 cairo-svg
3679 ---------
3680 Fix stroke of path with a non-solid-color source pattern:
3682         https://bugs.freedesktop.org/show_bug.cgi?id=14556
3684 cairo-quartz
3685 ------------
3686 Fix text rendering with gradient or image source pattern.
3688 Handling antialiasing correctly for cairo_stroke(), cairo_clip(), and
3689 cairo_show_text()/cairo_show_glyphs().
3691 Correctly handle gradients with non-identity transformations:
3693         Fixes https://bugs.freedesktop.org/show_bug.cgi?id=14248
3695 Add native implementation of REPEAT and REFLECT extend modes for
3696 gradients.
3698 Fix implementation for the "unbounded" operators, (CAIRO_OPERATOR_OUT,
3699 _IN, _DEST_IN, and _DEST_ATOP).
3701 Correctly handle endiannees in multi-architecture compiles on Mac OS
3704 Avoid behavior which would cause Core Graphics to print warnings to
3705 the console in some cases.
3707 cairo-win32
3708 -----------
3709 Fix handling of miter limit.
3711 cairo-win32-printing
3712 --------------------
3713 Fix to not use a 1bpp temporary surface in some cases while printing,
3714 (so grayscale data is preserved rather than just becoming black and
3715 white).
3717 cairo-xlib
3718 ----------
3719 Add support for rendering to arbitrary TrueColor X server
3720 visuals. This fixes at least the following bugs:
3722         cairo doesn't support 8-bit truecolor visuals
3723         https://bugs.freedesktop.org/show_bug.cgi?id=7735
3725         cairo doesn't support 655 xlib format
3726         https://bugs.freedesktop.org/show_bug.cgi?id=9719
3728 Add support for rendering to 8-bit PseudoColor X server visuals. This
3729 fixes the following bug:
3731         Cairo doesn't support 8-bit pseudocolor visuals
3732         https://bugs.freedesktop.org/show_bug.cgi?id=4945
3734 Snapshot 1.5.12 (2008-02-28 Carl Worth <cworth@cworth.org>)
3735 ===========================================================
3736 This is the sixth snapshot in cairo's unstable 1.5 series. It comes 1
3737 week after the 1.5.10 snapshot. This snapshot includes the
3738 long-awaited change from 16.16 to 24.8 fixed-point values, (see below
3739 for why you should care).  It also includes several backend-specific
3740 bug fixes.
3742 24.8 fixed-point format
3743 -----------------------
3744 Cairo has always converted path coordinates to a fixed-point
3745 representation very early in its processing. Historically, this has
3746 been a 32-bit representation with 16 bits of integer for the
3747 device-pixel grid and 16 bits of sub-pixel positioning. The choice of
3748 16 bits for the integer coordinate space was based on the 16-bit limit
3749 for X Window drawables.
3751 This 16-bit limit has proven problematic for many applications. It's
3752 an especially vexing problem when targeting non-X backends that don't
3753 have any 16-bit restriction. But even when targeting cairo-xlib, it's
3754 often desirable to draw a large shape, (say a background rectangle),
3755 that extends beyond the surface bounds and expect it to fill the
3756 surface completely, (rather than overflowing and triggering random
3757 behavior).
3759 Meanwhile, nobody has ever really needed 16 bits of sub-pixel
3760 precision.
3762 With this snapshot, the fixed-point system is still in place and is
3763 still using a 32-bit representation, (future versions of cairo might
3764 move entirely to floating-point when targeting PDF output for
3765 example). But the representation now provides 24 bits of pixel
3766 addressing and only 8 bits of sub-pixel positioning. This should give
3767 a much less stifling space to many applications.
3769 However, the underlying pixman library still has 16-bit limitations in
3770 many places, (it has its roots in the X server as well). Until those
3771 are also fixed, applications targeting cairo image surfaces, or
3772 hitting software fallbacks when targeting other surfaces will still
3773 encounter problems with device-space values needing more than 16
3774 integer bits.
3776 generic fixes
3777 -------------
3778 Add a few tests to the test suite to increase coverage.
3780 Cleanup a few error-handling paths, (propagate error correctly).
3782 cairo-ft
3783 --------
3784 Fix handling of font sizes smaller than 1 device pixel.
3786 cairo-pdf
3787 ---------
3788 Fix to properly save/restore clip when analyzing meta-surface
3789 patterns, (fixing a couple of test-suite failures).
3791 Implement native support for CAIRO_OPERATOR_SOURCE when the source
3792 pattern is opaque.
3794 Emit rectangles as PDF rectangles ("re" operator) rather than as
3795 general paths.
3797 cairo-ps
3798 --------
3799 Fix to work properly with the 16.16->24.8 change.
3801 cairo-svg
3802 ---------
3803 Fix CAIRO_EXTEND_REFLECT by using an image fallback, (there's no
3804 direct SVG support for reflected patterns).
3806 Fix the use of alpha-only masks, (such as CAIRO_FORMAT_A8).
3808 cairo-quartz
3809 ------------
3810 Add new API for efficiently using image data as a source:
3812         cairo_surface_t *
3813         cairo_quartz_image_surface_create (cairo_surface_t *image_surface);
3815         cairo_surface_t *
3816         cairo_quartz_image_surface_get_image (cairo_surface_t *surface);
3818 For full documentation, see:
3820         https://cairographics.org/manual/cairo-Quartz-Surfaces.html#cairo-quartz-image-surface-create
3822 Several fixes for cairo_mask().
3824 cairo-atsui
3825 -----------
3826 Change default from from Monaco to Helvetica to be more consistent
3827 with other font backends.
3829 Snapshot 1.5.10 (2008-02-20 Carl Worth <cworth@cworth.org>)
3830 ===========================================================
3831 This is the fifth snapshot in cairo's unstable 1.5 series. It comes 3
3832 weeks after the 1.5.8 snapshot. This snapshot adds one new API
3833 function, (cairo_has_current_point), and the usual mix of
3834 improvements, (more efficient PostScript/PDF output, optimized
3835 stroking), and fixes (more robust error-handling, etc.). See below for
3836 details.
3838 New API
3839 -------
3840 Add a new function to query if there is a current point:
3842         cairo_bool_t
3843         cairo_has_current_point (cairo_t *cr);
3845 There is no current point immediately after cairo_create(), nor after
3846 cairo_new_path() or cairo_new_sub_path(). There is a current point
3847 after any of the path-creation functions, (cairo_move_to,
3848 cairo_line_to, cairo_curve_to, etc.).
3850 With this new function, we also revert the change of the return type
3851 of cairo_get_current_point from cairo 1.5.8, (it's now a void function
3852 again).
3854 Optimizations
3855 -------------
3856 Optimize stroking code to avoid repeated calculation of redundant
3857 values, (particularly significant for very large, offscreen paths).
3859 General fixes
3860 -------------
3861 Patch a few more potential buffer overruns, (due to integer
3862 overflow).
3864 Many fixes and improvements to cairo's error-handling, (ensure that
3865 correct error values are returned, clean up memory leaks on
3866 error-handling paths, etc.).
3868 Fix a potential infinite loop when stroking a spline with a pen that
3869 has been transformed to a line segment.
3871 Remove treating NULL as a synonym for a valid cairo_font_options_t*
3872 with default values, (a change that had been introduced as of cairo
3873 1.5.8).
3875 Remove the altered handling of tolerance and fallback-resolution that
3876 had been introduced as of cairo 1.5.4.
3878 cairo-xlib
3879 ----------
3880 Pass the original Drawable, (as opposed to the root window), to
3881 XCreatePixmap when creating a similar surface. This gives the X server
3882 more information so that it can be clever and efficient.
3884 cairo-pdf
3885 ---------
3886 Fix the rendering of repeating and reflecting patterns.
3888 Ensure miter limit is always >= 1, (smaller limits are not meaningful,
3889 but they can cause some PDF viewers to fail to display pages).
3891 Generate more efficient output when the same path is used for both
3892 fill and stroke.
3894 cairo-ps
3895 --------
3896 Start sharing much of the cairo-pdf code rather than implementing very
3897 similar code in cairo-ps.
3899 Implement native support for repeating and reflecting linear
3900 gradients.
3902 Implement reflected surface patterns.
3904 Ensure miter limit is always >= 1, (smaller limits are not meaningful,
3905 but they can cause some PostScript viewers to crash).
3907 Generate PostScript that will perform more efficiently and use less
3908 memory on printers, (use currentfile instead of a giant string array
3909 for image data, and avoid using PostScript patterns for paint() and
3910 fill() when possible).
3912 cairo-svg
3913 ---------
3914 Avoid unnecessary rasterization when copying a "similar" surface to
3915 another svg surface, (allow the SOURCE operator to be implemented with
3916 all-vector operations if there are no underlying objects).
3918 cairo-atsui
3919 -----------
3920 Eliminate infinite loop when attempting to render an empty string.
3922 Snapshot 1.5.8 (2008-01-30 Carl Worth <cworth@cworth.org>)
3923 ==========================================================
3924 This is the fourth snapshot in cairo's unstable 1.5 series. It comes 2
3925 weeks after the 1.5.6 snapshot. It adds a few new API functions. Most
3926 notably all callers of cairo_image_surface_create_for_data should now
3927 be calling cairo_format_stride_for_width to compute a legal stride
3928 value. See below for more details.
3930 New API in cairo 1.5.8
3931 ----------------------
3932 We've added a new function that should be called to compute a legal
3933 stride value before allocating data to be used with
3934 cairo_image_surface_create_for_data:
3936         int
3937         cairo_format_stride_for_width (cairo_format_t   format,
3938                                        int              width);
3940 We've also added a new cairo_path_extents function that can be used to
3941 compute a bounding box for geometry such as a single line segment,
3942 (contrast with cairo_path_extents and cairo_stroke_extents):
3944         void
3945         cairo_path_extents (cairo_t *cr,
3946                             double *x1, double *y1,
3947                             double *x2, double *y2);
3949 And finally, we've added a function to allow for querying the
3950 XRenderPictFormat of a cairo-xlib surface:
3952         XRenderPictFormat *
3953         cairo_xlib_surface_get_xrender_format (cairo_surface_t *surface);
3955 API changes
3956 -----------
3957 Fix return types of cairo_surface_show_page and
3958 cairo_surface_copy_page. This is an API change to functions that are
3959 new in the 1.5 series, so not an API break compared to any stable
3960 cairo release, (1.0.x, 1.2.x, 1.4.x).
3962 Change the return type of cairo_get_current_point() from void to
3963 cairo_status_t. This allows the caller to receive a
3964 CAIRO_STATUS_NO_CURRENT_POINT value to distinguish the a current point
3965 at the origin from no current point existing.
3967 Performance improvement
3968 -----------------------
3969 Improve performance of clipping by using an optimized code path
3970 internally, (with the ADD operator instead of IN).
3972 General bug fixes
3973 -----------------
3974 Fix various cairo_*_extents functions to initialize the return-value
3975 variables even in the case of a cairo_t in error.
3977 Treat NULL as a legitimate value for cairo_font_options_t*. [NOTE:
3978 On discussion afterwards, we decided against this change so it has
3979 been removed as of cairo 1.5.10.]
3981 Fix rendering with CAIRO_ANTIALIAS_NONE to be more predictable, (that
3982 is, to avoid seams appearing when geometry and imagery share an
3983 identical edge). Portions of this fix are in the pixman library and
3984 will appear in a future release of that library.
3986 Avoid triggering an error for a font size of 0.
3988 Miscellaneous changes
3989 ---------------------
3990 Require pixman >= 0.9.6.
3992 There has been a tremendous amount improvement to cairo's
3993 documentation. We're delighted that 100% of the public API has at
3994 least some documentation in the API reference manual. Many thanks to
3995 Behdad Esfahbod and Nis Martensen for leading this effort.
3997 cairo-pdf and cairo-ps
3998 ----------------------
3999 Eliminate failure when a Type 1 font is embedded with an explicit
4000 glyph 0.
4002 cairo-pdf
4003 ---------
4004 Implement a more correct and more efficient approach for patterns with
4005 an extend mode of CAIRO_EXTEND_REFLECT.
4007 cairo-ps
4008 --------
4009 Fix image masks to properly pack and pad mask bits.
4011 cairo-quartz
4012 ------------
4013 Take care to only use DrawTiledImage for integer-aligned images, (and
4014 use slower paths to get the correct result in other cases).
4016 cairo-win32
4017 -----------
4018 Fix for older versions of mingw.
4020 Improve the handling of the clipping with the win32 and win32-printing
4021 surfaces.
4023 Fix rendering of non black/white text.
4025 Snapshot 1.5.6 (2008-01-15 Carl Worth <cworth@cworth.org>)
4026 ==========================================================
4027 This is the third snapshot in cairo's unstable 1.5 series. It comes
4028 about 6 weeks after the 1.5.4 snapshot. The only API addition compared
4029 to 1.5.4 is very minor, (a new value CAIRO_STATUS_TEMP_FILE_ERROR).
4030 The remainder of the changes are the usual accumulation of bug fixes
4031 and improvements. See below for details.
4033 General bug fixes
4034 -----------------
4035 Fix handling of fonts that contain a mixture of outline and bitmapped
4036 glyphs. There was a change in this handling in 1.5.4 that improved
4037 some cases and also regressed other cases. Now, all cases should be
4038 handled quite well.
4040 Fix alignment issues that were causing SIGBUS failures on SPARC.
4042 Fix a regression (which first appeared in 1.5.2) where stroking under
4043 a large scale would sometimes incorrectly replace a miter join with a
4044 bevel join. (Thanks to Keith Packard.)
4046 Fix reporting of zero-sized extents to be {0,0} rather than
4047 {INT_MAX,INT_MIN}. This avoids several integer overflow and
4048 allocations of massive regions in some cases.
4050 Fix failures of gradients with no stops, (quartz, ps, and pdf).
4052 Fix handling of Type 1 fonts on Windows platforms.
4054 Fix handling of Type 1 fonts with no specific family name in the font
4055 itself, (generate a CairoFont-x-y name).
4057 Handle NULL string values in cairo_show_text, cairo_show_glyphs, and
4058 friends.
4060 Many robustness improvements along error-handling paths, (thanks as
4061 always, to Chris "ickle" Wilson).
4063 Various other minor fixes.
4065 Paginated backends (PDF/PostScript/win32-printing)
4066 --------------------------------------------------
4067 Avoid unnecessary rasterization when using a paginated surface as a
4068 source, (such as drawing from one pdf surface to another).
4070 Fix replaying of paginated surface with more than one level of push/pop
4071 group.
4073 cairo-xlib
4074 ----------
4075 Fix xlib backend to not consider recent X server release as having a
4076 buggy repeat implementation in the Render extension.
4078 cairo-pdf
4079 ---------
4080 Fix PDF output to avoid triggering very slow rendering in PDF viewers,
4081 (avoid starting and stopping the content stream for each pattern
4082 emission).
4084 Support CAIRO_OPERATOR_SOURCE in cases where there is nothing below
4085 the object being drawn.
4087 Fix to avoid seams appearing between multiple fallback regions.
4089 cairo-ps (PostScript)
4090 ---------------------
4091 Use correct bounding box in Type 3 fonts.
4093 Fix several bugs in cairo's PostScript output. These include making
4094 the PostScript output more compatible with recent versions of
4095 ghostscript that are more strict about Type 3 fonts, for
4096 example.
4098 Fix for win32 to not attempt to create temporary files in the root
4099 directory, (where the user may not have write permission).
4101 Avoid generating Level 3 PostScript if Level 2 is sufficient. Also,
4102 add code in output documents to alert the user if Level 3 PostScript
4103 is handed to a device that cannot handle PostScript beyond Level
4106 cairo-directfb
4107 --------------
4108 Various performance optimizations.
4110 Fixed support for small surfaces (less than 8x8).
4112 Provide support for environment variables CAIRO_DIRECTFB_NO_ACCEL to
4113 disable acceleration and CAIRO_DIRECTFB_ARGB_FONT to enable ARGB fonts
4114 instead of A8.
4116 cairo-os2
4117 ---------
4118 Allow OS/2 APIs instead of C library allocation functions.
4120 Snapshot 1.5.4 (2007-12-05 Carl Worth <cworth@cworth.org>)
4121 ==========================================================
4122 This is the second snapshot in cairo's unstable 1.5 series. It comes
4123 just over 1 month after the 1.5.2 snapshot. There are no API changes
4124 or additions in 1.5.4 compared to 1.5.2, but there are several bug
4125 fixes, and some optimizations. Most of these apply to particular
4126 backends. See below for details.
4128 General improvements
4129 --------------------
4130 Use less memory for spline approximation calculations.
4132 Change how the tolerance value is interpreted with regard to
4133 fallback-resolution. [Note: On further discussion, we decided against
4134 this change for now. It is removed as of cairo 1.5.10.]
4136 Fix precision of floating-point values in vector-output backends to
4137 avoid rounding errors with very small numbers.
4139 Xlib improvements
4140 -----------------
4141 Fix bug in glyph rendering with xlib, (due to everything being clipped
4142 out). This was a regression in the 1.5.2 snapshot that was visible in
4143 the GIMP, for example. See:
4145         cairo 1.5.2 causes font problems in GIMP 2.4 status bar and evolution 2.12.1
4146         https://bugs.freedesktop.org/show_bug.cgi?id=13084
4148 PostScript improvements
4149 -----------------------
4150 Fix bug leading to invalid PostScript files when rendering
4151 text, (need "0 0 xyshow" instead of "0 xyshow").
4153 Fix many issues with Type 3 fonts, including making the resulting text
4154 extractable.
4156 Quartz improvements
4157 -------------------
4158 Fix font metrics height value for ATSUI, (helps webkit on GTK+ OS X
4159 layout nicely).
4161 Fix gradients.
4163 Fix EXTEND_NONE mode for patterns.
4165 Fix cairo_quartz_surface_create to properly clear the new surface
4166 in cairo_quartz_surface_create.
4168 Fix to correctly handle 0x0 sized surfaces.
4170 Optimize drawing of EXTEND_REPEAT patterns for OS X 10.5.
4172 Snapshot 1.5.2 (2007-10-30 Carl Worth <cworth@cworth.org>)
4173 ==========================================================
4174 This is the first snapshot in cairo's unstable 1.5 series. It comes 4
4175 months after the 1.4.10 release. This snapshot includes significant
4176 improvements to PDF and PostScript output, which is one of the things
4177 in which we're most interested in getting feedback. There are a couple
4178 of minor API additions, and several optimizations, (primarily in the
4179 "print/vector" backends). And there are dozens of bug fixes and
4180 robustness improvements.
4182 New dependency on external pixman library
4183 -----------------------------------------
4184 A significant change in this snapshot compared to all previous cairo
4185 releases is that cairo now depends on an external "pixman" library for
4186 its software rendering. Previously this same code was compiled
4187 internally as part of cairo, but now the code is separate so that both
4188 cairo and the X server can now share common code, (thanks very much to
4189 Søren Sandmann for his work on separating pixman and maintaining it).
4191 So users will need to acquire and build pixman before being able to
4192 build cairo. The current release is 0.9.6 and can be obtained from
4193 here:
4195         https://cairographics.org/releases/pixman-0.9.6.tar.gz
4197  which can be verified with:
4199         https://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1
4200         66f01a682c64403a3d7a855ba5aa609ed93bcb9e  pixman-0.9.6.tar.gz
4202         https://cairographics.org/releases/pixman-0.9.6.tar.gz.sha1.asc
4203         (signed by Carl Worth)
4205 Major PDF/PostScript improvements
4206 ---------------------------------
4207 Adrian Johnson has done some long-awaited work to make cairo's PDF and
4208 PostScript output more interesting than ever before. First, many
4209 operations that previously triggered image fallbacks will now be
4210 rendered as native vectors. These operations include:
4212         PDF: cairo_push_group, cairo_surface_create_similar,
4213         cairo_mask, A8/A1 surface sources, repeating/reflecting linear
4214         gradients.
4216         PostScript: cairo_push_group, cairo_surface_create_similar,
4217         gradients, bilevel alpha masks, (for example, all values either 0 or
4218         255 for an A8 mask).
4220 Not only that, but when an image fallback is required, it will now be
4221 limited to only the necessary region. For example, a tiny translucent
4222 image overlaying a small portion of text would previously caused an
4223 entire PostScript page to be rendered as a giant image. Now, the
4224 majority of that page will be nice text, and there will only be a tiny
4225 image in the output.
4227 Additionally, the PostScript output now carefully encodes text so that
4228 if it is subsequently converted to PDF, the text will be
4229 selectable.
4231 This is very exciting progress, and we're hoping to hear from users
4232 during the 1.5 series about how things have improved, (for example,
4233 inkscape users doing cairo-based PDF export: please let us know how
4234 things look). And feel free to pass your thanks along to Adrian for his excellent work.
4236 NOTE: This much improved PDF output makes more sophisticated use of
4237 functionality in the PDF specification. This means that cairo's output
4238 will sometimes expose bugs in some free software PDF viewers, (evince,
4239 poppler, and xpdf, for example), that are not yet ready for such PDF
4240 files. We're working with the poppler maintainers to get these bugs
4241 fixed as quickly as possible. In the meantime, please double-check
4242 with other PDF viewers if cairo-generated PDF files are not being
4243 rendered correctly. It may be due to a bug in the viewer rather than
4244 in the PDF file that cairo has created.
4246 Robustness improvements
4247 -----------------------
4248 Chris Wilson has made the largest contribution by far to cairo 1.5.2,
4249 (in number of commits). His more than 150 commits include a huge
4250 number of fixes to increase cairo's robustness. These fixes make cairo
4251 more robust against invalid and degenerate input, (NaN, empty path,
4252 etc.), against size-0 malloc calls, against memory leaks on
4253 error-recovery paths, and against other failures during error
4254 handling. He also implemented atomic operations to cairo, and used
4255 them to fix cairo's previously non-thread-safe reference counting,
4256 again improving robustness.
4258 Chris has put a tremendous amount of time and effort into writing
4259 analysis tools for this work, and in running those tools and fixing
4260 the problems they report. We're very grateful for this work, and hope
4261 that all cairo users appreciate the more robust implementation that
4262 results from it.
4264 This work is largely thankless, so it might make sense to notice
4265 sometime that cairo has been running quite smoothly for you, and when
4266 you do, send a quick "thank you" off to Chris Wilson, since it
4267 is all definitely running smoother thanks to his work.
4269 New API
4270 -------
4271 There are no major additions to cairo's core API. The only new,
4272 generic functions are:
4274         void
4275         cairo_surface_copy_page (cairo_surface_t *surface);
4277         void
4278         cairo_surface_show_page (cairo_surface_t *surface);
4280 which can now be used much more conveniently than the existing
4281 cairo_copy_page and cairo_show_page functions in some
4282 situations. These functions act identically, but require only a
4283 cairo_surface_t* and not a cairo_t*.
4285 All other API additions are specific to particular backends.
4287 New cairo-win32 API (new font face function and "win32 printing" surface)
4288 -------------------------------------------------------------------------
4289 There is a new function for creating a win32 font face for both a
4290 logfontw and an hfont together. This complements the existing
4291 functions for creating a font face from one or the other:
4293         cairo_font_face_t *
4294         cairo_win32_font_face_create_for_logfontw_hfont (LOGFONTW *logfont,
4295                                                          HFONT font);
4297 There is also a new "win32 printing" surface:
4299         cairo_surface_t *
4300         cairo_win32_printing_surface_create (HDC hdc);
4302 This interface looks identical to the original
4303 cairo_win32_surface_create, (both accept and HDC), but the behavior of
4304 this new surface is very different. It should only be called with a
4305 printing DC, and will result in all drawing commands being stored into
4306 a meta-surface and emitted after each page is complete, with analysis
4307 to do as minimal image-based fallbacks as necessary. The behavior and
4308 implementation shares much with the PDF and PostScript backends.
4310 New cairo-ps API (EPS and PostScript level control)
4311 ---------------------------------------------------
4312 An often requested feature has been the ability to generate
4313 Encapsulated PostScript (EPS) with cairo. We have that now with the
4314 following very simple API. Just do cairo_ps_surface_create as usual
4315 then call this function with a true value:
4317         void
4318         cairo_ps_surface_set_eps (cairo_surface_t       *surface,
4319                                   cairo_bool_t           eps);
4321 [NOTE: As always with snapshots, it's possible---though not very
4322 likely---that the API could still be modified before a final
4323 release. For example, this is the first public cairo function that
4324 accepts a Boolean parameter. I'm generally opposed to Boolean
4325 parameters, but this is probably the one case where I'm willing to
4326 accept one, (namely a "set" function that accepts a single Boolean).]
4328 Also, it is now possible to control what PostScript level to target,
4329 (either level 2 or level 3), with the following new API:
4331         typedef enum _cairo_ps_level {
4332             CAIRO_PS_LEVEL_2,
4333             CAIRO_PS_LEVEL_3
4334         } cairo_ps_level_t;
4336         void
4337         cairo_ps_surface_restrict_to_level (cairo_surface_t    *surface,
4338                                             cairo_ps_level_t    level);
4340         void
4341         cairo_ps_get_levels (cairo_ps_level_t const  **levels,
4342                              int                      *num_levels);
4344         const char *
4345         cairo_ps_level_to_string (cairo_ps_level_t level);
4347 Improvement for cairo-quartz
4348 ----------------------------
4349 Brian Ewins had contributed several improvements to cairo-quartz. These
4350 include an implementation of EXTEND_NONE for linear and radial
4351 gradients, (so this extend mode will no longer trigger image fallbacks
4352 for these gradients), as well as native surface-mask clipping, (only
4353 on OS X 10.4+ where the CGContextClipToMask function is available).
4355 He also fixed a semantic mismatch between cairo and quartz for dashing
4356 with an odd number of entries in the dash array.
4358 We're grateful for Brian since not many quartz-specific improvements
4359 to cairo would be happening without him.
4361 Optimizations
4362 -------------
4363 Optimize SVG output for when the same path is both filled and stroked,
4364 and avoid unnecessary identity matrix in SVG output. (Emmanuel Pacaud).
4366 Optimize PS output to take less space (Ken Herron).
4368 Make PS output more compliant with DSC recommendations (avoid initclip
4369 and copy_page) (Adrian Johnson).
4371 Make PDF output more compact (Adrian Johnson).
4373 Release glyph surfaces after uploading them to the X server, (should
4374 save some memory for many xlib-using cairo application). (Behdad
4375 Esfahbod).
4377 Optimize cairo-win32 to use fewer GDI objects (Vladimir Vukicevic).
4379 win32-printing: Avoid falling back to images when alpha == 255
4380 everywhere. (Adrian Johnson).
4382 win32-printing: Avoid falling back for cairo_push_group and
4383 cairo_surface_create_similar. (Adrian Johnson)
4385 Bug fixes
4386 ---------
4387 Avoid potential integer overflows when allocating large buffers
4388 (Vladimir Vukicevic).
4390 Preparations to allow the 16.16 fixed-point format to change to
4391 24.8 (Vladimir Vukicevic).
4393 Fix bugs for unsupported X server visuals (rgb565, rgb555, bgr888, and
4394 abgr8888). (Carl Worth and Vladimir Vukicevic)
4396 Fix bugs in PDF gradients (Adrian Johnson).
4398 Fix cairo-xlib to build without requiring Xrender header
4399 files (Behdad Esfahbod).
4401 Make cairo more resilient in the case of glyphs not being available in
4402 the current font. (Behdad Esfahbod)
4404 Prevent crashes when both atsui and ft font backends are compiled in
4405 (Brian Ewins).
4407 Make font subsetting code more robust against fonts that don't include
4408 optional tables (Adrian Johnson).
4410 Fix CFF subsetting bug, (which manifested by generating PDF files that
4411 Apple's Preview viewer could not read) (Adrian Johnson).
4413 Fixed error handling for quartz and ATSUI backends (Brian Ewins).
4415 Avoid rounding problems by pre-transforming to avoid integer-only
4416 restrictions on transformation in GDI (Adrian Johnson).
4418 Fixed an obscure bug (#7245) computing extents for some stroked
4419 paths (Carl Worth).
4421 Fix crashes due to extreme transformation of the pen, (seems to show
4422 up in many .swf files for some reason) (Carl Worth).
4424 Release 1.4.10 (2007-06-27 Carl Worth <cworth@cworth.org>)
4425 ==========================================================
4426 This is the fifth update in cairo's stable 1.4 series. It comes
4427 roughly three weeks after the 1.4.8 release. The most significant
4428 change in this release is a fix to avoid an X error in certain cases,
4429 (that were causing OpenOffice.org to crash in Fedora). There is also a
4430 semantic change to include child window contents when using an xlib
4431 surface as a source, an optimization when drawing many rectangles, and
4432 several minor fixes.
4434 Eliminate X errors that were killing OO.o (Chris Wilson)
4435 --------------------------------------------------------
4436 Cairo is fixed to avoid the X errors propagated when cleaning up
4437 Render Pictures after the application had already destroyed the
4438 Drawable they reference. (It would be nice if the X server wouldn't
4439 complain that some cleanup work is already done, but there you have
4440 it.) This fixes the bug causing OpenOffice.org to crash as described
4441 here:
4443         XError on right click menus in OOo.
4444         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=243811
4446 Use IncludeInferiors when using xlib surface as a source (Ryan Lortie)
4447 ----------------------------------------------------------------------
4448 When an xlib surface is used as the source of a draw operation the
4449 contents of child windows are now included in the source data. The
4450 semantics of drawing to xlib surfaces are unchanged (ie: draws are
4451 still clipped by child windows overlapping the destination window).
4453 Optimize drawing of many rectangles (Vladimir Vukicevic)
4454 --------------------------------------------------------
4455 Avoid O(N*N) loop when filling many axis-aligned rectangles, (either
4456 many rectangles as separate sub-paths or due to dashing).
4458 Miscellaneous fixes
4459 -------------------
4460 Fix cairo-perf on Solaris by linking to librt. (Behdad Esfahbod)
4462 Fix make check for systems that require executable files to have a
4463 particular extension. (Behdad Esfahbod)
4465 Eliminate some warnings in cairo-quartz. (Brian Ewins)
4467 Fix build-breaking typo for cairo-directfb. (Chris Wilson)
4469 Release 1.4.8 (2007-06-07 Carl Worth <cworth@cworth.org>)
4470 =========================================================
4471 This is the fourth update in cairo's stable 1.4 series. It comes just
4472 over five weeks after the 1.4.6 release. This release includes a
4473 thread-safe surface-cache for solid patterns which significantly
4474 improves text rendering with the xlib backend. Also, dozens of error
4475 paths in cairo have been fixed thanks to extensive fault-injection
4476 testing by Chris Wilson.
4478 Surface cache for solid patterns
4479 --------------------------------
4480 Originally written by Jorn Baayen, the introduction of a small cache
4481 for surfaces created for solid patterns improves performance
4482 dramatically. For example, this reduces the volume of X requests
4483 during text rendering to the same level as Xft.
4485 This cache first made its appearance in a 1.3.x snapshot, but was
4486 removed before appearing in any previous major release due to
4487 complications with multi-threaded programs. For example, programs like
4488 evince that would carefully restrict usage of cairo-xlib to a single
4489 thread were unpleasantly surprised to find that using cairo-image in a
4490 separate thread could trigger X requests.
4492 Behdad Esfahbod designed a fix which was implemented by Chris
4493 Wilson. Now, the necessary X requests are queued up until the next
4494 time the application directly operates on an xlib surface.
4496 Improved error handling paths
4497 ------------------------------
4498 Chris Wilson continued the excellent work he started in cairo 1.4.4 to
4499 make cairo much more robust against out-of-memory and other errors. He
4500 applied his memory allocation fault injection cairo's main test suite,
4501 (previously he had applied it to cairo's performance suite).
4503 Chris's testing found dozens of bugs which he fixed. Many of these
4504 bugs had perhaps never been hit by any users. But at least one was
4505 hit by the gnome-about program which resulted in dozens of duplicated
4506 bug reports against that program:
4508         https://bugzilla.gnome.org/show_bug.cgi?id=431990
4510 We were very pleasantly surprised to see this bug get fixed as a
4511 side-effect of Chris's work. Well done, Chris!
4513 Other fixes
4514 -----------
4515 Cleanup of mutex declarations (Behdad Esfahbod)
4517 Remove unnecessary clip region from SVG output (Emmanuel Pacaud)
4519 Remove Xsun from the buggy_repeat blacklist (Elaine Xiong)
4521 ATSUI: Fix glyph measurement: faster and more correct (Brian Ewins)
4523 Quartz: fixed 'extend' behaviour for patterns, improved pattern performance,
4524 and a few smaller correctness fixes. (Brian Ewins, Vladimir Vukicevic)
4526 Release 1.4.6 (2007-05-01 Carl Worth <cworth@cworth.org>)
4527 =========================================================
4528 This is the third update in cairo's stable 1.4 series. It comes a
4529 little less than three weeks since the 1.4.4 release. This release
4530 fixes the broken mutex initialization that made cairo 1.4.4 unusable
4531 on win32, OS/2, and BeOS systems. This release also adds significant
4532 improvements to cairo's PDF backend, (native gradients!), and a couple
4533 of performance optimizations, (one of which is very significant for
4534 users of the xlib backend). See below for more details.
4536 Repaired mutex initialization
4537 -----------------------------
4538 We apologize that cairo 1.4.4 did little more than crash on many
4539 platforms which are less-frequently used by the most regular cairo
4540 maintainers, (win32, OS/2, and BeOS). The mutex initialization
4541 problems that caused those crashes should be fixed now. And to avoid
4542 similar problems in the future, we've now started posting pre-release
4543 snapshots to get better testing, (subscribe to cairo@cairographics.org
4544 if you're interested in getting notified of those and testing them).
4546 PDF Improvements
4547 ----------------
4548 Thanks to Adrian Johnson, (cairo PDF hacker extraordinaire), we have
4549 several improvements to cairo's PDF backend to announce:
4551 Native gradients:
4553   As of cairo 1.4.6, cairo will now generate native PDF gradients in
4554   many cases, (previously, the presence of a gradient on any page
4555   would force rasterized output for that page). Currently, only
4556   gradients with extend types of PAD (the default) or NONE will
4557   generate native PDF gradients---others will still trigger
4558   rasterization, (but look for support for other extend modes in a
4559   future release). Many thanks to Miklós Erdélyi as well, who did the
4560   initial work for this support.
4562 Better compatibility with PDF viewers:
4564   The PDF output from cairo should now be displayed correctly by a
4565   wider range of PDF viewers. Adrian tested cairo's PDF output against
4566   many PDF viewers, identified a common bug in many of those viewers
4567   (ignoring the CTM matrix in some cases), and modified cairo's output
4568   to avoid triggering that bugs (pre-transforming coordinates and
4569   using an identity matrix).
4571 Better OpenType/CFF subsetting:
4573   Cairo will now embed CFF and TrueType fonts as CID fonts.
4575 Performance optimizations
4576 -------------------------
4577 Faster cairo_paint_with_alpha:
4579   The cairo_paint_with_alpha call is used to apply a uniform alpha
4580   mask to a pattern. For example, it can be used to gradually fade an
4581   image out or in. Jeff Muizelaar fixed some missing/broken
4582   optimizations within the implementation of this function resulting
4583   in cairo_paint_with_alpha being up to 4 times faster when using
4584   cairo's image backend.
4586 Optimize rendering of "off-screen" geometry:
4588   Something that applications often do is to ask cairo to render
4589   things that are either partially or wholly outside the current clip
4590   region. Since 1.4.0 the image backend has been fixed to not waste
4591   too much time in this case. But other backends have still been
4592   suffering.
4594   In particular, the xlib backend has often performed quite badly in
4595   this situation. This is due to a bug in the implementation of
4596   trapezoid rasterization in many X servers.
4598   Now, in cairo 1.4.6 there is a higher-level fix for this
4599   situation. Cairo now eliminates or clips trapezoids that are wholly
4600   or partially outside the clip region before handing the trapezoids
4601   to the backend. This means that the X server's performance bug is
4602   avoided in almost all cases.
4604   The net result is that doing an extreme zoom-in of vector-based
4605   objects drawn with cairo might have previously brought the X server
4606   to its knees as it allocated buffers large enough to fit all of the
4607   geometry, (whether visible or not). But now the memory usage should
4608   be bounded and performance should be dramatically better.
4610 Miscellaneous
4611 -------------
4612 Behdad contributed an impressively long series of changes that
4613 organizes cairo's internals in several ways that will be very
4614 beneficial to cairo developers. Thanks, Behdad!
4616 Behdad has also provided a utility for generating malloc statistics,
4617 (which was used during the great malloc purges of 1.4.2 and
4618 1.4.4). This utility isn't specific to cairo so may be of benefit to
4619 others. It is found in cairo/util/malloc-stats.c and here are Behdad's
4620 notes on using it:
4622     To build, do:
4624         make malloc-stats.so
4626     inside util/, and to use, run:
4628         LD_PRELOAD=malloc-stats.so some-program
4630     For binaries managed by libtool, eg, cairo-perf, do:
4632         ../libtool --mode=execute /bin/true ./cairo-perf
4633         LD_PRELOAD="../util/malloc-stats.so" .libs/lt-cairo-perf
4635 Finally, the cairo-perf-diff-files utility was enhanced to allow for
4636 generating performance reports from several runs of the same backend
4637 while some system variables were changed. For example, this is now
4638 being used to allow cairo-perf to measure the performance of various
4639 different acceleration architectures and configuration options of the
4640 X.org X server.
4642 Release 1.4.4 (2007-04-13 Carl Worth <cworth@cworth.org>)
4643 =========================================================
4644 This is the second update release in cairo's stable 1.4 series. It
4645 comes just less than a month after 1.4.2. The changes since 1.4.2
4646 consist primarily of bug fixes, but also include at least one
4647 optimization. See below for details.
4649 Of all the work that went into the 1.4.4 release
4651 There have been lots of individuals doing lots of great work on cairo,
4652 but two efforts during the 1.4.4 series deserve particular mention:
4654 Internal cleanup of error handling, (Chris Wilson)
4655 --------------------------------------------------
4656 Chris contributed a tremendous series of patches (74 patches!) to
4657 improve cairo's handling of out-of-memory and other errors. He began
4658 by adding gcc's warn_unused_attribute to as many functions as
4659 possible, and then launched into the ambitious efforts of adding
4660 correct code to quiet the dozens of resulting warnings.
4662 Chris also wrote a custom valgrind skin to systematically inject
4663 malloc failures into cairo, and did all the work necessary to verify
4664 that cairo's performance test suite runs to completion without
4665 crashing.
4667 The end result is a much more robust implementation. Previously, many
4668 error conditions would have gone unnoticed and would have led to
4669 assertion failures, segmentation faults, or other harder-to-diagnose
4670 problems. Now, more than ever, cairo should cleanly let the user know
4671 of problems through cairo_status and other similar status
4672 functions. Well done, Chris!
4674 More malloc reduction, (Mathias Hasselmann)
4675 -------------------------------------------
4676 After 1.4.0, Behdad launched an effort to chase down excessive calls
4677 to malloc within the implementation of cairo. He fixed a lot of
4678 malloc-happy objects for 1.4.2, but one of the worst offenders,
4679 (pixman regions), was left around. Mathias contributed an excellent
4680 series of 15 patches to finish off this effort.
4682 The end result is a cairo that calls malloc much less often than it
4683 did before. Compared to 1.4.2, 55% of the calls to malloc have been
4684 eliminate, (and 60% have been eliminated compared to 1.4.0). Well
4685 done, Mathias!
4687 Other improvements since 1.4.2
4688 ------------------------------
4689 • Centralize mutex declarations (will reduce future build breaks),
4690   (Mathias Hasselmann)
4692 • Reduce malloc by caching recently freed pattern objects (Chris
4693   Wilson)
4695 • Fix some broken composite operations (David Reveman)
4696         https://bugs.freedesktop.org/show_bug.cgi?id=5777
4698 Backend-specific fixes
4699 ----------------------
4700 PDF:
4701  • Use TJ operator for more compact representation of glyphs (Adrian
4702    Johnson)
4704  • Fix glyph positioning bug when glyphs are not horizontal
4705         https://lists.freedesktop.org/archives/cairo/2007-April/010337.html
4707 win32:
4708  • Fix crash when rendering with bitmap fonts (Carl Worth)
4709         https://bugzilla.mozilla.org/show_bug.cgi?id=376498
4711 xlib:
4712  • Turn metrics-hinting on by default (Behdad Esfahbod)
4714  • Fix edge-effect problem with transformed images drawn to xlib
4715    (Behdad Esfahbod)
4716         https://bugs.freedesktop.org/show_bug.cgi?id=10508
4718  • Avoid dereferencing a NULL screen. (Chris Wilson)
4719         https://bugs.freedesktop.org/show_bug.cgi?id=10517
4721 Quartz/ATSUI:
4722  • Fix scaling of glyph surfaces
4723    (Brian Ewins)
4724         https://bugs.freedesktop.org/show_bug.cgi?id=9568
4726  • Fix compilation failure when both xlib and quartz enabled
4727    (Brian Ewins)
4729  • Fix rounding bug leading to incorrectly positioned glyphs
4730    (Robert O'Callahan)
4731         https://bugs.freedesktop.org/show_bug.cgi?id=10531
4733 Release 1.4.2 (2007-03-19 Carl Worth <cworth@cworth.org>)
4734 =========================================================
4735 This is the first update release in cairo's stable 1.4 series. It
4736 comes just less than 2 weeks after 1.4.0. We hadn't anticipated an
4737 update this early, but we've managed to collect some important fixes
4738 that we wanted to get out to cairo users as soon as possible, (6 fixes
4739 for crashes, 1 case where graphical elements would not be drawn at
4740 all, a handful of backend-specific bugs, and several important build
4741 fixes).
4743 There's almost nothing but bug fixes in this release, (see below one
4744 optimization that Behdad did sneak in), so we recommend that everyone
4745 upgrade to this release when possible.
4747 Thanks to the many people that worked to fix these bugs, and those
4748 that did the work to report them and to test the fixes, (wherever
4749 possible both names are credited below).
4751 Critical fixes
4752 --------------
4753 • Fix a crash due to a LOCK vs. UNLOCK typo (M. Drochner fixing Carl
4754   Worth's embarrassing typo).
4756   https://bugs.freedesktop.org/show_bug.cgi?id=10235
4758 • Fix potential buffer overflow, which on some systems with a checking
4759   variant of snprintf would lead to a crash (Adrian Johnson, Stanislav
4760   Brabec, and sangu).
4762   https://bugs.freedesktop.org/show_bug.cgi?id=10267
4763   https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=232576
4765 • Fix a crash in cairo_stroke_extents or cairo_in_stroke when line
4766   width is 0.0. (Carl Worth and Sebastien Bacher)
4768   https://bugs.freedesktop.org/show_bug.cgi?id=10231
4770 • Fix a crash on certain combinations of X server/video drivers (Carl
4771   Worth and Tomas Carnecky).
4773   https://bugs.freedesktop.org/show_bug.cgi?id=10250
4775 • Fix a crash due to mishandling of invalid user input (Carl Worth and
4776   Alexander Darovsky).
4778   https://bugs.freedesktop.org/show_bug.cgi?id=9844
4780 • xlib: Cleanup server-side glyph caches on XCloseDisplay. This
4781   eliminated a crash detected by the perf suite, (and that
4782   applications could have run into as well). (Chris Wilson)
4784 Other bug fixes
4785 ---------------
4786 • Fix for some geometry which simply disappeared under some
4787   transformations---a stroked line with an extreme skew in X, for
4788   example (Carl Worth and Jonathan Watt).
4790   https://bugzilla.mozilla.org/show_bug.cgi?id=373632
4792 • SVG: Fix radial gradients for CAIRO_EXTEND_REFLECT and when r0 > r1
4793   (Emmanuel Pacaud).
4795 • PDF: Set page group color space to DeviceRGB.
4797   This fixes incorrect (muddy) transparent colors when rendering cairo
4798   PDF output in some viewers. (Adrian Johnson, Adam Goode, and
4799   MenTaLguY).
4801   https://lists.freedesktop.org/archives/cairo/2006-November/008551.html
4803 • win32: Return correct metrics when hinting is off, and fix font
4804   descent computation (Behdad Esfahbod).
4806 • quartz: Fix glyph interfaces to correctly return user-space rather
4807   than device-space coordinates (Brian Ewins).
4809   https://bugs.freedesktop.org/show_bug.cgi?id=9568
4811 • xcb: Fix parameter-order confusion with xcb_create_pixmap, which now
4812   makes all tests that pass with xlib now pass with xcb (Carl Worth,
4813   Jamey Sharp).
4815 • Fix some memory leaks in the perf suite (Chris Wilson).
4817 • Fix perf suite to consider changes in pixman/src (Mathias
4818   Hasselmann).
4820 Build fixes
4821 -----------
4822 • Don't include pre-generated cairo-features.h file. This was causing
4823   build failures when building with the directfb backend enabled
4824   (Behdad Esfahbod).
4826   https://bugs.freedesktop.org/show_bug.cgi?id=10189
4828 • Eliminate use of maintainer mode from cairo's automake/configure
4829   script. This means that updates to files such as Makefile.am will
4830   take effect, (by rerunning automake and friends as necessary) when
4831   invoking make rather than being silently ignored.  (Behdad Esfahbod)
4833 • Don't compile cairo-deflate-stream.c, which depends on zlib, unless
4834   building the pdf backend which requires it. (Carl Worth, Tor
4835   Lillqvist)
4837   https://bugs.freedesktop.org/show_bug.cgi?id=10202
4839 • Don't make the ps backend link against zlib anymore, since it
4840   doesn't require it (Carl Worth).
4842 • Use "find !" rather than "find -not" for better portability (Thomas
4843   Klausner).
4845   https://bugs.freedesktop.org/show_bug.cgi?id=10226
4847 • Don't use unsupported visibility attribute "hidden" on Solaris
4848   (Gilles Dauphin, Thomas Klausner).
4850   https://bugs.freedesktop.org/show_bug.cgi?id=10227
4852 Optimization
4853 ------------
4854 • It was Behdad that suggested we focus strictly on bug fixes now that
4855   we shipped so many performance improvements in 1.4.0, but it was
4856   also Behdad that got distracted by the chance to remove a lot of
4857   mallocs from cairo. Paths, gstates, trapezoids, splines, polygons,
4858   and gradient color stops will now use small, stack-allocated buffers
4859   in the most common cases rather than calling malloc as
4860   often. (Behdad Esfahbod). And look for more from Mathias Hasselmann
4861   soon.
4863 Release 1.4.0 (2007-03-06 Carl Worth <cworth@cworth.org>)
4864 =========================================================
4865 The many people[*] who have been working hard on cairo are very
4866 pleased to announce the long-awaited release of cairo 1.4. This
4867 release comes 4 months after the last stable update release (1.2.6)
4868 and 9 months since the initial release of 1.2.0.
4870 The release notes below are intended to capture the highlights of the
4871 changes that have occurred from the 1.2 series to the new 1.4.0
4872 release.
4874 Performance improvements
4875 ------------------------
4876 Within the cairo project, the last 6 months or so has seen an intense
4877 effort focusing on the performance of cairo itself. That effort has
4878 paid off considerably, as can be seen in the following highlights of
4879 some of the performance differences from cairo 1.2.6 to cairo 1.4.0.
4881 (Note: The performance results reported here were measured on an x86
4882 laptop. Many of the improvements in 1.4---particular those involving
4883 text rendering---are even more dramatic on embedded platforms without
4884 hardware floating-point units. Such devices played an important part
4885 of many of the optimizations that found their way into cairo over the
4886 last few months.)
4888 • Dramatic improvement when drawing objects that are mostly off-screen
4889   with the image backend (with the xlib backend this case is still
4890   slow due to an X server bug):
4892   image-rgba       long-lines-uncropped-100  479.64 ->  4.98: 96.24x speedup
4893   ███████████████████████████████████████████████▋
4895 • Dramatic improvement when copying a small fraction of an image
4896   surface to an xlib surface:
4898    xlib-rgba              subimage_copy-512    3.93 ->  0.07: 54.52x speedup
4899   ██████████████████████████▊
4901 • Dramatic improvement to tessellation speed for complex objects:
4903   image-rgb              tessellate-256-100  874.16 -> 34.79: 25.13x speedup
4904   ████████████▏
4905    xlib-rgba        zrusin_another_fill-415  148.40 -> 13.85: 10.72x speedup
4906   ████▉
4907    xlib-rgb                  world_map-800  680.20 -> 345.54:  1.97x speedup
4908   ▌
4910 • Dramatic improvement to the speed of stroking rectilinear shapes,
4911   (such as the outline of a rectangle or "box"):
4913   image-rgb          box-outline-stroke-100    0.18 ->  0.01: 24.22x speedup
4914   ███████████▋
4915    xlib-rgb          box-outline-stroke-100    0.46 ->  0.06:  8.05x speedup
4916   ███▌
4919 • Dramatic improvements to text rendering speeds:
4921    xlib-rgba       text_image_rgba_over-256   63.12 ->  9.61:  6.57x speedup
4922   ██▊
4924 • 3x improvements to floating-point to fixed-point conversion speeds:
4926   image-rgba      pattern_create_radial-16     9.29 ->  3.44:  2.70x speedup
4927   ▉
4929 • 2x improvements to linear gradient computation:
4931   image-rgb     paint_linear_rgb_source-512   26.22 -> 11.61:  2.26x speedup
4932   ▋
4934 • 2x improvement to a case common in PDF rendering:
4936   image-rgb              unaligned_clip-100    0.10 ->  0.06:  1.81x speedup
4937   ▍
4939 • 1.3x improvement to rectangle filling speed (note: this improvement
4940   is new since 1.3.16---previously this test case was a 1.3x slowdown
4941   compared to 1.2.6):
4943   image-rgba                 rectangles-512    6.19 ->  4.37:  1.42x speedup
4944   ▎
4945   xlib-rgba                  rectangles-512    7.48 ->  5.58:  1.34x speedup
4946   ▏
4948 NOTE: In spite of our best efforts, there are some measurable
4949 performance regressions in 1.4 compared to 1.2. It appears that the
4950 primary problem is the increased overhead of the new tessellator when
4951 drawing many, very simple shapes. The following test cases capture
4952 some of that slowdown:
4954   image-rgba    mosaic_tessellate_lines-800   11.03 -> 14.29:  1.30x slowdown
4955   ▏
4956   image-rgba           box-outline-fill-100    0.01 ->  0.01:  1.26x slowdown
4957   ▏
4958   image-rgba        fill_solid_rgb_over-64     0.20 ->  0.22:  1.12x slowdown
4960   image-rgba       fill_image_rgba_over-64     0.23 ->  0.25:  1.10x slowdown
4962    xlib-rgb     paint_image_rgba_source-256    3.24 ->  3.47:  1.07x slowdown
4964 We did put some special effort into eliminating this slowdown for the
4965 very common case of drawing axis-aligned rectangles with an identity
4966 matrix (see the box-outline-stroke and rectangles speedup numbers
4967 above). Eliminating the rest of this slowdown will be a worthwhile
4968 project going forward.
4970 Also note that the "box-outline-fill" case is a slowdown while
4971 "box-outline-stroke" is a (huge) speedup. These two test cases
4972 resulted from the fact that some GTK+ theme authors were filling
4973 between two rectangles to avoid slow performance from the more natural
4974 means of achieving the same shape by stroking a single rectangle. With
4975 1.4 that workaround should definitely be eliminated as it will now
4976 cause things to perform more slowly.
4978 Greatly improved PDF output
4979 ---------------------------
4980 We are very happy to be able to announce that cairo-generated PDF
4981 output will now have text that can be selected, cut-and-pasted, and
4982 searched with most capable PDF viewer applications. This is something
4983 that was not ever possible with cairo 1.2.
4985 Also, the PDF output now has much more compact encoding of text than
4986 before. Cairo is now much more careful to not embed multiple copies of
4987 the same font at different sizes. It also compresses text and font
4988 streams within the PDF output.
4990 API additions
4991 -------------
4992 There are several new functions available in 1.4 that were not
4993 available in 1.2. Curiously, almost all of the new functions simply
4994 allow the user to query state that has been set in cairo (many new
4995 "get" functions) rather than providing any fundamentally new
4996 operations. The new functionality is:
4998 • Getting information about the current clip region
5000   cairo_clip_extents
5001   cairo_copy_clip_rectangle_list
5002   cairo_rectangle_list_destroy
5004 • Getting information about the current dash setting
5006   cairo_get_dash_count
5007   cairo_get_dash
5009 • Getting information from a pattern
5011   cairo_pattern_get_rgba
5012   cairo_pattern_get_surface
5013   cairo_pattern_get_color_stop_rgba
5014   cairo_pattern_get_color_stop_count
5015   cairo_pattern_get_linear_points
5016   cairo_pattern_get_radial_circles
5018 • Getting the current scaled font
5020   cairo_get_scaled_font
5022 • Getting reference counts
5024   cairo_get_reference_count
5025   cairo_surface_get_reference_count
5026   cairo_pattern_get_reference_count
5027   cairo_font_face_get_reference_count
5028   cairo_scaled_font_get_reference_count
5030 • Setting/getting user data on objects
5032   cairo_set_user_data
5033   cairo_get_user_data
5034   cairo_pattern_set_user_data
5035   cairo_pattern_get_user_data
5036   cairo_scaled_font_set_user_data
5037   cairo_scaled_font_get_user_data
5039 • New cairo-win32 functions:
5041   cairo_win32_surface_create_with_ddb
5042   cairo_win32_surface_get_image
5043   cairo_win32_scaled_font_get_logical_to_device
5044   cairo_win32_scaled_font_get_device_to_logical
5046 API deprecation
5047 ---------------
5048 The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
5049 worked as a format value for cairo_image_surface_create, and it wasn't
5050 necessary for supporting 16-bit 565 X server visuals.
5052 A sampling of bug fixes in cairo 1.4
5053 ------------------------------------
5054   • Fixed radial gradients
5055   • Fixed dashing (degenerate and "leaky" cases)
5056   • Fixed transformed images in PDF/PS output (eliminate bogus repeating)
5057   • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
5058   • cairo_show_page no longer needed for single-page output
5059   • SVG: Fix bug preventing text from appearing in many viewers
5060   • cairo-ft: Return correct metrics when hinting is off
5061   • Eliminate crash in cairo_create_similar if nil surface is returned
5062   • Eliminate crash after INVALID_RESTORE error
5063   • Fix many bugs related to multi-threaded use and locking
5064   • Fix for glyph spacing 32 times larger than desired (cairo-win32)
5065   • Fixed several problems in cairo-atsui (assertion failures)
5066   • Fix PDF output to avoid problems when printing from Acrobat Reader
5067   • Fix segfault on Mac OS X (measuring a zero-length string)
5068   • Fix text extents to not include the size of non-inked characters
5069   • Fix for glyph cache race condition in glitz backend (Jinghua Luo)
5070   • Fix make check to work on OPD platforms (IA64 or PPC64)
5071   • Fix compilation problems of cairo "wideint" code on some platforms
5072   • Many, many others...
5074 Experimental backends (quartz, XCB, OS/2, BeOS, directfb)
5075 ---------------------------------------------------------
5076 None of cairo's experimental backends are graduating to "supported"
5077 status with 1.4.0, but two of them in particular (quartz and xcb), are
5078 very close.
5080 The quartz baceknd has been entirely rewritten and is now much more
5081 efficient. The XCB backend has been updated to track the latest XCB
5082 API (which recently had a 1.0 release).
5084 We hope to see these backends become supported in a future release,
5085 (once they are passing all the tests in cairo's test suite).
5087 The experimental OS/2 backend is new in cairo 1.4 compared to cairo
5088 1.2.
5090 Documentation improvements
5091 --------------------------
5092 We have added documentation for several functions and types that
5093 were previously undocumented, and improved documentation on other
5094 ones.  As of this release, there remain only two undocumented
5095 symbols: cairo_filter_t and cairo_operator_t.
5097 [*]Thanks to everyone
5098 ---------------------
5099 I've accounted for 41 distinct people with attributed code added to
5100 cairo between 1.2.6 and 1.4.0, (their names are below). That's an
5101 impressive number, but there are certainly dozens more that
5102 contributed with testing, suggestions, clarifying questions, and
5103 encouragement. I'm grateful for the friendships that have developed as
5104 we have worked on cairo together. Thanks to everyone for making this
5105 all so much fun!
5107 Adrian Johnson, Alfred Peng, Alp Toker, Behdad Esfahbod,
5108 Benjamin Otte, Brian Ewins, Carl Worth, Christian Biesinger,
5109 Christopher (Monty) Montgomery, Daniel Amelang, Dan Williams,
5110 Dave Yeo, David Turner, Emmanuel Pacaud, Eugeniy Meshcheryakov,
5111 Frederic Crozat, Hans Breuer, Ian Osgood, Jamey Sharp, Jeff Muizelaar,
5112 Jeff Smith, Jinghua Luo, Jonathan Watt, Joonas Pihlaja, Jorn Baayen,
5113 Kalle Vahlman, Kjartan Maraas, Kristian Høgsberg, M Joonas Pihlaja,
5114 Mathias Hasselmann, Mathieu Lacage, Michael Emmel, Nicholas Miell,
5115 Pavel Roskin, Peter Weilbacher, Robert O'Callahan,
5116 Soren Sandmann Pedersen, Stuart Parmenter, T Rowley,
5117 Vladimir Vukicevic
5119 Snapshot 1.3.16 (2007-03-02 Carl Worth <cworth@cworth.org>)
5120 ===========================================================
5121 New API functions
5122 -----------------
5123 A few new public functions have been added to the cairo API since the
5124 1.3.14 snapshot. These include a function to query the current scaled
5125 font:
5127         cairo_get_scaled_font
5129 New functions to query the reference count of all cairo objects:
5131         cairo_get_reference_count
5133         cairo_surface_get_reference_count
5134         cairo_pattern_get_reference_count
5136         cairo_font_face_get_reference_count
5137         cairo_scaled_font_get_reference_count
5139 And new functions to allow the use of user_data with any cairo object,
5140 (previously these were only available on cairo_surface_t and
5141 cairo_font_face_t objects):
5143         cairo_set_user_data
5144         cairo_get_user_data
5146         cairo_pattern_set_user_data
5147         cairo_pattern_get_user_data
5149         cairo_scaled_font_set_user_data
5150         cairo_scaled_font_get_user_data
5152 Usability improvement for PDF/PS/SVG generation
5153 -----------------------------------------------
5154 In previous versions of cairo, generating single-page output with the
5155 cairo-pdf, cairo-ps, or cairo-svg backends required a final call to
5156 cairo_show_page. This was often quite confusing as people would port
5157 functional code from a non-paginated backend and be totally mystified
5158 as to why the output was blank until they learned to add this call.
5160 Now that call to cairo_show_page is optional, (it will be generated
5161 implicitly if the user does not call it). So cairo_show_page is only
5162 needed to explicitly separate multiple pages.
5164 Greatly improved PDF output
5165 ---------------------------
5166 We are very happy to be able to announce that cairo-generated PDF
5167 output will now have text that can be selected, cut-and-paste, and
5168 searched with most capable PDF viewer applications. This is something
5169 that was not ever possible with cairo 1.2.
5171 Also, the PDF output now has much more compact encoding of text than
5172 before. Cairo is now much more careful to not embed multiple copies of
5173 the same font at different sizes. It also compresses text and font
5174 streams within the PDF output.
5176 Major bug fixes
5177 ---------------
5178   • Fixed radial gradients
5180     The rendering of radial gradients has been greatly improved. In
5181     the cairo 1.2 series, there was a serious regression affecting
5182     radial gradients---results would be very incorrect unless one of
5183     the gradient circles had a radius of 0.0 and a center point within
5184     the other circle. These bugs have now been fixed.
5186   • Fixed dashing
5188     Several fixes have been made to the implementation of dashed
5189     stroking. Previously, some dashed, stroked rectangles would
5190     mis-render and fill half of the rectangle with a large triangular
5191     shape. This bug has now been fixed.
5193   • Fixed transformed images in PDF/PS output
5195     In previous versions of cairo, painting with an image-based source
5196     surface pattern to the PDF or PS backends would cause many kinds
5197     of incorrect results. One of the most common problems was that an
5198     image would be repeated many times even when the user had
5199     explicitly requested no repetition with CAIRO_EXTEND_NONE. These
5200     bugs have now been fixed.
5202   • Eliminate errors from CAIRO_EXTEND_REFLECT and CAIRO_EXTEND_PAD
5204     In the 1.2 version of cairo any use of CAIRO_EXTEND_REFLECT or
5205     CAIRO_EXTEND_PAD with a surface-based pattern resulted in an
5206     error, (cairo would stop rendering). This bug has now been
5207     fixed.
5209     Now, CAIRO_EXTEND_REFLECT should work properly with surface
5210     patterns.
5212     CAIRO_EXTEND_PAD is still not working correctly, but it will now
5213     simply behave as CAIRO_EXTEND_NONE rather than triggering the
5214     error.
5216 New rewrite of quartz backend (still experimental)
5217 --------------------------------------------------
5218 Cairo's quartz backend has been entirely rewritten and is now much
5219 more efficient. This backend is still marked as experimental, not
5220 supported, but it is now much closer to becoming an officially
5221 supported backend. (For people that used the experimental nquartz
5222 backend in previous snapshots, that implementation has now been
5223 renamed from "nquartz" to "quartz" and has replaced the old quartz
5224 backend.)
5226 Documentation improvements
5227 --------------------------
5228 We have added documentation for several functions and types that
5229 were previously undocumented, and improved documentation on other
5230 ones.  As of this release, there remain only two undocumented
5231 symbols: cairo_filter_t and cairo_operator_t.
5233 Other bug fixes
5234 ---------------
5235   • cairo-svg: Fix bug that was preventing text from appearing in many
5236     viewers
5238   • cairo-ft: Return correct metrics when hinting is off
5240   • Cairo 1.3.14 deadlocks in cairo_scaled_font_glyph_extents or
5241     _cairo_ft_unscaled_font_lock_face
5243     https://bugs.freedesktop.org/show_bug.cgi?id=10035
5245   • cairo crashes in cairo_create_similar if nil surface returned by
5246     other->backend->create_similar
5248     https://bugs.freedesktop.org/show_bug.cgi?id=9844
5250   • evolution crash in _cairo_gstate_backend_to_user()
5251     https://bugs.freedesktop.org/show_bug.cgi?id=9906
5253   • Fix memory leak in rectilinear stroking code
5255 Things not in this release
5256 --------------------------
5257   • Solid-surface-pattern cache: This patch had been applied during
5258     the 1.3.x series, but it was reverted due to some inter-thread
5259     problems it caused. The patch is interesting since it made a big
5260     benefit for text rendering performance---so we'll work to bring a
5261     corrected version of this patch back as soon as possible.
5263 Snapshot 1.3.14 (2006-02-13 Carl Worth <cworth@cworth.org>)
5264 ===========================================================
5265 This is the seventh development snapshot in the 1.3 series, (and there
5266 likely won't be many more before the 1.4.0 release). It comes just
5267 over 3 weeks after the 1.3.12 snapshot.
5269 Since we're so close to the 1.4.0 release, there are not a lot of new
5270 features nor even a lot of new performance improvements in this
5271 snapshot. Instead, there are a great number of bug fixes. Some are
5272 long-standing bugs that we're glad to say goodbye to, and several are
5273 fixes for regressions that were introduced as part of the optimization
5274 efforts during the 1.3.x series.
5276 PDF text selection fixed
5277 ------------------------
5278 The inability to correctly select text in cairo-generated PDF has been
5279 a defect ever since the initial support for the PDF backend in the
5280 cairo 1.2.0 release. With the 1.3.14 snapshot, in most situations, and
5281 with most PDF viewer applications, the PDF generated by cairo will
5282 allow text to be correctly selected for copy-and-paste, (as well as
5283 searching).
5285 We're very excited about this new functionality, (and very grateful to
5286 Adrian Johnson, Behdad Esfahbod, and others that have put a lot of
5287 work into this lately). Please test this new ability and give feedback
5288 on the cairo@cairographics.org list.
5290 Many thread-safety issues fixed
5291 -------------------------------
5292 We've discovered that no release of cairo has ever provided safe text
5293 rendering from a multi-threaded application. With the 1.3.14 snapshot
5294 a huge number of the bugs in this area have been fixed, and multiple
5295 application dvelopers have now reported success at writing
5296 multi-threaded applications with cairo.
5298 Other fixes
5299 -----------
5300 Fixed a bug that was causing glyph spacing to be 32 times larger than
5301 desired when using cairo-win32.
5303 Fixed a regression in the rendering of linear gradients that had been
5304 present since the 1.3.8 snapshot.
5306 Fixed several problems in cairo-atsui that were leading to assertion
5307 failures when rendering text.
5309 Fix corrupted results when rendering a transformed source image
5310 surface to an xlib surface. This was a regression that had been
5311 present since the 1.3.2 snapshot.
5313 Fixed PDF output to prevent problems printing from some versions of
5314 Acrobat Reader, (a single glyph was being substituted for every
5315 glyph).
5317 And many other fixes as well, (see the logs for details).
5319 Snapshot 1.3.12 (2007-01-20 Carl Worth <cworth@cworth.org>)
5320 ===========================================================
5321 The relentless march toward the cairo 1.4 release continues, (even if
5322 slightly late out of the starting blocks in 2007). This is the sixth
5323 development snapshot in the 1.3 series. It comes 4 weeks after the
5324 1.3.10 snapshot.
5326 Performance
5327 -----------
5328 As usual, this snapshot has some fun performance improvements to show
5329 off:
5331 image-rgba long-lines-uncropped-100  470.08 -> 4.95: 94.91x speedup
5332 ███████████████████████████████████████████████
5333 image-rgb  long-lines-uncropped-100  461.60 -> 4.96: 93.02x speedup
5334 ██████████████████████████████████████████████
5336 This 100x improvement, (and yes, that's 100x, not 100%), in the image
5337 backend occurs when drawing large shapes where only a fraction of the
5338 shape actually appears in the final result, (the rest being outside
5339 the bounds of the destination surface). Many applications should see
5340 speedups here, and the actual amount of speedup depends on the ratio
5341 of non-visible to visible portions of geometry.
5343 [Note: There remains a similar performance bug when drawing mostly
5344 non-visible objects with the xlib backend. This is due to a similar
5345 bug in the X server itself, but we hope a future cairo snapshot will
5346 workaround that bug to get a similar speedup with the xlib backend.]
5348 image-rgba       unaligned_clip-100    0.09 -> 0.06:  1.67x speedup
5350 image-rgb        unaligned_clip-100    0.09 -> 0.06:  1.66x speedup
5353 This speedup is due to further MMX optimization by Soeren Sandmann for
5354 a case commonly hit when rendering PDF files, (and thanks to Jeff
5355 Muizelaar for writing code to extract the test case for us).
5357 There's another MMX optimization in this snapshot (without a fancy
5358 speedup chart) by Dan Williams which improves compositing performance
5359 specifically for the OLPC machine.
5361 Thanks to Adrian Johnson, cairo's PDF output is now much more
5362 efficient in the way it encodes text output. By reducing redundant
5363 information and adding compression to text output streams, Adrian
5364 achieved a ~25x improvement in the efficiency of encoding text in PDF
5365 files, (was ~45 bytes per glyph and is now ~1.6 bytes per glyph).
5367 Bug fixes
5368 ---------
5369 In addition to those performance improvements, this snapshot includes
5370 several bug fixes:
5372  * A huge number of bug fixes for cairo-atsui text rendering, (for mac
5373    OS X). These bugs affect font selection, glyph positioning, glyph
5374    rendering, etc. One noteworthy bug fixes is that
5375    cairo_select_font_face will no longer arbitrarily select bold nor
5376    italic when not requested, (at least not when using a standard CSS2
5377    font family name such as "serif", "sans-serif", "monospace", etc.).
5378    All these fixes are thanks to Brian Ewins who continues to do a
5379    great job as the new cairo-atsui maintainer.
5381  * Fix PDF output so that images that are scaled down no longer
5382    mysteriously repeat (Carl Worth).
5384  * Fix segfault on Mac OS X dues to attempt to measure extents of a
5385    zero-length string (Behdad Esfahbod).
5387  * Fix text extents to not include the size of initial/trailing
5388    non-inked characters (Behdad Esfahbod).
5390 API tweaks
5391 ----------
5392 Three functions have had API changes to improve consistency. Note that
5393 the API functions being changed here are all functions that were
5394 introduced as new functions during these 1.3.x snapshots. As always,
5395 there will not be any API changes to functions included in a major
5396 release (1.2.x, 1.4.x, etc.) of cairo.
5398 The changes are as follows:
5400  * Rename of cairo_copy_clip_rectangles to cairo_copy_clip_rectangle_list.
5402  * Change cairo_get_dash_count to return an int rather than accepting a
5403    pointer to an int for the return value.
5405  * Change cairo_get_dash to have a void return type rather than
5406    returning cairo_status_t.
5408 It's possible there will be one more round of changes to these
5409 functions, (and perhaps cairo_get_color_stop as well), as we seek to
5410 establish a unifying convention for returning lists of values.
5412 Snapshot 1.3.10 (2006-12-23 Carl Worth <cworth@cworth.org>)
5413 ===========================================================
5414 Santa Claus is coming just a little bit early this year, and he's
5415 bringing a shiny new cairo snapshot for all the good little boys and
5416 girls to play with.
5418 This is the fifth development snapshot in the 1.3 series. It comes 9
5419 days after the 1.3.8 snapshot, and still well within our goal of
5420 having a new snapshot every week, (though don't expect one next
5421 week---we'll all be too stuffed with sugar plums).
5423 Speaking of sugar plums, there's a sweet treat waiting in this cairo
5424 snapshot---greatly improved performance for stroking rectilinear
5425 shapes, like the ever common rectangle:
5427 image-rgb          box-outline-stroke-100 0.18 -> 0.01: 25.58x speedup
5428 ████████████████████████▋
5429 image-rgba         box-outline-stroke-100 0.18 -> 0.01: 25.57x speedup
5430 ████████████████████████▋
5431 xlib-rgb          box-outline-stroke-100 0.49 -> 0.06:  8.67x speedup
5432 ███████▋
5433 xlib-rgba         box-outline-stroke-100 0.22 -> 0.04:  5.39x speedup
5434 ████▍
5436 In past releases of cairo, some people had noticed that using
5437 cairo_stroke to draw rectilinear shapes could be awfully slow. Many
5438 people had worked around this by using cairo_fill with a more complex
5439 path and gotten a 5-15x performance benefit from that.
5441 If you're one of those people, please rip that workaround out, as now
5442 the more natural use of cairo_stroke should be 1.2-2x faster than the
5443 unnatural use of cairo_fill.
5445 And if you hadn't ever implemented that workaround, then you just
5446 might get to see your stroked rectangles now get drawn 5-25x faster.
5448 Beyond that performance fix, there are a handful of bug fixes in this
5449 snapshot:
5451  * Fix for glyph cache race condition in glitz backend (Jinghua Luo)
5453  * Many fixes for ATSUI text rendering (Brian Ewins)
5455  * Un-break recent optimization-triggered regression in rendering text
5456    with a translation in the font matrix (Behdad Esfahbod)
5458  * Fix make check to work on OPD platforms (IA64 or PPC64)
5459    (Frederic Crozat)
5461  * Fix a couple of character spacing issues on Windows
5462     (Jonathan Watt)
5464 Have fun with that, everybody, and we'll be back for more in the new
5465 year, (with a plan to add the last of our performance improvements in
5466 this round, fix a few bad, lingering bugs, and then finish off a nice,
5467 stable 1.4 release before the end of January).
5469 -Carl
5471 Snapshot 1.3.8 (2006-12-14 Carl Worth <cworth@cworth.org>)
5472 ==========================================================
5473 This is the fourth development snapshot in the 1.3 series. It comes
5474 just slightly more than one week after the 1.3.6 snapshot.
5476 After the bug fixes in 1.3.6, we're back to our original program of
5477 weekly snapshots, each one faster than the one from the week
5478 before. Cairo 1.3.8 brings a 2x improvement in the speed of rendering
5479 linear gradients (thanks to David Turner), and a significant reduction
5480 in X traffic when rendering text (thanks to Xan Lopez and Behdad
5481 Esfahbod), making cairo behave very much like Xft does.
5483 A few other things in the 1.3.8 snapshot worth noting include a more
5484 forgiving image comparator in the test suite, (using the "perceptual
5485 diff" metric and GPL implementation by Hector Yee[*]), a bug fix for
5486 broken linking on x86_64 (thanks to M Joonas Pihlaja) and an even
5487 better implementation of _cairo_lround, (not faster, but supporting a
5488 more complete input range), from Daniel Amelang.
5490 [*] http://pdiff.sourceforge.net/
5492 Snapshot 1.3.6 (2006-12-06 Carl Worth <cworth@cworth.org>)
5493 ==========================================================
5494 This is the third development snapshot in the 1.3 series. It comes two
5495 weeks after the 1.3.4 snapshot.
5497 We don't have fancy performance charts this week as the primary
5498 changes in this snapshot are bug fixes. The performance work continues
5499 and the next snapshot (planned for one week from today) should include
5500 several improvements. The bug fixes in this snapshot include:
5502  * Fix undesirable rounding in glyph positioning (Dan Amelang)
5504    This bug was noticed by several users, most commonly by seeing
5505    improper text spacing or scrambled glyphs as drawn by nautilus. For
5506    example:
5508         Update to cairo-1.3.4 worsen font rendering
5509         https://bugzilla.redhat.com/bugzilla/show_bug.cgi?id=217819
5511  * Fix reduced range of valid input coordinates to tessellator
5512    (M Joonas Pihlaja)
5514    This bug was causing lots of assertion failures in mozilla as
5515    mentioned here:
5517         CAIRO_BO_GUARD_BITS and coordinate space?
5518         https://lists.freedesktop.org/archives/cairo/2006-December/008743.html
5520  * Fix several regressions in new tessellator (M Joonas Pihlaja)
5522    Joonas just had a good eye for detail here. I don't think any
5523    external cairo users had noticed any of these bugs yet.
5525  * Fix compilation problems of cairo "wideint" code on some platforms
5526    (Mathieu Lacage)
5528  * Fix failed configure due to broken grep (Dan Amelang)
5530    This bug was reported here:
5532         AX_C_FLOAT_WORDS_BIGENDIAN doesn't work because grep doesn't
5533         work with binary file
5534         https://bugs.freedesktop.org/show_bug.cgi?id=9124
5536  * Remove the pkg-config minimum version requirement (Behdad Esfahbod)
5538    Some systems ship with pkg-config 0.15 and there was really no good
5539    reason for cairo to insist on having version 0.19 before it would
5540    build.
5542 There is also one new (but inert) feature in this snapshot. There's a
5543 new option that can be passed to cairo's configure script:
5545         --disable-some-floating-point
5547         Disable certain code paths that rely heavily on double precision
5548         floating-point calculation. This option can improve
5549         performance on systems without a double precision floating-point
5550         unit, but might degrade performance on those that do.
5552 As of this snapshot, this option does not make any change to cairo,
5553 but it is possible that future versions of cairo will respect this
5554 option and change the implementation of various functions as
5555 appropriate.
5557 Snapshot 1.3.4 (2006-11-22 Carl Worth <cworth@cworth.org>)
5558 ==========================================================
5559 This is the second development snapshot in the 1.3 series. It comes
5560 one week after the 1.3.2 snapshot.
5562 This snapshot has a couple of significant performance improvements,
5563 and also adds new support for producing multi-page SVG output, (when
5564 targeting SVG 1.2)---thanks to Emmanuel Pacaud. The details of the
5565 performance improvements are as follows:
5567 1. The long-awaited "new tessellator".
5569    The credit for this being an improvement goes to Joonas Pihlaja. He
5570    took my really slow code and really put it through its paces to get
5571    the dramatic performance improvement seen below (up to 38x faster
5572    on realistic cases, and more than 10x faster for the zrusin_another
5573    test).
5575    His own writeup of the work he did is quite thorough, but more than
5576    can be quoted here. Please see his post for the interesting details:
5578    https://lists.freedesktop.org/archives/cairo/2006-November/008483.html
5580    (Though note that this snapshot also includes some additional,
5581    significant improvements that were only sketched out in that
5582    email---see "Generating fewer trapezoids").
5584 2. More floating-point improvements
5586    Daniel Amelang continues to work the magic he began in the 1.3.2
5587    snapshot. This time he short-circuits floating-point
5588    transformations by identity matrices and applies the earlier
5589    floating-to-fixed-point technique to the problem of rounding.
5591    The improvements here will primarily benefit text performance, and
5592    will benefit platforms without hardware floating-point more than
5593    those that have it, (some text tests show 20% improvement on an x86
5594    machine and closer to 80% improvement on arm).
5596 The performance chart comparing 1.3.2 to 1.3.4 really speaks for
5597 itself, (this is on an x86 laptop). This is quite a lot of progress
5598 for one week:
5600  xlib-rgb    stroke_similar_rgba_over-256   74.99 1.45% ->   2.03 68.38%: 36.86x speedup
5601 ███████████████████████████████████▉
5602  xlib-rgb  stroke_similar_rgba_source-256   78.23 1.43% ->   3.30 67.05%: 23.71x speedup
5603 ██████████████████████▊
5604  xlib-rgba             tessellate-256-100  820.42 0.15% ->  35.06 2.84%: 23.40x speedup
5605 ██████████████████████▍
5606 image-rgba             tessellate-256-100  819.55 0.32% ->  35.04 3.56%: 23.39x speedup
5607 ██████████████████████▍
5608  xlib-rgb      stroke_image_rgba_over-256   78.10 1.43% ->   4.33 65.56%: 18.04x speedup
5609 █████████████████
5610  xlib-rgb    stroke_image_rgba_source-256   80.11 1.63% ->   5.75 63.99%: 13.94x speedup
5611 █████████████
5612  xlib-rgba  zrusin_another_tessellate-415   89.22 0.35% ->   8.38 5.23%: 10.65x speedup
5613 █████████▋
5614 image-rgba  zrusin_another_tessellate-415   87.38 0.89% ->   8.37 5.22%: 10.44x speedup
5615 █████████▍
5616 image-rgba        zrusin_another_fill-415  117.67 1.34% ->  12.88 2.77%:  9.14x speedup
5617 ████████▏
5618  xlib-rgba        zrusin_another_fill-415  140.52 1.57% ->  15.79 2.88%:  8.90x speedup
5619 ███████▉
5620 image-rgba              tessellate-64-100    9.68 3.42% ->   1.42 0.60%:  6.82x speedup
5621 █████▉
5622  xlib-rgba              tessellate-64-100    9.78 4.35% ->   1.45 0.83%:  6.72x speedup
5623 █████▊
5624  xlib-rgb     stroke_linear_rgba_over-256   46.01 2.44% ->   7.74 54.51%:  5.94x speedup
5625 █████
5626  xlib-rgb   stroke_linear_rgba_source-256   48.09 2.15% ->   9.14 53.00%:  5.26x speedup
5627 ████▎
5628  xlib-rgb     stroke_radial_rgba_over-256   50.96 2.34% ->  12.46 47.99%:  4.09x speedup
5629 ███▏
5630  xlib-rgb   stroke_radial_rgba_source-256   53.06 1.57% ->  13.96 46.57%:  3.80x speedup
5631 ██▊
5632 image-rgba  paint_similar_rgba_source-256    0.12 1.57% ->   0.08 9.92%:  1.42x speedup
5634 image-rgba    paint_image_rgba_source-256    0.12 2.49% ->   0.08 10.70%:  1.41x speedup
5636 image-rgba                  world_map-800  356.28 0.46% -> 275.72 1.15%:  1.29x speedup
5638  xlib-rgba                  world_map-800  456.81 0.39% -> 357.95 1.39%:  1.28x speedup
5640 image-rgb               tessellate-16-100    0.09 0.57% ->   0.07 3.43%:  1.23x speedup
5642 image-rgba              tessellate-16-100    0.09 0.06% ->   0.07 2.46%:  1.23x speedup
5644 image-rgba        text_solid_rgb_over-256    5.39 4.01% ->   4.47 0.70%:  1.21x speedup
5646 image-rgba       text_solid_rgba_over-256    5.37 0.82% ->   4.45 0.75%:  1.21x speedup
5648 image-rgba        text_image_rgb_over-64     0.78 0.10% ->   0.65 0.74%:  1.20x speedup
5650 image-rgba       text_image_rgba_over-64     0.78 0.29% ->   0.65 0.68%:  1.19x speedup
5652 image-rgb         text_solid_rgb_over-64     0.76 2.45% ->   0.63 0.81%:  1.19x speedup
5654 image-rgba       text_solid_rgba_over-64     0.76 0.33% ->   0.64 0.66%:  1.19x speedup
5656 image-rgba     text_similar_rgba_over-256    5.99 4.72% ->   5.04 1.09%:  1.19x speedup
5659 We should point out that there is some potential for slowdown in this
5660 snapshot. The following are the worst slowdowns reported by the cairo
5661 performance suite when comparing 1.3.2 to 1.3.4:
5663 image-rgba              subimage_copy-256    0.01 0.87% ->   0.01 3.61%:  1.45x slowdown
5665  xlib-rgb        paint_solid_rgb_over-256    0.31 10.23% ->   0.38 0.33%:  1.26x slowdown
5667 image-rgba           box-outline-fill-100    0.01 0.30% ->   0.01 2.52%:  1.21x slowdown
5669 image-rgba        fill_solid_rgb_over-64     0.20 1.22% ->   0.22 1.59%:  1.12x slowdown
5671 image-rgb       fill_similar_rgb_over-64     0.21 1.04% ->   0.24 1.06%:  1.11x slowdown
5673 image-rgba        fill_image_rgb_over-64     0.21 1.19% ->   0.24 0.72%:  1.11x slowdown
5675 image-rgba      fill_similar_rgb_over-64     0.21 0.18% ->   0.24 0.30%:  1.11x slowdown
5677 image-rgb        fill_solid_rgba_over-64     0.22 1.66% ->   0.24 1.15%:  1.11x slowdown
5679 image-rgb         fill_image_rgb_over-64     0.21 0.14% ->   0.24 0.80%:  1.11x slowdown
5681 image-rgba       fill_image_rgba_over-64     0.22 1.34% ->   0.25 0.20%:  1.11x slowdown
5683 image-rgba       fill_solid_rgba_over-64     0.22 1.48% ->   0.24 0.95%:  1.11x slowdown
5685 image-rgb      fill_similar_rgba_over-64     0.22 1.13% ->   0.25 1.25%:  1.10x slowdown
5688 The 45% slowdown for subimage_copy is an extreme case. It's unlikely
5689 to hit many applications unless they often use cairo_rectangle;
5690 cairo_fill to copy a single pixel at a time. In any case, it shows a
5691 worst-case impact of the overhead of the new tessellator. The other
5692 slowdowns (~ 10%) are probably more realistic, and still very
5693 concerning.
5695 We will work to ensure that performance regressions like these are not
5696 present from one major release of cairo to the next, (for example,
5697 from 1.2 to 1.4).
5699 But we're putting this 1.3.4 snapshot out there now, even with this
5700 potential slowdown so that people can experiment with it. If you've
5701 got complex geometry, we hope you will see some benefit from the new
5702 tessellator. If you've got primarily simple geometry, we hope things
5703 won't slowdown too much, but please let us know what slowdown you see,
5704 if any, so we can calibrate our performance suite against real-world
5705 impacts.
5707 Thanks, and have fun with cairo!
5709 Snapshot 1.3.2 (2006-11-14 Carl Worth <cworth@cworth.org>)
5710 ==========================================================
5711 This is the first development snapshot since the 1.2 stable series
5712 branched off shortly after the 1.2.4 release in August 2006.
5714 This snapshot includes all the bug fixes from the 1.2.6 release,
5715 (since they originated here on the 1.3 branch first and were
5716 cherry-picked over to 1.2). But more importantly, it contains some new
5717 API in preparation for a future 1.4 release, and most importantly, it
5718 contains several performance improvements.
5720 The bug fixes will not be reviewed here, as most of them are already
5721 described in the 1.2.6 release notes. But details for the new API and
5722 some performance improvements are included here.
5724 As with all snapshots, this is experimental code, and the new API
5725 added here is still experimental and is not guaranteed to appear
5726 unchanged in any future release of cairo.
5728 API additions
5729 -------------
5730 Several new API additions are available in this release. There is a
5731 common theme among all the additions in that they allow cairo to
5732 advertise information about its state that it was refusing to
5733 volunteer earlier. So this isn't groundbreaking new functionality, but
5734 it is essential for easily achieving several tasks.
5736 The new functions can be divided into three categories:
5738         Getting information about the current clip region
5739         -------------------------------------------------
5740         cairo_clip_extents
5741         cairo_copy_clip_rectangles
5742         cairo_rectangle_list_destroy
5744         Getting information about the current dash setting
5745         --------------------------------------------------
5746         cairo_get_dash_count
5747         cairo_get_dash
5749         Getting information from a pattern
5750         ----------------------------------
5751         cairo_pattern_get_rgba
5752         cairo_pattern_get_surface
5753         cairo_pattern_get_color_stop_rgba
5754         cairo_pattern_get_color_stop_count
5755         cairo_pattern_get_linear_points
5756         cairo_pattern_get_radial_circles
5758 In each of these areas, we have new API for providing a list of
5759 uniform values from cairo. The closest thing we had to this before was
5760 cairo_copy_path, (which is rather unique in providing a list of
5761 non-uniform data).
5763 The copy_clip_rectangles/rectangle_list_destroy functions follow a
5764 style similar to that of cairo_copy_path. Meanwhile, the dash and
5765 pattern color stop functions introduce a new style in which there is a
5766 single call to return the number of elements available (get_dash_count
5767 and get_color_stop_count) and then a function to be called once to get
5768 each element (get_dash and get_color_stop_rgba).
5770 I'm interested in hearing feedback from users of these new API
5771 functions, particularly from people writing language bindings. One
5772 open question is whether the clip "getter" functionality should adopt
5773 a style similar to that of the new dash and color_stop interfaces.
5775 API deprecation
5776 ---------------
5777 The CAIRO_FORMAT_RGB16_565 enum value has been deprecated. It never
5778 worked as a format value for cairo_image_surface_create, and it wasn't
5779 necessary for supporting 16-bit 565 X server visuals.
5781 XCB backend changes
5782 -------------------
5783 The XCB backend has been updated to track the latest XCB API (which
5784 recently had a 1.0 release).
5786 New quartz backend
5787 ------------------
5788 Vladimir Vukicevic has written a new "native quartz" backend which
5789 will eventually replace the current "image-surface wrapping" quartz
5790 backend. For now, both backends are available, (the old one is
5791 "quartz" and the new one is "nquartz"). But it is anticipated that the
5792 new backend will replace the old one and take on the "quartz" name
5793 before this backend is marked as supported in a release of cairo.
5795 New OS/2 backend
5796 ----------------
5797 Doodle and Peter Weilbacher have contributed a new, experimental
5798 backend for using cairo on OS/2 systems.
5800 Performance improvements
5801 ------------------------
5802 Here are some highlights from cairo's performance suite showing
5803 improvements from cairo 1.2.6 to cairo 1.3.2. The command used to
5804 generate this data is:
5806         ./cairo-perf-diff 1.2.6 HEAD
5808 available in the perf/ directory of a recent checkout of cairo's
5809 source, (the cairo-perf-diff script does require a git checkout and
5810 will not work from a tar file---though ./cairo-perf can still be used
5811 to generate a single report there and ./cairo-perf-diff-files can be
5812 used to compare two reports).
5814 Results are described below both for an x86 laptop (with an old Radeon
5815 video card, recent X.org build, XAA, free software drivers), as well
5816 as for a Nokia 770. First the x86 results with comments on each, (all
5817 times are reported in milliseconds).
5819 Copying subsets of an image surface to an xlib surface (much faster)
5820 --------------------------------------------------------------------
5821  xlib-rgba              subimage_copy-512   10.50 ->   : 53.97x speedup
5822 █████████████████████████████████████████████████████
5824 Thanks to Christopher (Monty) Montgomery for this big performance
5825 improvement. Any application which has a large image surface and is
5826 copying small pieces of it at a time to an xlib surface, (imagine an
5827 application that loads a single image containing all the "sprites" for
5828 that application), will benefit from this fix. The larger the ratio of
5829 the image surface to the portion being copied, the larger the benefit.
5831 Floating-point conversion (3x faster)
5832 -------------------------------------
5833  xlib-rgba  pattern_create_radial-16    27.75 ->   3.93 :  2.94x speedup
5834 ██
5835 image-rgb   pattern_create_radial-16    26.06 ->   3.74 :  2.90x speedup
5836 █▉
5838 Thanks to Daniel Amelang, (and others who had contributed the idea
5839 earlier), for this nice improvement in the speed of converting
5840 floating-point values to fixed-point.
5842 Text rendering (1.3 - 2x faster)
5843 ------------------------------
5844  xlib-rgba text_image_rgba_source-256  319.73 ->  62.40 :  2.13x speedup
5845 █▏
5846 image-rgb    text_solid_rgba_over-64     2.85 ->   0.88 :  1.35x speedup
5849 I don't think we've ever set out to improve text performance
5850 specifically, but we did it a bit anyway. I believe the extra
5851 improvement in the xlib backend is due to Monty's image copying fix
5852 above, and the rest is due to the floating-point conversion speedup.
5854 Thin stroke improvements (1.5x faster)
5855 ---------------------------------------------
5856 image-rgb               world_map-800  1641.09 -> 414.77 :  1.65x speedup
5858  xlib-rgba              world_map-800  1939.66 -> 529.94 :  1.52x speedup
5861 The most modest stuff to announce in this release is the 50%
5862 improvement I made in the world_map case. This is in improvement that
5863 should help basically anything that is doing strokes with many
5864 straight line segments, (and the thinner the better, since that makes
5865 tessellation dominate rasterization). The fixes here are to use a
5866 custom quadrilateral tessellator rather than the generic tessellator
5867 for straight line segments and the miter joins.
5869 Performance results from the Nokia 770
5870 --------------------------------------
5871  xlib-rgba          subimage_copy-512     55.88 ->     2.04 : 27.34x speedup
5872 ██████████████████████████▍
5873  xlib-rgb     text_image_rgb_over-256   1487.58 ->   294.43 :  5.05x speedup
5874 ████
5875 image-rgb   pattern_create_radial-16     187.13 ->    91.86 :  2.04x speedup
5877  xlib-rgba              world_map-800  21261.41 -> 15628.02 :  1.36x speedup
5880 Here we see that the subimage_copy improvement was only about half as
5881 large as the corresponding improvement on my laptop, (27x faster
5882 compared to 54x) and the floating-point conversion fix also was quite
5883 as significant, (2x compared to 3x). Oddly the improvement to text
5884 rendering performance was more than twice as good (5x compared to
5885 2x). I don't know what the reason for that is, but I don't think it's
5886 anything anybody should complain about.
5888 Release 1.2.6 (2006-11-02 Behdad Esfahbod <behdad@behdad.org>)
5889 ==============================================================
5890 This is the third bug fix release in the 1.2 series, coming less than
5891 two months after the 1.2.4 release made on August 18.
5893 The 1.2.4 release turned out to be a pretty solid one, except for a crash
5894 bug when forwarding an X connection where the client and the server have
5895 varying byte orders, eg. from a PPC to an i686.  Other than that, various
5896 other small bugs have been fixed.
5898 Various improvements have been made in the testing infrastructure to prevent
5899 false positives, and to make sure the generated cairo shared object behaves as
5900 expected in terms of exported symbols and relocations.
5902 There were a total of 89 changes since 1.2.4.  The following list the most
5903 important ones:
5905 Common fixes
5906 ------------
5907 - Avoid unsigned loop control variable to eliminate infinite,
5908   memory-scribbling loop. (#7593)
5909 - Fix cairo_image_surface_create to report INVALID_FORMAT errors.
5910   Previously the detected error was being lost and a nil surface was
5911   returned that erroneously reported CAIRO_STATUS_NO_MEMORY.
5912 - Change _cairo_color_compute_shorts to not rely on any particular
5913   floating-point epsilon value. (#7497)
5914 - Fix infinite-join test case (bug #8379)
5915 - Pass correct surface to create_similar in _cairo_clip_init_deep_copy().
5917 PS/PDF fixes
5918 ------------
5919 - Fix Type 1 embedding in PDF.
5920 - Correct the value of /LastChar in the PDF Type 1 font dictionary.
5921 - Improve error checking in TrueType subsetting.
5922 - Compute right index when looking up left side bearing. (bug #8180)
5923 - Correct an unsigned to signed conversion problem in truetype subsetting
5924   bbox.
5925 - Type1 subsetting: Don't put .notdef in Encoding when there are 256 glyphs.
5926 - Add cairo version to PS header / PDF document info dictionary.
5927 - Set CTM before path construction.
5929 Win32 fixes
5930 -----------
5931 - Get correct unhinted outlines on win32. (bug 7603)
5932 - Make cairo as a win32 static library possible.
5933 - Use CAIRO_FORMAT_RGB24 for BITSPIXEL==32 surfaces too.
5935 Build system fixes
5936 ------------------
5937 - Define WINVER if it's not defined. (bug 6456)
5938 - Fix the AMD64 final link by removing SLIM from pixman.
5939 - Misc win32 compilation fixes.
5940 - Add Sun Pro C definition of pixman_private.
5941 - Use pixman_private consistently as prefix not suffix.
5942 - Added three tests check-plt.sh, check-def.sh, and check-header.sh that check
5943   that the shared object, the .def file, and the public headers agree about
5944   the exported symbols.
5945 - Require pkg-config 0.19. (#8686)
5948 Release 1.2.4 (2006-08-18 Carl Worth <cworth@cworth.org>)
5949 =========================================================
5950 This is the second bug fix release in the 1.2 series, coming less than
5951 two weeks after the 1.2.2 release made on August 8.
5953 The big motivation for a quick release was that there were a log of
5954 build system snags that people ran into with the 1.2.2 release. But,
5955 by the time we got those all done, we found that we had a bunch of
5956 fixes for cairo's rendering as well. So there's a lot of goodness in
5957 here for such a short time period.
5959 Rendering fixes
5960 ---------------
5961 Fix image surfaces to not be clipped when used as a source (Vladimir Vukicevic)
5962 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=72e25648c4c4bc82ddd938aa4e05887a293f0d8b
5964 Fix a couple of corner cases in dashing degenerate paths (Jeff Muizelaar)
5965 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=fbb1758ba8384650157b2bbbc93d161b0c2a05f0
5967 Fix support for type1 fonts on win32 (Adrian Johnson)
5968 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=da1019c9138695cb838a54f8b871bbfd0e8996d7
5970 Fix assertion failure when rotating bitmap fonts (Carl Worth)
5971 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=0bfa6d4f33b8ddb5dc55bbe419c15df4af856ff9
5973 Fix assertion failure when calling cairo_text_path with bitmap fonts (Carl Worth)
5974 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=9878a033531e6b96b5f27e69e10e90dee7440cd9
5976 Fix mis-handling of cairo_close_path in some situations (Tim Rowley, Carl Worth)
5977 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=53f74e59faf1af78f2f0741ccf1f23aa5dad4efc
5979 Respect font_matrix translation in _cairo_gstate_glyph_path (Behdad Esfahbod)
5980 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=f183b835b111d23e838889178aa8106ec84663b3
5982 Fix vertical metrics adjustment to work with non-identity shapes (Behdad Esfahbod)
5983 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7bc263842a798d657a95e539e1693372448837f
5985 [PS] Set correct ImageMatrix in _cairo_ps_surface_emit_bitmap_glyph_data (Behdad Esfahbod)
5986 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=d47388ad759b0a1a0869655a87d9b5eb6ae2445d
5988 Build system fixes
5989 ------------------
5990 Fix xlib detection to prefer pkg-config to avoid false libXt dependency (Behdad Esfahbod)
5991 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=0e78e7144353703cbd28aae6a67cd9ca261f1d68
5993 Fix typos causing win32 build problem with PS,PDF, and SVG backends (Behdad Esfahbod)
5994 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=aea83b908d020e26732753830bb3056e6702a774
5996 Fix configure cache to not use stale results (Behdad Esfahbod)
5997 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=6d0e3260444a2d5b6fb0cb223ac79f1c0e7b3a6e
5999 Fix to not pass unsupported warning options to the compiler (Jens Granseuer)
6000 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=97524a8fdb899de1ae4a3e920fb7bda6d76c5571
6002 Fix to allow env. variables such as png_REQUIRES to override configure detection (Jens Granseuer)
6003 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=abd16e47d6331bd3811c908e524b4dcb6bd23bf0
6005 Fix test suite to not use an old system cairo when converting svg2png (Behdad Esfahbod)
6006 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=6122cc85c8f71b1ba2df3ab86907768edebe1781
6008 Fix test suite to not require signal.h to be present (Behdad Esfahbod)
6009 https://gitweb.freedesktop.org/?p=cairo;a=commit;h=6f8cf53b1e1ccdbe1ab6a275656b19c6e5120e40
6011 Code cleanups
6012 -------------
6013 Many useful warnings cleanups from sparse, valgrind, and careful eyes
6014 (Kjartan Maraas, Pavel Roskin)
6016 Release 1.2.2 (2006-08-08 Carl Worth <cworth@cworth.org>)
6017 =========================================================
6018 This is the first bug fix release in the 1.2 series since the original
6019 1.2.0 release made six weeks ago.
6021 There were some very serious bugs in the 1.2.0 release, (see below),
6022 so everybody is encouraged to upgrade from 1.2.0 to 1.2.2. The 1.2.2
6023 release maintains source and binary compatibility with 1.2.0 and does
6024 not make any API additions.
6026 Fix crashes with BGR X servers
6027 ------------------------------
6028 With cairo 1.2.0 many people reported problems with all cairo-using
6029 programs, (including all GTK+ programs with GTK+ >= 2.8) immediately
6030 crashing with a complaint about an unsupported image format. This bug
6031 affected X servers that do not provide the Render extension and that
6032 provide a visual with BGR rather than RGB channel order.
6034 report: https://bugs.freedesktop.org/show_bug.cgi?id=7294
6035 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=9ae66174e774b57f16ad791452ed44efc2770a59
6037 Fix the "disappearing text" bug
6038 -------------------------------
6039 With cairo 1.2.0 many people reported that text would disappear from
6040 applications, sometimes reappearing with mouse motion or
6041 selection. The text would disappear after the first space in a string
6042 of text. This bug was caused by an underlying bug in (very common) X
6043 servers, and only affected text rendered without antialiasing, (either
6044 a bitmap font or a vector font with antialiasing disabled). The bug
6045 was also exacerbated by a KDE migration bug that caused antialiasing
6046 to be disabled more than desired.
6048 report: https://bugs.freedesktop.org/show_bug.cgi?id=7494
6049 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=456cdb3058f3b416109a9600167cd8842300ae14
6050 see also:
6051 Xorg:   https://bugs.freedesktop.org/show_bug.cgi?id=7681
6052 KDE:    http://qa.mandriva.com/show_bug.cgi?id=23990
6054 Fix broken image fallback scaling (aka. "broken printing")
6055 ----------------------------------------------------------
6056 The various "print" backends, (pdf, ps, and svg), sometimes fallback
6057 to using image-based rendering for some operations. In cairo 1.2.0
6058 these image fallbacks were scaled improperly. Applications using cairo
6059 can influence the resolution of the image fallbacks with
6060 cairo_surface_set_fallback_resolution. With the bug, any value other
6061 than 72.0 would lead to incorrect results, (larger values would lead
6062 to increasingly shrunken output).
6064 report: https://bugs.freedesktop.org/show_bug.cgi?id=7533
6065 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=1feb4291cf7813494355459bb547eec604c54ffb
6067 Fix inadvertent semantic change of font matrix translation (Behdad Esfahbod)
6068 ----------------------------------------------------------------------------
6069 The 1.2.0 release introduced an inadvertent change to how the
6070 translation components of a font matrix are interpreted. In the 1.0
6071 series, font matrix translation could be used to offset the glyph
6072 origin, (though glyph metrics were reported incorrectly in
6073 1.0). However in 1.2.0, the translation was applied to the advance
6074 values between each glyph. The 1.2.0 behavior is fairly useless in
6075 practice, and it was not intentional to introduce a semantic
6076 change. With 1.2.2 we return to the 1.0 semantics, with a much better
6077 implementation that provides correct glyph metrics.
6079 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=84840e6bba6e72aa88fad7a0ee929e8955ba9051
6081 Fix create_similar to preserve fallback resolution and font options (Behdad Esfahbod)
6082 -------------------------------------------------------------------------------------
6083 There has been a long-standing issue with cairo_surface_create_similar
6084 such that font options and other settings from the original
6085 destination surface would not be preserved to the intermediate
6086 "similar" surface. This could result in incorrect rendering
6087 (particularly with respect to text hinting/antialiasing) with
6088 fallbacks, for example.
6090 report: https://bugs.freedesktop.org/show_bug.cgi?id=4106
6091 fixes:  https://gitweb.freedesktop.org/?p=cairo;a=commit;h=9fcb3c32c1f16fe6ab913e27eb54d18b7d9a06b0
6092         https://gitweb.freedesktop.org/?p=cairo;a=commit;h=bdb4e1edadb78a2118ff70b28163f8bd4317f1ec
6094 xlib: Fix text performance regression from 1.0 to 1.2.0 (Vladimir Vukicevic)
6095 ----------------------------------------------------------------------------
6096 Several people noticed that upgrading from cairo 1.0 to cairo 1.2.0
6097 caused a significant performance regression when using the xlib
6098 backend. This performance regression was particularly noticeable when
6099 doing lots of text rendering and when using a high-latency connection
6100 to the X server, (such as a remote X server over an ssh
6101 connection). The slowdown was identified and fixed in 1.2.2.
6103 report: https://bugs.freedesktop.org/show_bug.cgi?id=7514
6104 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=b7191885c88068dad57d68ced69a752d1162b12c
6106 PDF: Eliminate dependency on FreeType library dependency (Adrian Johnson)
6107 -------------------------------------------------------------------------
6108 The cairo 1.2 series adds a supported pdf backend to cairo. In cairo
6109 1.2.0 this backend required the freetype library, which was an
6110 undesirable dependency on systems such as win32, (cairo is designed to
6111 always prefer the "native" font system). As of cairo 1.2.2 the
6112 freetype library is not required to use the pdf backend on the win32
6113 platform.
6115 report: https://bugs.freedesktop.org/show_bug.cgi?id=7538
6116 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=a0989f427be87c60415963dd6822b3c5c3781691
6118 PDF: Fix broken output on amd64 (Adrian Johnson)
6119 ------------------------------------------------
6120 report: https://bugzilla.gnome.org/show_bug.cgi?id=349826
6121 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=f4b12e497b7ac282b2f6831b8fb68deebc412e60
6123 PS: Fix broken output for truetype fonts > 64k (Adrian Johnson)
6124 ---------------------------------------------------------------
6125 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=067d97eb1793a6b0d0dddfbd0b54117844511a94
6127 PDF: Fix so that dashing doesn't get stuck on (Kent Worsnop)
6128 ------------------------------------------------------------
6129 Kent notices that with the PDF backend in cairo 1.2.0 as soon as a
6130 stroke was performed with dashing, all subsequent strokes would also
6131 be dashed. There was no way to turn dashing off again.
6133 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=778c4730a86296bf0a71080cf7008d7291792256
6135 Fix memory leaks in failure paths in gradient creation (Alfred Peng)
6136 --------------------------------------------------------------------
6137 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=db06681b487873788b51a6766894fc619eb8d8f2
6139 Fix memory leak in _cairo_surface_show_glyphs (Chris Wilson)
6140 ------------------------------------------------------------
6141 report: https://bugs.freedesktop.org/show_bug.cgi?id=7766
6142 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=e2fddcccb43d06486d3680a19cfdd5a54963fcbd
6144 Solaris: Add definition of cairo_private for some Sun compilers (Alfred Peng)
6145 -----------------------------------------------------------------------------
6146 report: https://bugzilla.mozilla.org/show_bug.cgi?id=341874
6147 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=04757a3aa8deeff3265719ebe01b021638990ec6
6149 Solaris: Change version number of Sun's Xorg server with buggy repeat (Brian Cameron)
6150 -------------------------------------------------------------------------------------
6151 report: https://bugs.freedesktop.org/show_bug.cgi?id=7483
6152 fix:    https://gitweb.freedesktop.org/?p=cairo;a=commit;h=e0ad1aa995bcec4246c0b8ab0d5a5a79871ce235
6154 Various memory leak fixes
6155 -------------------------
6156 Fix memory leak in _cairo_surface_show_glyphs (bug 7766)
6157 Fix file handle leak in failure path (bug 7616)
6158 Fix some memory leaks in the test cases.
6159 Fix some memory leaks in font subsetting code used in print backends.
6161 Documentation improvements (Behdad Esfahbod)
6162 --------------------------------------------
6163 Added new documentation for several functions (cairo_show_page,
6164 cairo_copy_page, cairo_in_stroke, cairo_in_fill).
6166 Fixed some syntax errors that were preventing some existing
6167 documentation from being published.
6169 Fixed several minor typographical errors.
6171 Added an index for new symbols in 1.2.
6173 Release 1.2.0 (2006-06-27 Carl Worth <cworth@cworth.org>)
6174 =========================================================
6175 This is the culmination of the work that has gone on within the 1.1
6176 branch of cairo.
6178 There has been one API addition since the cairo 1.1.10 snapshot:
6180         cairo_xlib_surface_get_width
6181         cairo_xlib_surface_get_height
6183 There's also a new feature without any API change:
6185         Dots can now be drawn by using CAIRO_LINE_CAP_ROUND with
6186         degenerate sub-paths, (cairo_move_to() followed by either
6187         cairo_close_path() or a cairo_line_to() to the same location).
6189 And at least the following bugs have been fixed:
6191  6759  fontconfig option AntiAlias doesn't work in cairo 1.1.2
6192  6955  Some characters aren't displayed when using xlib (cache u...
6193  7268  positive device_offset values don't work as source
6194  * PDF emit_glyph function needs to support bitmapped glyphs
6195  * PS emit_glyph function needs to support bitmapped glyphs
6196  * SVG emit_glyph function needs to support bitmapped glyphs
6197  * PDF: minefield page one is falling back unnecessarily
6198  * PS/PDF: Fix broken placement for vertical glyphs
6199  * PS: Fix to not draw BUTT-capped zero-length dash segments
6200  * Do device offset before float->fixed conversion
6201    https://bugzilla.gnome.org/show_bug.cgi?id=332266
6202  * PS: Fix source surfaces with transformations
6203  * PS: Fix to not draw BUTT-capped degenerate sub-paths
6204  * PS: Don't walk off end of array when printing "~>"
6205  * Fix some memory leaks in the test suite rig
6206  * SVG: Fix memory leak when using cairo_mask
6207  * Fix EXTEND_REFLECT and EXTEND_PAD to not crash (though these are
6208    still not yet fully implemented for surface patterns).
6210 This has been a tremendous effort by everyone, and I'm proud to have
6211 been a part of it. Congratulations to all contributors to cairo!
6213 Snapshot 1.1.10 (2006-06-16 Carl Worth <cworth@cworth.org>)
6214 ===========================================================
6215 This is the fifth in a series of snapshots working toward the 1.2
6216 release of cairo.
6218 The primary motivation for this snapshot is to fix a long-standing bug
6219 that had long been silent, but as of the 1.1.8 snapshot started
6220 causing crashes when run against 16-bit depth X servers, (often Xvnc
6221 or Xnest). The fix for this adds a new CAIRO_FORMAT_RGB16_565 to the
6222 API.
6224 This snapshot also includes a rewrite of cairo's SVG backend to
6225 eliminate the dependency on libxml2. With this in place, cairo 1.2
6226 will not depend on any libraries that cairo 1.0 did not.
6228 As usual, there are also a few fixes for minor bugs.
6230 Snapshot 1.1.8 (2006-06-14 Carl Worth <cworth@cworth.org>)
6231 ==========================================================
6232 This is the fourth in a series of snapshots working toward the 1.2
6233 release of cairo. At this point, all major features of the 1.2 release
6234 are in place, leaving just a few bug fixes left.
6236 In particular, there well be no additional API changes between this
6237 1.1.8 snapshot and the 1.2 release.
6239 The announcement for 1.1.6 mentioned several API changes being
6240 considered. Only one of these changes was actually implemented
6241 (set_dpi -> fallback_resolution). This change does introduce one
6242 source-level incompatibility with respect to previous 1.1.x snapshots,
6243 so see below for details.
6245 Here is an abbreviated summary of changes since the 1.1.6 snapshot:
6247 ** API Change **
6248 ----------------
6249 According to the plan mentioned in the 1.1.6 notes, one source-level
6250 incompatible change has been implemented. The following three
6251 functions have been removed from cairo's API:
6253         cairo_pdf_surface_set_dpi
6254         cairo_ps_surface_set_dpi
6255         cairo_svg_surface_set_dpi
6257 and in their place the following function has been added:
6259         cairo_surface_set_fallback_resolution
6261 The signature and semantics of the function remains the same, so it is
6262 a simple matter of changing the name of the function when calling
6263 it. As a transition mechanism, this snapshot will (on many systems)
6264 build to include the old symbols so that code previously compiled will
6265 still run. However, all source code using the old names must be
6266 updated before it will compile. And the upcoming 1.2 release is not
6267 anticipated to include the old symbols.
6269 Finally, it should be pointed out that the old symbols never existed
6270 in the supported API of any stable release of cairo. (In the stable
6271 1.0 releases the PDF, PS, and SVG backends were advertised as
6272 experimental and unstable.)
6274 And, as always, cairo continues to maintain source and binary
6275 compatibility between major releases. So applications compiled against
6276 supported backends in a stable release of cairo (1.0.4 say) will
6277 continue to compile and run without modification against new major
6278 releases (1.2.0 say) without modification.
6280 API additions
6281 -------------
6282 The following new functions have been added to cairo's API:
6284         cairo_surface_get_content
6285         cairo_debug_reset_static_data
6286         cairo_image_surface_get_data
6287         cairo_image_surface_get_format
6288         cairo_image_surface_get_stride
6289         cairo_win32_font_face_create_for_hfont
6291 New, backend-specific pkg-config files
6292 --------------------------------------
6293 In addition to the original cairo.pc file, cairo will also now install
6294 a pkg-config files for each configured backend, (for example
6295 cairo-pdf.pc, cairo-svg.pc, cairo-xlib.pc, cairo-win32.pc, etc.) this
6296 also includes optional font backends (such as cairo-ft.pc) and the
6297 optional png functionality (cairo-png.pc).
6299 These new pkg-config files should be very convenient for allowing
6300 cairo-using code to easily check for the existing of optional
6301 functionality in cairo without having to write complex rules to grub
6302 through cairo header files or the compiled library looking for
6303 symbols.
6305 Printing backend (PS, PDF, and SVG)
6306 -----------------------------------
6307 Improving the quality of the "printing" backends has been a priority
6308 of the development between cairo 1.1.6 and cairo 1.1.8.
6310 The big improvement here is in the area of text output. Previously, at
6311 best, text was output as paths without taking advantage of any font
6312 support available in the output file format.
6314 Now, at the minimum text paths will be shared by using type3 fonts
6315 (for PS and PDF---and similarly, defs for SVG). Also, if possible,
6316 type3 and truetype fonts will be embedded in PostScript and PDF
6317 output. There are still some known bugs with this, (for example,
6318 selecting text in a cairo-generated PDF file with an embedded truetype
6319 font does not work). So there will be some more changes in this area
6320 before cairo 1.2, but do try test this feature out as it exists so
6321 far.
6323 Many thanks to Kristian Høgsberg for the truetype and type1 font
6324 embedding.
6326 win32 backend
6327 -------------
6328 Performance improvements by preferring GDI over pixman rendering when possible.
6329 Fixes for text rendering.
6331 xlib backend
6332 ------------
6333 Fix potentially big performance bug by making xlib's create_similar
6334 try harder to create a pixmap of a depth matching that of the screen.
6336 Bug fixes
6337 ---------
6338 Among various other fixes, the following bugs listed in bugzilla have
6339 been fixed:
6341     Bug 2488: Patch to fix pixman samping location bug (#2488).
6342     https://bugs.freedesktop.org/show_bug.cgi?id=2488
6344     Bug 4196: undef MIN an MAX before defining to avoid duplicate definition
6345     https://bugs.freedesktop.org/show_bug.cgi?id=4196
6347     Bug 4723: configure.in: Fix m4 quoting when examining pkg-config version
6348     https://bugs.freedesktop.org/show_bug.cgi?id=4723
6350     Bug 4882: Flag Sun's X server has having buggy_repeat.
6351     https://bugs.freedesktop.org/show_bug.cgi?id=4882
6353     Bug 5306: test/pdf2png: Add missing include of stdio.h
6354     https://bugs.freedesktop.org/show_bug.cgi?id=5306
6356     Bug 7075: Fix make clean to remove cairo.def
6357     https://bugs.freedesktop.org/show_bug.cgi?id=7075
6359 (Many thanks to Behdad Esfahbod for helping us track down and fix many
6360 of these.)
6362 Snapshot 1.1.6 (2006-05-04 Carl Worth <cworth@cworth.org>)
6363 ==========================================================
6364 This is the third in a series of snapshots working toward the imminent
6365 1.2 release of cairo. For a list of items still needing work on the
6366 cairo 1.2 roadmap, please see:
6368         https://cairographics.org/ROADMAP
6370 As can be seen in that list, there are no longer any API additions
6371 left on the roadmap. Instead, there is a feature (PDF type 3 fonts) a
6372 performance optimization (X server gradients) and a list of bug
6373 fixes. This gives us a fair amount of freedom to cut the 1.2 release
6374 at almost any point by deciding to defer remaining bug fixes to
6375 subsequent maintenance releases such as 1.2.2 and 1.2.4.
6377 Before we will do that, we must first be wiling to commit to all the
6378 new API additions. As a heads-up, there are a couple of potential API
6379 changes being considered. (Note that these are changes to new API
6380 introduced during 1.1 so these will not introduce API
6381 incompatibilities compared to the stable 1.0 series). The changes
6382 being considered are:
6384   cairo_get_group_target: may acquire x and y offset return
6385         parameters. May also be eliminated in favor of
6386         cairo_get_target assuming its role
6388   cairo_pdf_surface_set_dpi:
6389   cairo_ps_surface_set_dpi:
6390   cairo_svg_surface_set_dpi: These functions may be removed in favor
6391         of a new cairo_surface_set_fallback_resolution
6393 Additionally there is the possibility of a slight change in the
6394 semantics of cairo_set_line_width. We believe the current behavior of the sequence:
6396         cairo_set_line_width; ... change CTM ...; cairo_stroke;
6398 is buggy. It is currently behaving the same as:
6400         ... change CTM ...; cairo_set_line_width; cairo_stroke;
6402 We are considering fixing this bug before 1.2 with the hope that
6403 nobody is already relying on the buggy behavior described here. Do
6404 shout if you suspect you might be in that position.
6406 The items included in this snapshot (since the 1.1.4 snapshot) are
6407 described below.
6409 API additions
6410 -------------
6411 The long-awaited group-rendering support is now available with the
6412 following function calls:
6414         cairo_push_group
6415         cairo_push_group_with_content
6416         cairo_pop_group
6417         cairo_pop_group_to_source
6418         cairo_get_group_target
6420 This API provides a much more convenient mechanism for doing rendering
6421 to an intermediate surface without the need to manually create a
6422 temporary cairo_surface_t and a temporary cairo_t and clean them up
6423 afterwards.
6425 Add the following missing get function to complement
6426 cairo_surface_set_device_offset:
6428         cairo_surface_get_device_offset
6430 PDF backend (API addition)
6431 --------------------------
6432 The PDF backend now provides for per-page size changes, (similar to
6433 what the PostScript backend got in the 1.1.4 snapshot). The new API
6436         cairo_pdf_surface_set_size
6438 Xlib backend (API additions)
6439 ----------------------------
6440 The following functions have been added to allow the extraction of
6441 Xlib surface:
6443         cairo_xlib_surface_get_display
6444         cairo_xlib_surface_get_drawable
6445         cairo_xlib_surface_get_screen
6446         cairo_xlib_surface_get_visual
6447         cairo_xlib_surface_get_depth
6449 XCB backend (experimental)
6450 --------------------------
6451 Update backend so that it now compiles with the recent XCB 0.9 release.
6453 Bug fixes and memory leak cleanup
6454 ---------------------------------
6455 Various little things, nothing too significant though.
6457 Snapshot 1.1.4 (2006-05-03 Carl Worth <cworth@cworth.org>)
6458 ==========================================================
6459 This is the second in a series of snapshots working toward the
6460 upcoming 1.2 release of cairo. For a list of items still needing work
6461 on the cairo 1.2 roadmap, please see:
6463         https://cairographics.org/ROADMAP
6465 The items included in this snapshot (since the 1.1.2 snapshot) are
6466 described below.
6468 PostScript backend: new printing-oriented API
6469 ---------------------------------------------
6470 We anticipate that with cairo 1.2, toolkits will begin to use cairo
6471 for printing on systems that use PostScript as the spool format. To
6472 support this use case, we have added 4 new function calls that are
6473 specific to the PostScript backend:
6475         cairo_ps_surface_set_size
6476         cairo_ps_surface_dsc_comment
6477         cairo_ps_surface_dsc_begin_setup
6478         cairo_ps_surface_dsc_begin_page_setup
6480 These functions allow variation of the page size/orientation from one
6481 page to the next in the PostScript output. They also allow the toolkit
6482 to provide per-document and per-page printer control options in a
6483 device-independent way, (for example, by using PPD options and
6484 emitting them as DSC comments into the PostScript output). This should
6485 allow toolkits to provide very fine-grained control of many options
6486 available in printers, (media size, media type, tray selection, etc.).
6488 SVG backend: builds by default, version control
6489 -----------------------------------------------
6490 The SVG backend continues to see major improvements. It is expected
6491 that the SVG backend will be a supported backend in the 1.2
6492 release. This backend will now be built by default if its dependencies
6493 (freetype and libxml2) are met.
6495 Additionally, the SVG backend now has flexibility with regard to what
6496 version of SVG it targets. It will target SVG 1.1 by default, which
6497 will require image fallbacks for some of the "fancier" cairo
6498 compositing operators. Or with the following new function calls:
6500         cairo_svg_surface_restrict_to_version
6501         cairo_svg_get_versions
6502         cairo_svg_version_to_string
6504 it can be made to target SVG 1.2 in which there is native support for
6505 these compositing operators.
6507 Bug fixes
6508 ---------
6509 At least the following bugs have been fixed since the 1.1.2 snapshot:
6511 crash at XRenderAddGlyphs
6512 https://bugs.freedesktop.org/show_bug.cgi?id=4705
6514 Can't build cairo-1.1.2 on opensolaris due to " void function cannot return value"
6515 https://bugs.freedesktop.org/show_bug.cgi?id=6792
6517 Missing out-of-memory check at gfx/cairo/cairo/src/cairo-atsui-font.c:185
6518 https://bugzilla.mozilla.org/show_bug.cgi?id=336129
6520 A couple of memory leaks.
6522 Snapshot 1.1.2 (2006-04-25 Carl Worth <cworth@cworth.org>)
6523 ==========================================================
6524 This is the first in a series of snapshots working toward the upcoming
6525 1.2 release of cairo. (Subsequent snapshot will use successive even
6526 numbers for the third digit, 1.1.4, 1.1.6, etc.) This snapshot is
6527 backwards-compatible with the 1.0 series---it makes a few API
6528 additions but does not remove any API.
6530 PostScript and PDF backends are no longer "experimental"
6531 --------------------------------------------------------
6532 The major theme of the 1.2 release is improved PostScript and PDF
6533 backends for cairo. Unlike the 1.0 series, in the 1.2 series these
6534 backends will not be marked as experimental and will be enabled by
6535 default. We encourage people to test this snapshot and the PS/PDF
6536 backends in particular as much as possible.
6538 The PostScript and PDF output is not yet ideal.
6540  * One major problem with the PostScript output is that image
6541    fallbacks are used more often than strictly necessary, and the
6542    image fallbacks are at a lower resolution than desired, (the
6543    cairo_ps_surface_set_dpi call is ignored).
6545   * The major drawback of the current PDF backend implementation is
6546     its text support. Every glyph is represented by a filled path in
6547     the PDF file. The causes file sizes to be much larger and
6548     rendering to be much slower than desired.
6550 It is anticipated that both of these shortcomings will see some
6551 improvements before the final 1.2 release.
6553 In spite of those shortcomings, we hope that the PS and PDF backends
6554 will yield faithful results for pretty much any cairo operations you
6555 can throw at them. Please let us know if you are getting obviously
6556 "different" results from the PS/PDF backends than from the image or
6557 xlib backends.
6559 Other new experimental backends
6560 -------------------------------
6561 This snapshot includes three new backends that did not exist in the
6562 1.0 series:
6564         * beos backend
6566         * directfb backend
6568         * svg backend
6570 These are all currently marked "experimental" and are disabled by
6571 default. But the SVG backend in particular has seen a lot of recent
6572 development and is very close to passing the entire cairo test
6573 suite. It is possible that this backend will become a fully supported
6574 backend by the time of the cairo 1.2 release.
6576 Public API additions
6577 --------------------
6578 There have been a few new API functions added to cairo, including:
6580 New get_type functions for querying sub-types of object:
6582         cairo_surface_get_type
6583         cairo_pattern_get_type
6584         cairo_font_face_get_type
6585         cairo_scaled_font_get_type
6587 More convenience in working with cairo_scaled_font_t with new getter
6588 functions:
6590         cairo_scaled_font_get_font_face
6591         cairo_scaled_font_get_font_matrix
6592         cairo_scaled_font_get_ctm
6593         cairo_scaled_font_get_font_options
6595 As well as a convenience function for setting a scaled font into a
6596 cairo context:
6598         cairo_set_scaled_font
6600 and a function to allow text extents to be queried directly from a
6601 scaled font, (without requiring a cairo_surface_t or a cairo_t):
6603         cairo_scaled_font_text_extents
6605 These new scaled font functions were motivated by the needs of the
6606 pango library.
6608 Finally, a new path-construction function was added which clears the
6609 current point in preparation for a new sub path. This makes cairo_arc
6610 easier to use in some situations:
6612         cairo_new_sub_path
6614 Before the 1.2 release is final we do still plan a few more API
6615 additions specifically motivated by the needs of Mozilla/Firefox.
6617 Optimizations and bug fixes
6618 ---------------------------
6619 Shortly after the 1.0 maintenance series branched off the mainline
6620 there was a major rework of the cairo font internals. This should
6621 provide some good performance benefits, but it's also another area
6622 people should look at closely for potential regressions.
6624 There has not yet been any widespread, systematic optimization of
6625 cairo, but various performance improvements have been made, (and some
6626 of them are fairly significant). So if some things seem faster than
6627 1.0 then things are good. If there are any performance regressions
6628 compared to 1.0 then there is a real problem and we would like to hear
6629 about that.
6631 There has been a huge number of bug fixes---too many to mention in
6632 detail. Again, things should be better, and never worse compared to
6633 1.0. Please let us know if your testing shows otherwise.
6635 Release 1.0.2 (2005-10-03 Carl Worth <cworth@cworth.org>)
6636 =========================================================
6637 For each bug number XXXX below, see:
6639         https://bugs.freedesktop.org/show_bug.cgi?id=XXXX
6641 for more details.
6643 General bug fixes
6644 -----------------
6645  * 4408 - Add support for dashing of stroked curves
6646           (Carl Worth)
6648  * 4409 - Fix dashing so that each dash is capped on both ends
6649           (Carl Worth)
6651  * 4414 - Prevent SIGILL failures (proper use of -mmmx and -msse flags)
6652           (Sebastien Bacher, Billy Biggs)
6654  * 4299 - Fix crashes with text display in multi-threaded program
6655           (Alexey Shabalin, Carl Worth)
6657  * 4401 - Do not use sincos function since it is buggy on some platforms)
6658           (Tim Mooney, Carl Worth)
6660  * 4245 - Fix several bugs in the test suite exposed by amd64 systems
6661           (Seemant Kulleen, Carl Worth)
6663  * 4321 - Add missing byteswapping on GetImage/PutImage
6664           (Sjoerd Simons, Owen Taylor)
6666  * 4220 - Make the check for rectangular trapezoids simpler and more accurate
6667           (Richard Stellingwerff, Owen Taylor)
6669  * 4260 - Add missing channel-order swapping for antialised fonts
6670           (Barbie LeVile, Owen Taylor)
6672  * 4283 - Fix compilation failure with aggressive inlining (gcc -O3)
6673           (Marco Manfredini, Owen Taylor)
6675  * 4208 - Fix some warnings from sparse
6676           (Kjartan Maraas, Billy Biggs)
6678  * 4269 - Fix to not crash when compiled with -fomit-frame-pointer
6679           (Ronald Wahl, Owen Taylor)
6681  * 4263 - Improve performance for vertical gradients
6682           (Richard Stellingwerff, Owen Taylor)
6684  * 4231
6685  * 4298 - Accommodate gentoo and Mandriva versions in X server vendor string check
6686           (Billy Biggs, Frederic Crozat, Owen Taylor)
6688 win32-specific fixes
6689 --------------------
6690  * 4599 - Fix "missing wedges" on some stroked paths (win32)
6691           (Tim Rowley, Jonathan Watt, Bertram Felgenhauer, Carl Worth, Keith Packard)
6693  * 4612 - Fix disappearing text if first character out of surface (win32)
6694           (Tim Rowley)
6696  * 4602 - Fix shutdown of cairo from failing intermediate, size-0 bitmaps (win32)
6697           Aka. the "white rectangles" bug from mozilla-svg testing
6698           (Tim Rowley)
6700  * Various portability improvements for win32
6701           (Hans Breuer, Owen Taylor, Carl Worth)
6703  * 4593 - Fix font sizes to match user expectations (win32)
6704           (Tor Lillqvist, Owen Taylor)
6706  * 3927 - Fix to report metrics of size 0 for glyph-not-available (win32)
6707           (Hans Breuer, Owen Taylor, Tor Lillqvist)
6709  * Add locking primitives for win32
6710           (Hans Breuer)
6712 xlib-specific fixes
6713 -------------------
6714  * Fix crash from size-0 pixmap due to empty clip region (xlib)
6715           (Radek Doulík, Carl Worth)
6717 Release 1.0.0 (2005-08-24 Carl Worth <cworth@cworth.org>)
6718 =========================================================
6719 Experimental backends
6720 ---------------------
6721  * The Glitz, PS, PDF, Quartz, and XCB backends have been declared
6722    experimental, and are not part of the API guarantees that accompany
6723    this release. They are not built by default, even when the required
6724    libraries are available, and must be enabled explicitly with
6725    --enable-ps, --enable-pdf, --enable-quartz or --enable-xcb.
6727    It is very painful for us to be pushing out a major release without
6728    these backends enabled. There has been a tremendous amount of work
6729    put into each one and all are quite functional to some
6730    extent. However, each also has some limitations. And none of these
6731    backends have been tested to the level of completeness and
6732    correctness that we expect from cairo backends.
6734    We do encourage people to experiment with these backends and report
6735    success, failure, or means of improving them.
6737 Operator behavior
6738 -----------------
6739  * Prior to 0.9.0 the SOURCE, CLEAR and a number of other operators
6740    behaved in an inconsistent and buggy fashion and could affect areas
6741    outside the clip mask. In 0.9.0, these six "unbounded" operators
6742    were fixed to consistently clear areas outside the shape but within
6743    the clip mask.  This is useful behavior for an operator such as IN,
6744    but not what was expected for SOURCE and CLEAR. So, in this release
6745    the behavior of SOURCE and CLEAR has been changed again. They now
6746    affect areas only within both the source and shape. We can write
6747    the new operators as:
6749      SOURCE: dest' = (mask IN clip) ? source : dest
6750      CLEAR:  dest' = (mask IN clip) ? 0 : dest
6752 Behavior and API changes
6753 ------------------------
6754  * Setting the filter on a gradient pattern would change the
6755    interpolation between color stops away from the normal linear
6756    interpolation. This dubious behavior has been removed.
6758  * The CAIRO_CONTENT_VALID() and CAIRO_FORMAT_VALID() macros --
6759    implementation details that leaked into cairo.h -- have been moved
6760    into an internal header.
6762  * The cairo_show_text function now advances the current point
6763    according to the total advance values of the string.
6765 API additions
6766 -------------
6767  * cairo_set_dash can now detect error and can set
6768    CAIRO_STATUS_INVALID_DASH.
6770 Features
6771 --------
6772  * When compiled against recent versions of fontconfig and FreeType,
6773    artificial bold fonts can now be turned on from fonts.conf using
6774    the FC_EMBOLDEN fontconfig key.
6776 Optimization
6777 ------------
6778  * The compositing code from the 'xserver' code tree has now been
6779    completely merged into libpixman. This includes MMX optimization of
6780    common operations.
6782  * The image transformation code in libpixman has been improved and
6783    now performs significantly faster.
6785 Bug fixes
6786 ---------
6787  * Several crashes related to corruption in the font caches have been
6788    fixed.
6790  * All test cases now match pixel-for-pixel on x86 and PPC; this
6791    required fixing bugs in the compositing, stroking, and pattern
6792    rendering code.
6794  * Negative dash offsets have been fixed to work correctly.
6796  * The stroking of paths with multiple subpaths has now been fixed to
6797    apply caps to all subpaths rather than just the last one.
6799  * Many build fixes for better portability on various systems.
6801  * Lots of other bug fixes, but we're too tired to describe them in
6802    more detail here.
6804 Release 0.9.2 (2005-08-13 Carl Worth <cworth@cworth.org>)
6805 =========================================================
6806 Release numbering
6807 -----------------
6808  * You will notice that this release jumped from 0.9.0 to 0.9.2. We've
6809    decided to use an odd micro version number (eg. 0.9.1) to indicate
6810    in-progress development between releases. As soon as 0.9.2 is
6811    tagged, the version will be incremented in CVS to 0.9.3 where it
6812    will stay until just before 0.9.4 is built, uploaded, and tagged.
6814    So, even-micro == a released version, odd-micro == something in-between.
6816 Libpixman dependency dropped
6817 ----------------------------
6818  * As of this release, the dependency on an external libpixman has
6819    been dropped. Instead, the code from libpixman needed for cairo has
6820    been incorporated into the cairo source tree. The motivation for
6821    this change is that while cairo's API is stable and ready to be
6822    maintained after the 1.0 release, libpixman's API is not, so we do
6823    not want to expose it at this time.
6825    Also, the incorporation of libpixman into cairo also renames all
6826    previously-public libpixman symbols in order to avoid any conflict
6827    with a future release of libpixman
6829 API additions
6830 -------------
6831  * Macros and functions have been added so that the version of cairo
6832    can be queried at either compile-time or at run-time. The version
6833    is made available as both a human-readable string and as a single
6834    integer:
6836         CAIRO_VERSION_STRING               eg. "0.9.2"
6837         CAIRO_VERSION                      eg. 000902
6839         const char*
6840         cairo_version_string (void);    /* eg. "0.9.2" */
6842         int
6843         cairo_version (void);           /* eg. 000902 */
6845    A macro is provided to convert a three-part component version into
6846    the encoded single-integer form:
6848         CAIRO_VERSION_ENCODE(X,Y,Z)
6850    For example, the CAIRO_VERSION value of 000902 is obtained as
6851    CAIRO_VERSION_ENCODE(0,9,2). The intent is to make version
6852    comparisons easy, either at compile-time:
6854         #if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(0,9,2)
6855         ...
6856         #endif
6858    Or at run-time:
6860         if (cairo_version() >= CAIRO_VERSION_ENCODE(0,9,2)) { /* ... */ }
6862 Thread safety
6863 -------------
6864  * This release adds pthread-based locking (when available) to make
6865    the caches used by cairo safe for threaded programs. Some may
6866    remember a failed experiment with this locking between the 0.5.1
6867    and 0.5.2 snapshots, (where even single-threaded programs that
6868    linked with -lpthread would deadlock). We believe that that problem
6869    has been fixed, so we are looking forward to testing and reports
6870    from users with threaded applications.
6872 Bug fixes
6873 ---------
6874  * The XCB and Quartz backends failed to compiled in the 0.9.0 release
6875    due to minor syntax errors. These have now been fixed.
6877  * Various crashes in glitz and pixman due to size 0 glyphs have been
6878    fixed.
6880 Release 0.9.0 (2005-08-08 Carl Worth <cworth@cworth.org>)
6881 =========================================================
6882 Soname change
6883 -------------
6884  * In all prior snapshots, the libtool library versioning was set to
6885    1:0:0. As this release is intended to mark the beginning of
6886    backwards-compatible releases, the versioning has been incremented
6887    to 2:0:0. You will notice that the numeric extension on the
6888    installed library filename will change similarly.
6890    This change will also require all cairo-using applications to be
6891    recompiled. We recognize that this may cause some frustration since
6892    this release is backwards-compatible with 0.6.0 and in that sense
6893    "shouldn't" require re-compilation. However, since all historical
6894    snapshots have used the same 1:0:0 version in spite of incompatible
6895    API changes between them, it was essential that the upcoming 1.0
6896    release series have distinct library versioning.
6898    All future releases will use the library versioning to properly
6899    indicate compatibility between releases. So, any application
6900    re-compiled now to work with the 0.9.0 will not need to be
6901    recompiled when a compatible 1.0 release of cairo is made in the
6902    future.
6904 API additions
6905 -------------
6906  * Add new function calls to set/get the current antialiasing mode in
6907    the graphics state:
6909         cairo_set_antialias
6910         cairo_get_antialias
6912    This call accepts the same modes recently added for font options
6913    (NONE or GRAY) but affects the rendering of geometry other than
6914    text. The intent of this call is to enable more precise control of
6915    which pixels are affected by each operation, for example to allow
6916    for full-scene antialiasing for seam-free rendering. It is not
6917    expected that non-antialiased rendering will perform better than
6918    anti-aliased rendering.
6920  * Three new functions were added to provide support for mixed cairo-
6921    and non-cairo drawing to the same surface:
6923         cairo_surface_mark_dirty
6924         cairo_surface_mark_dirty_rectangle
6925         cairo_surface_flush
6927  * The return type of the several "reference" functions was change,
6928    (API compatibly), from void to the same type as the argument. The
6929    affected functions are:
6931         cairo_font_face_reference
6932         cairo_scaled_font_reference
6933         cairo_pattern_reference
6934         cairo_surface_reference
6935         cairo_reference
6937    This allows a convenient way to assign and reference in a single
6938    statement.
6940 Semantic changes
6941 ----------------
6942  * The behavior of cairo_set_source with a pattern with a non-identity
6943    matrix was previously not well-defined. The new behavior is as
6944    follows:
6946         The pattern's transformation matrix will be locked to the
6947         user space in effect at the time of cairo_set_source(). This means
6948         that further modifications of the CTM will not affect the source
6949         pattern.
6951 cairo-win32
6952 -----------
6953  * Some portability improvements, (eg. workaround for missing stdint.h).
6955 cairo-ft
6956 --------
6957  * Updated to allow compilation with older versions of freetype.
6959 Bug fixes
6960 ---------
6961  * Fix the unbounded operators to actually produce a correct result,
6962    (previously the results were artificially restricted to the
6963    bounding box of whatever shape was being drawn rather than
6964    extending out infinitely). The fixed operators are:
6966         CAIRO_OPERATOR_CLEAR
6967         CAIRO_OPERATOR_SOURCE
6968         CAIRO_OPERATOR_OUT
6969         CAIRO_OPERATOR_IN
6970         CAIRO_OPERATOR_DEST_IN
6971         CAIRO_OPERATOR_DEST_ATOP
6973  * Fix cairo_mask and cairo_mask_surface to transform the mask by the
6974    current transformation matrix (CTM).
6976  * Fix cairo_set_source to lock the CTM used to transform the pattern.
6978  * Workaround for X server Render bug involving repeating patterns
6979    with a general transformation matrix.
6981  * cairo_get_font_face fixed to return a "nil" font face object rather
6982    than NULL on error.
6984  * cairo_set_font_face fixed to not crash if given a NULL font face,
6985    (which is the documented interface for restoring the default font
6986    face).
6988  * Fix xlib glyphset caching to not try to free a NULL glyph.
6990 Snapshot 0.6.0 (2005-07-28 Carl Worth <cworth@cworth.org>)
6991 ==========================================================
6992 API changes
6993 -----------
6994 * The prototypes of the following functions have changed:
6996         cairo_xlib_surface_create_with_xrender_format
6997         cairo_xlib_surface_create_for_bitmap
6999   A Screen* parameter has been added to each. This allows the cairo
7000   xlib backend to work correctly with multi-head X servers.
7002 * The following function has been modified:
7004         cairo_scaled_font_create
7006   to accept a cairo_font_options_t*. See below fore more details.
7008 * All opaque, reference-counted cairo objects have now been moved to a
7009   standard error-handling scheme. The new objects to receive this
7010   treatment are cairo_font_face_t, cairo_scaled_font_t, and
7011   cairo_surface_t. (Previous snapshots already provided this scheme
7012   for cairo_t, cairo_path_t, and cairo_pattern_t.)
7014   This changes two functions to have a return type of void rather than
7015   cairo_status_t:
7017         cairo_scaled_font_extent
7018         cairo_surface_finish
7020   And significantly, none of the create functions for any of the
7021   objects listed above will return NULL. The pointer returned from any
7022   function will now always be a valid pointer and should always be
7023   passed to the corresponding destroy function when finished
7025   The simplest strategy for porting code is to switch from:
7027         object = cairo_<object>_create ();
7028         if (object == NULL)
7029             goto BAILOUT;
7031         /* act on object */
7033         cairo_<object>_destroy (object);
7035   to:
7037         object = cairo_<object>_create ();
7038         if (cairo_<object>_status (object))
7039             goto BAILOUT;
7041         /* act on object */
7043         cairo_<object>_destroy (object);
7045    But significantly, it is not required to check for an error status
7046    before the "act on object" portions of the code above. All
7047    operations on an object with an error status are, by definition,
7048    no-ops without side effect. So new code might be written in an
7049    easier-to-read style of:
7051         object = cairo_<object>_create ();
7053         /* act on object */
7055         cairo_<object>_destroy (object);
7057    with cairo_<object>_status checks placed only at strategic
7058    locations. For example, passing an error object to another object,
7059    (eg. cairo_set_source with an in-error pattern), will propagate the
7060    error to the subsequent object (eg. the cairo_t). This means that
7061    error checking can often be deferred even beyond the destruction of
7062    a temporary object.
7064 API additions
7065 -------------
7066 * New functions for checking the status of objects that have been
7067   switched to the common error-handling scheme:
7069         cairo_font_face_status
7070         cairo_scaled_font_status
7071         cairo_surface_status
7073 * The _cairo_error function which was added in 0.5.1 has now been made
7074   much more useful. In 0.5.1 only errors on cairo_t objects passed
7075   through _cairo_error. Now, an error on any object should pass
7076   through _cairo_error making it much more reliable as a debugging
7077   mechanism for finding when an error first occurs.
7079 * Added new font options support with a myriad of functions:
7081         cairo_font_options_create
7082         cairo_font_options_copy
7083         cairo_font_options_destroy
7085         cairo_font_options_status
7087         cairo_font_options_merge
7088         cairo_font_options_equal
7089         cairo_font_options_hash
7091         cairo_font_options_set_antialias
7092         cairo_font_options_get_antialias
7093         cairo_font_options_set_subpixel_order
7094         cairo_font_options_get_subpixel_order
7095         cairo_font_options_set_hint_style
7096         cairo_font_options_get_hint_style
7097         cairo_font_options_set_hint_metrics
7098         cairo_font_options_get_hint_metrics
7100         cairo_surface_get_font_options
7102         cairo_ft_font_options_substitute
7104         cairo_set_font_options
7105         cairo_get_font_options
7107    This new font options support allows the application to have much
7108    more fine-grained control over how fonts are rendered.
7109    Significantly, it also allows surface backends to have some
7110    influence over the process. For example, the xlib backend now
7111    queries existing Xft properties to set font option defaults.
7113 * New function:
7115         cairo_xlib_surface_set_drawable
7117   which allows the target drawable for an xlib cairo_surface_t to be
7118   changed to another with the same format, screen, and display. This
7119   is necessary in certain double-buffering techniques.
7121 New features
7122 ------------
7123 * Sub-pixel text antialiasing is now supported.
7125 Bug fixes
7126 ---------
7127 * Fixed assertion failure in cairo_surface_create_similar when
7128   application commits an error by passing a cairo_format_t rather than
7129   a cairo_content_t.
7131 * Avoid division by zero in various places (cairo-ft).
7133 * Fix infinite loop when using non-default visuals (cairo-xlib).
7135 * Eliminate segfault in cairo_image_surface_create_from_png_stream.
7137 * Prevent errant sign-extension of masks on 64-bit architectures
7138   (cairo-xlib and cairo-xcb).
7140 * Other miscellaneous fixes.
7142 Snapshot 0.5.2 (2005-07-18 Carl Worth <cworth@cworth.org>)
7143 ==========================================================
7144 API changes
7145 -----------
7146 * New functions for creating patterns of a single color:
7148         cairo_pattern_create_rgb
7149         cairo_pattern_create_rgba
7151 * Change cairo_surface_create_similar to accept a new type of
7152   cairo_content_t rather than cairo_format_t:
7154         typedef enum _cairo_content {
7155             CAIRO_CONTENT_COLOR         = 0x1000,
7156             CAIRO_CONTENT_ALPHA         = 0x2000,
7157             CAIRO_CONTENT_COLOR_ALPHA   = 0x3000
7158         } cairo_content_t;
7160 * Add new CAIRO_FORMAT_VALID and CAIRO_CONTENT_VALID macros.
7162 * Remove unused status value:
7164         CAIRO_STATUS_NO_TARGET_SURFACE
7166 * Add new status values:
7168         CAIRO_STATUS_INVALID_STATUS
7170 * Require libpixman >= 0.1.5 (for necessary bug fixes)
7172 Bug fixes
7173 ---------
7174 * Fix cairo_surface_write_to_png for RGB24 images.
7176 * Fix broken metrics and rendering for bitmap fonts. Add mostly
7177   useless bitmap glyph transformation.
7179 * Fix glyph caches to not eject entries that might be immediately
7180   needed, (fixing intermittent crashes when rendering text).
7182 * Fix all memory leaks found by running "make check-valgrind".
7184 ATSUI backend changes
7185 ---------------------
7186 * Allow building against < 10.3 SDK.
7188 * Prevent crash on empty strings.
7190 Glitz backend changes
7191 ---------------------
7192 * Require glitz >= 0.4.4.
7194 * Use frame buffer objects instead of pbuffers for accelerated
7195   offscreen drawing.
7197 * Minor improvement to gradient pattern creation.
7199 PostScript backend fixes
7200 ------------------------
7201 * Rewrite of the PS backend to generate more interesting output that
7202   the old big-image implementation.
7204 Win32 backend fixes
7205 -------------------
7206 * Implement glyph path support.
7208 * Fix swap of blue and green values in the fill_rectangles path.
7210 Xlib backend fixes
7211 ------------------
7212 * Add optimization to use XCopyArea rather than XRenderComposite when
7213   transforming only with an integer translation, and using SOURCE
7214   operator or OVER with a source pattern without alpha.
7216 Snapshot 0.5.1 (2005-06-20 Carl Worth <cworth@cworth.org>)
7217 ==========================================================
7218 API changes
7219 -----------
7220 * Removed cairo_status_string(cairo_t*) and add
7221   cairo_status_to_string(cairo_status_t) in its place. Code using
7222   cairo_status_string can be ported forward as follows:
7224         cairo_status (cr);
7225         ->
7226         cairo_status_to_string (cairo_status (cr));
7228 * Removed the BAD_NESTING restriction which means that two different
7229   cairo_t objects can now interleave drawing to the same
7230   cairo_surface_t without causing an error.
7232 * The following functions which previously had a return type of
7233   cairo_status_t now have a return type of void:
7235         cairo_pattern_add_color_stop_rgba
7236         cairo_pattern_set_matrix
7237         cairo_pattern_get_matrix
7238         cairo_pattern_set_extend
7239         cairo_pattern_set_filter
7241   See discussion of cairo_pattern_status below for more details.
7243 API additions
7244 -------------
7245 * Improved error handling:
7247         cairo_status_t
7248         cairo_pattern_status (cairo_pattern_t *pattern);
7250   This snapshot expands the status-based error handling scheme from
7251   cairo_t to cairo_path_t and cairo_pattern_t. It also expands the
7252   scheme so that object-creating functions, (cairo_create,
7253   cairo_pattern_create_*, cairo_copy_path_*), are now guaranteed to
7254   not return NULL. Instead, in the case of out-of-memory these
7255   functions will return a static object with
7256   status==CAIRO_STATUS_NO_MEMORY. The status can be checked with the
7257   functions cairo_status and cairo_pattern_status, or by direct
7258   inspection of the new status field in cairo_path_t.
7260   Please note that some objects, including cairo_surface_t and all of
7261   the font-related objects have not been converted to this
7262   error-handling scheme.
7264 * In addition to the above changes, a new private function has been added:
7266         _cairo_error
7268   This function can be used to set a breakpoint in a debugger to make
7269   it easier to find programming error in cairo-using code. (Currently,
7270   _cairo_error is called when any error is detected within a cairo_t
7271   context, but is not called for non-cairo_t errors such as for
7272   cairo_path_t and cairo_pattern_t).
7274 * Fixed cairo_path_data_t so that its enum is visible to C++ code, (as
7275   cairo_path_data_type_t).
7277 Performance improvements
7278 ------------------------
7279 * Made a minor performance improvement for clipping, (restrict clip
7280   surface to the new intersected bounds).
7282 * Optimize rendering of a solid source pattern with a pixel-aligned
7283   rectangular path to use backend clipping rather than rasterization
7284   and backend compositing.
7286 * Optimize cairo_paint_with_alpha to defer to cairo_paint when alpha
7287   is 1.0.
7289 Bug fixes
7290 ---------
7291 * Fixed memory leak in cairo_copy_path.
7293 * A build fix for non-srcdir builds.
7295 PDF backend fixes
7296 -----------------
7297 * New support for path-based clipping.
7299 * Fix for text rotated to angles other than multiples of π/2.
7301 Win32 backend fixes
7302 -------------------
7303 * Fix for text extents.
7305 Xlib backend
7306 ------------
7307 * Implemented a complex workaround for X server bug[*] related to
7308   Render-based compositing with untransformed, repeating source
7309   pictures. The workaround uses core Xlib when possible for
7310   performance, (ie. with CAIRO_OPERATOR_SOURCE or CAIRO_OPERATOR_OVER
7311   with an opaque source surface), and falls back to the pixman
7312   image-based compositing otherwise.
7314   [*] https://bugs.freedesktop.org/show_bug.cgi?id=3566
7316 * Various bug fixes, particularly in the fallback paths.
7318 Snapshot 0.5.0 (2005-05-17 Carl Worth <cworth@cworth.org>)
7319 ==========================================================
7320 This is a pretty big, and fairly significant snapshot.  It represents
7321 between 2 and 3 months of solid work from a lot of people on improving
7322 the API as much as possible. I'd like to express my appreciation and
7323 congratulations to everyone who has worked on the big API Shakeup,
7324 (whether in email battles over names, or fixing my silly bugs).
7326 This snapshot will require some effort on the part of users, since
7327 there are a _lot_ of API changes (ie. no cairo program ever written is
7328 safe --- they're all broken now in at least one way). But, in spite of
7329 that, we do encourage everyone to move their code to this snapshot as
7330 soon as possible. And we're doing everything we can think of to make
7331 the transition as smooth as possible.
7333 The idea behind 0.5 is that we've tried to make every good API change
7334 we could want now, and get them all done with. That is, between now
7335 and the 1.0 release of cairo, we expect very few new API changes,
7336 (though some will certainly sneak in). We will have some significant
7337 additions, but the pain of moving code from cairo 0.4 to cairo 0.5
7338 should be a one time experience, and things should be much smoother as
7339 we continue to move toward cairo 1.0.
7341 And with so many changes coming out for the first time in this 0.5
7342 release, we really do need a lot of people trying this out to make
7343 sure the ideas are solid before we freeze the API in preparation for
7344 the 1.0 release.
7346 OK, enough introduction. Here is a (not-quite-complete) description of
7347 the API removals, changes and additions in this snapshot, (compared to
7348 0.4.0)
7350 API removals
7351 ============
7352 The following public functions have been removed:
7354 - cairo_set_target_*
7356         This is a big change. See the description of cairo_create in
7357         the API changes section for how to deal with this.
7359 - cairo_set_alpha
7361         Alpha blending hasn't gone away; there's just a much more
7362         unified rendering model now. Almost all uses of
7363         cairo_set_alpha will be trivially replaced with
7364         cairo_set_source_rgba and a few others will be replaced just
7365         as easily with cairo_paint_with_alpha.
7367 - cairo_show_surface
7369         Another useful function that we realized was muddling up the
7370         rendering model. The replacement is quite easy:
7371         cairo_set_source_surface and cairo_paint.
7373 - cairo_matrix_create
7374 - cairo_matrix_destroy
7375 - cairo_matrix_copy
7376 - cairo_matrix_get_affine
7378         These functions supported an opaque cairo_matrix_t. We now
7379         have an exposed cairo_matrix_t structure, so these can be
7380         dropped.
7382 - cairo_surface_set_repeat
7383 - cairo_surface_set_matrix
7384 - cairo_surface_set_filter
7386         These properties don't belong on surfaces. If you were using
7387         them, you'll just want to instead use
7388         cairo_pattern_create_for_surface and then set these properties
7389         on the pattern.
7391 - cairo_copy
7393         This was a confusing function and hopefully nobody will miss
7394         it. But if you really don't find cairo_save/restore adequate,
7395         let us know and we have another idea for a potential
7396         replacement.
7398 And while we're on the subject of removals, we carefully tightened up
7399 the cairo header files so they no longer gratuitously include header
7400 files that are not strictly necessary, (stdio.h, stdint.h, pixman.h,
7401 Xrender.h, etc. and their dependencies). This may lead to some
7402 surprising errors, so keep your eyes open for that.
7404 API changes
7405 ===========
7406 Here are some of the API changes that have occurred:
7408 ~ cairo_create(void) -> cairo_create(cairo_surface_t *)
7410         This is the big change that breaks every program. The ability
7411         to re-target a cairo_t was not particularly useful, but it did
7412         introduce a lot of muddy semantic questions. To eliminate
7413         that, cairo_create now requires its target surface to be
7414         passed in at creation time. This isn't too hard to cope with
7415         as the typical first operation after cairo_create was often
7416         cairo_set_target_foo. So the order of those two swap and the
7417         application instead has cairo_foo_surface_create, then
7418         cairo_create.
7420 ~ cairo_current_* -> cairo_get_*
7422         We had a strange mixture of cairo_get and cairo_current
7423         functions. They've all been standardized on cairo_get, (though
7424         note one is cairo_get_current_point).
7426 ~ CAIRO_OPERATOR_SRC -> CAIRO_OPERATOR_SOURCE
7427 ~ CAIRO_OPERATOR_OVER_REVERSE -> CAIRO_OPERATOR_DEST_OVER
7429         Many of the cairo_operator_t symbolic values were renamed to
7430         reduce the amount of abbreviation. The confusing "OP_REVERSE"
7431         naming was also changed to use "DEST_OP" instead which is
7432         easier to read and has wider acceptance in other
7433         libraries/languages.
7435 ~ cairo_set_pattern -> cairo_set_source
7436 ~ cairo_set_rgb_color -> cairo_set_source_rgb
7438         All of the various functions that changed the source
7439         color/pattern were unified to use cairo_set_source names to
7440         make the relation more clear.
7442 ~ cairo_transform_point            -> cairo_user_to_device
7443 ~ cairo_transform_distance         -> cairo_user_to_device_distance
7444 ~ cairo_inverse_transform_point    -> cairo_device_to_user
7445 ~ cairo_inverse_transform_distance -> cairo_device_to_user_distance
7447         These names just seemed a lot more clear.
7449 ~ cairo_init_clip       -> cairo_reset_clip
7450 ~ cairo_concat_matrix   -> cairo_transform
7452         More abbreviation elimination
7454 ~ cairo_current_path      -> cairo_copy_path
7455 ~ cairo_current_path_flat -> cairo_copy_path_flat
7457         The former mechanism for examining the current path was a
7458         function that required 3 or 4 callbacks. This was more
7459         complexity than warranted in most situations. The new
7460         cairo_copy_path function copies the current path into an
7461         exposed data structure, and the documentation provides a
7462         convenient idiom for navigating the path data.
7464 API additions
7465 -------------
7466 + cairo_paint
7468         A generalized version of the painting operators cairo_stroke
7469         and cairo_fill. The cairo_paint call applies the source paint
7470         everywhere within the current clip region. Very useful for
7471         clearing a surface to a solid color, or painting an image,
7472         (see cairo_set_source_surface).
7474 + cairo_paint_with_alpha
7476         Like cairo_paint but applying some alpha to the source,
7477         (making the source paint translucent, eg. to blend an image on
7478         top of another).
7480 + cairo_mask
7482         A more generalized version of cairo_paint_with_alpha which
7483         allows a pattern to specify the amount of translucence at each
7484         point rather than using a constant value everywhere.
7486 + cairo_mask_surface
7488         A convenience function on cairo_mask for when the mask pattern
7489         is already contained within a surface.
7491 + cairo_surface_set_user_data
7492 + cairo_surface_get_user_data
7493 + cairo_font_face_set_user_data
7494 + cairo_font_face_get_user_data
7496         Associate arbitrary data with a surface or font face for later
7497         retrieval. Get notified when a surface or font face object is
7498         destroyed.
7500 + cairo_surface_finish
7502         Allows the user to instruct cairo to finish all of its
7503         operations for a given surface. This provides a safe point for
7504         doing things such as flushing and closing files that the
7505         surface may have had open for writing.
7507 + cairo_fill_preserve
7508 + cairo_stroke_preserve
7509 + cairo_clip_preserve
7511         One interesting change in cairo is that the path is no longer
7512         part of the graphics state managed by
7513         cairo_save/restore. This allows functions to construct paths
7514         without interfering with the graphics state. But it prevents
7515         the traditional idiom for fill-and-stroke:
7517                 cairo_save; cairo_fill; cairo_restore; cairo_stroke
7519         Instead we know have alternate versions cairo cairo_fill,
7520         cairo_stroke, and cairo_clip that preserve the current path
7521         rather than consuming it. So the idiom now becomes simply:
7523                 cairo_fill_preserve; cairo_stroke
7525 + cairo_surface_write_to_png
7526 + cairo_surface_write_to_png_stream
7528         In place of a single PNG backend, now a surface created
7529         through any backend (except PDF currently) can be written out
7530         to a PNG image.
7532 + cairo_image_surface_create_from_png
7533 + cairo_image_surface_create_from_png_stream
7535         And its just as easy to load a PNG image into a surface as well.
7537 + cairo_append_path
7539         With the new, exposed path data structure, it's now possible
7540         to append bulk path data to the current path, (rather than
7541         issuing a long sequence of cairo_move_to/line_to/curve_to
7542         function calls).
7544 Xlib and XCB backends
7545 ---------------------
7547 Any cairo_format_t and Colormap arguments have been dropped from
7548 cairo_xlib_surface_create. There are also two new
7549 cairo_xlib|xcb_surface_create functions:
7551         cairo_xlib|xcb_surface_create_for_bitmap
7552                 (Particular for creating A1 surfaces)
7553         cairo_xlib|xcb_surface_create_with_xrender_format
7554                 (For any other surface types, not described by a Visual*)
7556 All of these surface create functions now accept width and height. In
7557 addition, there are new cairo_xlib|xcb_surface_set_size functions
7558 which must be called each time a window that is underlying a surface
7559 changes size.
7561 Print backends (PS and PDF)
7562 ---------------------------
7563 The old FILE* based interfaces have been eliminated. In their place we
7564 have two different functions. One accepts a simple const char
7565 *filename. The other is a more general function which accepts a
7566 callback write function and a void* closure. This should allow the
7567 flexibility needed to hook up with various stream object in many
7568 languages.
7570 In addition, when specifying the surface size during construction, the
7571 units are now device-space units (ie. points) rather than inches. This
7572 provides consistency with all the other surface types and also makes
7573 it much easier to reason about the size of the surface when drawing to
7574 it with the default identity matrix.
7576 Finally, the DPI parameters, which are only needed to control the
7577 quality of fallbacks, have been made optional. Nothing is required
7578 during surface_create (300 DPI is assumed) and
7579 cairo_ps|pdf_surface_set_dpi can be used to set alternate values if
7580 needed.
7582 Font system
7583 -----------
7584 Owen very graciously listened to feedback after the big font rework he
7585 had done for 0.4, and came up with way to improve it even more. In 0.4
7586 there was a cairo_font_t that was always pre-scaled. Now, there is an
7587 unscaled cairo_font_face_t which is easier to construct, (eg. no
7588 scaling matrix required) and work with, (it can be scaled and
7589 transformed after being set on the graphics state). And the font size
7590 manipulation functions are much easier. You can set an explicit size
7591 and read/modify/write the font matrix with:
7593         cairo_set_font_size
7594         cairo_get_font_matrix
7595         cairo_set_font_matrix
7597 (Previously you could only multiply in a scale factor or a matrix.) A
7598 pleasant side effect is that we can (and do) now have a default font
7599 size that is reasonable, as opposed to the old default height of one
7600 device-space unit which was useless until scaled.
7602 Of course, the old pre-scaled font had allowed some performance
7603 benefits when getting many metrics for a font. Those benefits are
7604 still made available through the new cairo_scaled_font_t. And a
7605 cairo_font_face_t can be "promoted" to a cairo_scaled_font_t by
7606 suppling a font_matrix and the desired CTM.
7608 Quartz backend
7609 --------------
7610 Tim Rowley put in the work to bring the Quartz backend back after it
7611 had been disabled in the 0.4.0 snapshot. He was not able to bring back
7612 the function that allows one to create a cairo_font_t from an ATSUI
7613 style:
7615         cairo_font_t *
7616         cairo_atsui_font_create (ATSUStyle style);
7618 because he didn't have a test case for it. If you care about this
7619 function, please provide a fairly minimal test and we'll try to bring
7620 it back in an upcoming snapshot.
7622 Snapshot 0.4.0 (2005-03-08 Carl Worth <cworth@cworth.org>)
7623 ==========================================================
7624 New documentation
7625 -----------------
7626 Owen Taylor has converted cairo's documentation system to gtk-doc and
7627 has begun some long-needed work on the documentation, which can now be
7628 viewed online here:
7630         https://cairographics.org/manual/
7632 New backend: win32
7633 ------------------
7634 This is the first snapshot to include a functional win32 backend,
7635 (thanks to Owen Taylor). The interface is as follows:
7637         #include <cairo-win32.h>
7639         void
7640         cairo_set_target_win32 (cairo_t *cr,
7641                                 HDC      hdc);
7643         cairo_surface_t *
7644         cairo_win32_surface_create (HDC hdc);
7646         cairo_font_t *
7647         cairo_win32_font_create_for_logfontw (LOGFONTW       *logfont,
7648                                               cairo_matrix_t *scale);
7650         cairo_status_t
7651         cairo_win32_font_select_font (cairo_font_t *font,
7652                                       HDC           hdc);
7654         void
7655         cairo_win32_font_done_font (cairo_font_t *font);
7657         double
7658         cairo_win32_font_get_scale_factor (cairo_font_t *font);
7660 And see also the documentation at:
7662 https://cairographics.org/manual/cairo-Microsoft-Windows-Backend.html
7664 Disabled backend: quartz
7665 ------------------------
7666 Unfortunately, the quartz backend code is currently out of date with
7667 respect to some recent backend interface changes. So, the quartz
7668 backend is disabled in this snapshot.
7670 If the quartz backend is brought up-to-date before the next snapshot,
7671 we would be glad to make a 0.4.1 snapshot that re-enables it, (we do
7672 not expect many more big backend interface changes).
7674 API Changes
7675 -----------
7676 The font system has been revamped, (as Owen Taylor's work with
7677 integrating pango and cairo gave us the first serious usage of the
7678 non-toy font API).
7680 One fundamental, user-visible change is that the cairo_font_t object
7681 now represents a font that is scaled to a particular device
7682 resolution. Further changes are described below.
7684  cairo.h
7685  -------
7686  Removed cairo_font_set_transform and cairo_font_current_transform.
7688  Added cairo_font_extents and cairo_font_glyph_extents. See
7689  documentation for details:
7691  https://cairographics.org/manual/cairo-cairo-t.html#cairo-font-extents
7693  cairo-ft.h
7694  ----------
7695  The cairo_ft_font API changed considerably. Please see the
7696  documentation for details:
7698  https://cairographics.org/manual/cairo-FreeType-Fonts.html
7700 Performance
7701 -----------
7702 Make the fast-path clipping (pixel-aligned rectangles) faster.
7704 Add optimization for applying a constant alpha to a pattern.
7706 Optimize gradients that are horizontal or vertical in device space.
7708 Xlib: When RENDER is not available, use image surfaces for
7709 intermediate surfaces rather than xlib surfaces.
7711 Backend-specific changes
7712 ------------------------
7713  Glitz
7714  -----
7715  Major update to glitz backend. The output quality should now be just
7716  as good as the image and xlib backends.
7718  Track changes to glitz 0.4.0.
7720  PDF
7721  ---
7722  Various improvements to produce more conformant output.
7724 Internals
7725 ---------
7726 David Reveman contributed a large re-work of the cairo_pattern_t
7727 implementation, providing cleaner code and more optimization
7728 opportunities.
7730  Backend interface changes
7731  -------------------------
7732  Rework backend interface to accept patterns, not surfaces for source
7733  and mask.
7735  Remove set_matrix, set_filter, and set_repeat functions.
7737  More sophisticated backend interface for image fallbacks,
7738  ({acquire,release}_{source,dest}_image() and clone_similar).
7740 Bug fixes
7741 ---------
7742 Only install header files for backends that have been compiled.
7744 Fixed some rounding errors leading to incorrectly placed glyphs.
7746 Many other minor fixes.
7748 Snapshot 0.3.0 (2005-01-21 Carl Worth <cworth@cworth.org>)
7749 ==========================================================
7750 Major API changes
7751 -----------------
7752 1) The public header files will no longer be directly installed into
7753    the system include directory. They will now be installed in a
7754    subdirectory named "cairo", (eg. in /usr/include/cairo rather than
7755    in /usr/include).
7757    As always, the easiest way for applications to discover the
7758    location of the header file is to let pkg-config generate the
7759    necessary -I CFLAGS and -L/-l LDFLAGS. For example:
7761         cc `pkg-config --cflags --libs cairo` -o foo foo.c
7763    IMPORTANT: Users with old versions of cairo installed will need to
7764               manually remove cairo.h and cairo-features.h from the
7765               system include directories in order to prevent the old
7766               headers from being used in preference to the new ones.
7768 2) The backend-specific portions of the old monolithic cairo.h have
7769    been split out into individual public header files. The new files
7770    are:
7772         cairo-atsui.h
7773         cairo-ft.h
7774         cairo-glitz.h
7775         cairo-pdf.h
7776         cairo-png.h
7777         cairo-ps.h
7778         cairo-quartz.h
7779         cairo-xcb.h
7780         cairo-xlib.h
7782    Applications will need to be modified to explicitly include the new
7783    header files where appropriate.
7785 3) There are two new graphics backends in this snapshot, a PDF
7786    backend, and a Quartz backend. There is also one new font backend,
7787    ATSUI.
7789 PDF backend
7790 -----------
7791 Kristian Høgsberg has contributed a new backend to allow cairo-based
7792 applications to generate PDF output. The interface for creating a PDF
7793 surface is similar to that of the PS backend, as can be seen in
7794 cairo-pdf.h:
7796         void
7797         cairo_set_target_pdf (cairo_t   *cr,
7798                               FILE      *file,
7799                               double    width_inches,
7800                               double    height_inches,
7801                               double    x_pixels_per_inch,
7802                               double    y_pixels_per_inch);
7804         cairo_surface_t *
7805         cairo_pdf_surface_create (FILE          *file,
7806                                   double        width_inches,
7807                                   double        height_inches,
7808                                   double        x_pixels_per_inch,
7809                                   double        y_pixels_per_inch);
7811 Once a PDF surface has been created, applications can draw to it as
7812 any other cairo surface.
7814 This code is still a bit rough around the edges, and does not yet
7815 support clipping, surface patterns, or transparent gradients.  Text
7816 only works with TrueType fonts at this point and only black text is
7817 supported.  Also, the size of the generated PDF files is currently
7818 quite big.
7820 Kristian is still actively developing this backend, so watch this
7821 space for future progress.
7823 Quartz backend
7824 --------------
7825 Calum Robinson has contributed a new backend to allow cairo
7826 applications to target native Mac OS X windows through the Quartz
7827 API. Geoff Norton integrated this backend into the current
7828 configure-based build system, while Calum also provided Xcode build
7829 support in the separate "macosx" module available in CVS.
7831 The new interface, available in cairo-quartz.h, is as follows:
7833         void
7834         cairo_set_target_quartz_context (cairo_t        *cr,
7835                                          CGContextRef   context,
7836                                          int            width,
7837                                          int            height);
7839         cairo_surface_t *
7840         cairo_quartz_surface_create (CGContextRef context,
7841                                      int          width,
7842                                      int          height);
7844 There is an example program available in CVS in cairo-demo/quartz. It
7845 is a port of Keith Packard's fdclock program originally written for
7846 the xlib backend. A screenshot of this program running on Mac OS X is
7847 available here:
7849         https://cairographics.org/~cworth/images/fdclock-quartz.png
7851 ATSUI font backend
7852 ------------------
7853 This new font backend complements the Quartz backend by allowing
7854 applications to use native font selection on Mac OS X. The interface
7855 is a single new function:
7857         cairo_font_t *
7858         cairo_atsui_font_create (ATSUStyle style);
7860 Minor API changes
7861 -----------------
7862 Prototype for non-existent function "cairo_ft_font_destroy" removed.
7864 Now depends on libpixman 0.1.2 or newer, (0.1.3 is being released
7865 concurrently and has some useful performance improvements).
7867 Default paint color is now opaque black, (was opaque white). Default
7868 background color is transparent (as before).
7870 Renamed "struct cairo" to "struct _cairo" to free up the word "cairo"
7871 from the C++ identifier name space.
7873 Functions returning multiple return values through provided pointers,
7874 (cairo_matrix_get_affine, cairo_current_point, and
7875 cairo_current_color_rgb), will now accept NULL for values the user
7876 wants to ignore.
7878 CAIRO_HAS_FREETYPE_FONT has now been renamed to CAIRO_HAS_FT_FONT.
7880 Performance improvements
7881 ------------------------
7882 Alexander Larsson provided some fantastic performance improvements
7883 yielding a 10000% performance improvement in his application, (when
7884 also including his performance work in libpixman-0.1.3). These include
7886  * Fixed handling of cache misses.
7888  * Creating intermediate clip surfaces at the minimal size required.
7890  * Eliminating roundtrips when creating intermediate Xlib surfaces.
7892 Implementation
7893 --------------
7894 Major re-work of font metrics system by Keith Packard. Font metrics
7895 should now be much more reliable.
7897 Glitz backend
7898 -------------
7899 Updated for glitz-0.3.0.
7900 Bug fixes in reference counting.
7902 Test suite
7903 ----------
7904 New tests for cache crashing, rotating text, improper filling of
7905 complex polygons, and leaky rasterization.
7907 Bug fixes
7908 ---------
7909 Fixed assertion failure when selecting the same font multiple times in
7910 sequence.
7912 Fixed reference counting so cache_destroy functions work.
7914 Remove unintended copyright statement from files generated with
7915 PostScript backend.
7917 Fixed to eliminate new warnings from gcc 3.4 and gcc 4.
7919 Snapshot 0.2.0 (2004-10-27 Carl Worth <cworth@cworth.org>)
7920 ===========================================================
7921 New license: LGPL/MPL
7922 ---------------------
7923 The most significant news with this release is that the license of
7924 cairo has changed. It is now dual-licensed under the LGPL and the
7925 MPL. For details see the COPYING file as well as COPYING-LGPL-2.1 and
7926 COPYING-MPL-1.1.
7928 I express my thanks to everyone involved in the license change process
7929 for their patience and support!
7931 New font and glyph internals
7932 ----------------------------
7933 Graydon Hoare has put a tremendous amount of work into new internals
7934 for handling fonts and glyphs, including caches where appropriate.
7935 This work has no impact on the user-level API, but should result in
7936 great performance improvements for applications using text.
7938 New test suite
7939 --------------
7940 This snapshot of cairo includes a (small) test suite in
7941 cairo/test. The tests can be run with "make check". The test suite was
7942 designed to make it very easy to add new tests, and we hope to see
7943 many contributions here. As you find bugs, please try adding a minimal
7944 test case to the suite, and submit it with the bug report to the
7945 cairo@cairographics.org mailing list. This will make it much easier
7946 for us to track progress in fixing bugs.
7948 New name for glitz backend
7949 --------------------------
7950 The gl backend has now been renamed to the glitz backend. This means
7951 that the following names have changed:
7953         CAIRO_HAS_GL_SURFACE    -> CAIRO_HAS_GLITZ_SURFACE
7954         cairo_set_target_gl     -> cairo_set_target_glitz
7955         cairo_gl_surface_create -> cairo_glitz_surface_create
7957 This change obviously breaks backwards compatibility for applications
7958 using the old gl backend.
7960 Up-to-date with latest glitz snapshots
7961 --------------------------------------
7962 This snapshot of cairo is now up to date with the latest glitz
7963 snapshot, (currently 0.2.3). We know that the latest cairo and glitz
7964 snapshots have been incompatible for a very long time. We've finally
7965 fixed that now and we're determined to not let that happen again.
7967 Revert some tessellation regression bugs
7968 ----------------------------------------
7969 People that have been seeing some tessellation bugs, (eg. leaked
7970 fills), in the CVS version of cairo may have better luck with this
7971 release. A change since the last snapshot was identified to trigger
7972 some of these bugs and was reverted before making the snapshot. The
7973 behavior should be the same as the previous (0.1.23) snapshot.
7975 Miscellaneous changes
7976 ---------------------
7977 Changed CAIRO_FILTER_DEFAULT to CAIRO_FILTER_BEST to make gradients
7978 easier.
7980 Track XCB API change regarding iterators.
7982 Various bug fixes
7983 -----------------
7984 Fix calculation of required number of vertices for pen.
7986 Fix to avoid zero-dimensioned pixmaps.
7988 Fix broken sort of pen vertices.
7990 Fix bug when cairo_show_text called with a NULL string.
7992 Fix clipping bugs.
7994 Fix bug in computing image length with XCB.
7996 Fix infinite loop bug in cairo_arc.
7998 Fix memory management interactions with libpixman.
8000 Snapshot 0.1.23 (2004-05-11 Carl Worth <cworth@isi.edu>)
8001 ========================================================
8002 Fixes for gcc 3.4
8003 -----------------
8004 Fix prototype mismatches so that cairo can be built by gcc 3.4.
8006 Updates to track glitz
8007 ----------------------
8008 Various fixes to support the latest glitz snapshot (0.1.2).
8010 Gradient updates
8011 ----------------
8012 Radial gradients now support both inner and outer circles.
8013 Transformed linear gradients are now properly handled.
8014 Fixes for extend type reflect.
8016 Glitz updates
8017 -------------
8018 Converted shading routines to use fixed point values and introduced a
8019 shading operator structure for more efficient shading calculations.
8020 Support compositing with mask surface when mask is solid or
8021 multi-texturing is available.
8023 PNG backend cleanups
8024 --------------------
8025 Fix output to properly compensate for pre-multiplied alpha format in cairo.
8026 Add support for A8 and A1 image formats.
8028 Bug fixes
8029 ---------
8030 Avoid crash or infinite loop on null strings and degeneratively short
8031 splines.
8033 New? bugs in cairo_clip
8034 -----------------------
8035 There are some fairly serious bugs in cairo_clip. It is sometimes
8036 causing an incorrect result. And even when it does work, it is
8037 sometimes so slow as to be unusable. Some of these bugs may not be
8038 new, (indeed cairo_clip has only ever had a braindead-slow
8039 implementation), but I think they're worth mentioning here.
8041 Snapshot 0.1.22 (2004-04-16 Carl Worth <cworth@isi.edu>)
8042 ========================================================
8043 Cairo was updated to track the changes in libpixman, and now depends
8044 on libpixman version 0.1.1.
8046 Snapshot 0.1.21 (2004-04-09 David Reveman <c99drn@cs.umu.se>)
8047 =============================================================
8048 New OpenGL backend
8049 ------------------
8050 The OpenGL backend provides hardware accelerated output for
8051 X11 and OS X. The significant new functions are:
8053         cairo_set_target_gl
8054         cairo_gl_surface_create
8056 Automatic detection of available backends
8057 -----------------------------------------
8058 The configure script now automatically detect what backends are
8059 available, (use ./configure --disable-`backend' to prevent
8060 compilation of specific backends).
8062 Snapshot 0.1.20 (2004-04-06 Carl Worth <cworth@isi.edu>)
8063 ========================================================
8064 New pattern API
8065 ---------------
8066 David Reveman has contributed a new pattern API which enable linear
8067 and radial gradient patterns in addition to the original surface-based
8068 patterns. The significant new top-level functions are:
8070         cairo_pattern_create_linear
8071         cairo_pattern_create_radial
8072         cairo_pattern_create_for_surface
8073         cairo_pattern_add_color_stop
8074         cairo_set_pattern
8076 Any code using the old cairo_set_pattern, (which accepted a
8077 cairo_surface_t rather than a cairo_pattern_t), will need to be
8078 updated.
8080 Update to XCB backend
8081 ---------------------
8082 The XCB backend is now enabled by default, (use ./configure
8083 --disable-xcb to turn it off).
8085 Faster clipping
8086 ---------------
8087 Graydon Hoare has added optimizations that make cairo_clip much faster
8088 when the path is a pixel-aligned, rectangular region.
8090 Bug fixes.
8092 Snapshot 0.1.19 (2004-02-24 Carl Worth <cworth@isi.edu>)
8093 ========================================================
8094 New PNG backend
8095 ---------------
8096 Olivier Andrieu contributed a new PNG backend. It builds on the
8097 existing image backend to make it easy to render "directly" to a
8098 .png file. The user never needs to deal with the actual image
8099 buffer. The significant new functions are:
8101         cairo_set_target_png
8102         cairo_png_surface_create
8104 The PNG backend is not enabled by default so that by default there is
8105 not a new dependency on libpng. Use ./configure --enable-png to enable
8106 this backend.
8108 Snapshot 0.1.18 (2004-02-17 Carl Worth <cworth@isi.edu>)
8109 ========================================================
8110 Path query functionality
8111 ------------------------
8112 It's now possible to query the current path. The two new functions
8113 are:
8115         cairo_current_path
8116         cairo_current_path_flat
8118 Each function accepts a number of callback functions that will be
8119 called for each element in the path (move_to, line_to, curve_to,
8120 close_path). The cairo_current_path_flat function does not accept a
8121 curve_to callback. Instead, all curved portions of the path will be
8122 converted to line segments, (within the current tolerance value). This
8123 can be handy for doing things like text-on-path without having to
8124 manually interpolate Bézier splines.
8126 New XCB backend
8127 ---------------
8128 Jamey Sharp has contributed a second X backend that uses the new, lean
8129 XCB library rather than Xlib. It cannot currently be compiled at the
8130 same time as the Xlib backend. See ./configure --enable-xcb.
8132 Build fixes for cygwin.
8134 Bug fixes.
8136 Snapshot 0.1.17 (2003-12-16 Carl Worth <cworth@isi.edu>)
8137 ========================================================
8139 Better text support
8140 -------------------
8141 This snapshot provides much better text support by implementing the
8142 following four functions:
8144         cairo_text_extents
8145         cairo_glyph_extents
8146         cairo_text_path
8147         cairo_glyph_path
8149 The text/glyph_extents functions can be used to determine the bounding
8150 box (and advance) for text as if drawn by show_text/glyphs.
8152 The text/glyph_path objects functions place text shapes on the current
8153 path, where they can be subsequently manipulated. For example,
8154 following these functions with cairo_stroke allows outline text to be
8155 drawn. Calling cairo_clip allows clipping to a text-shaped region.
8157 Combined dependencies
8158 ---------------------
8159 The cairo core now depends only on the libpixman library. This single
8160 library replaces the three previous libraries libic, libpixregion, and
8161 slim. Thanks to Dave Beckett <dave.beckett@bristol.ac.uk> for all of
8162 the heavy lifting with this renaming effort.
8164 Conditional compilation of backends
8165 -----------------------------------
8166 Cairo now allows optional backends to be disabled at compile time. The
8167 following options may now be passed to the configure script:
8169         --disable-xlib
8170         --disable-ps
8172 Note that the first option is a change from the old --without-x option
8173 which will no longer have any effect.
8175 OS X supported - several byte-order issues resolved
8176 ---------------------------------------------------
8177 Cairo has now been successfully compiled under OS X. Testing revealed
8178 that there were some byte-order problems in the PostScript backend and
8179 the PNG generation in the demos. These have now been resolved.
8181 2003-10
8182 =======
8183 Graydon Hoare <graydon@redhat.com> implemented the first real text
8184 support using Freetype/fontconfig, (previous versions of cairo used
8185 Xft and could only draw text when using an X backend).
8187 2003-09
8188 =======
8189 Graydon Hoare <graydon@redhat.com> added the first real support for
8190 running cairo with a non-render-aware X server.
8192 Jamey Sharp <jamey@minilop.net> virtualized the backend font and
8193 surface interfaces in September, 2003.
8195 2003-06
8196 =======
8197 Xr is renamed cairo to avoid confusion since it no longer had a strict
8198 dependence on X.
8200 2003-05
8201 =======
8202 A new image surface backend is added to Xr. Keith Packard
8203 <keithp@keithp.com> wrote the image compositing code in libic that is
8204 used for the image_surface backend. This code was originally written
8205 as the software fallback for the render extension within the X
8206 server.
8208 2002-06
8209 =======
8210 Carl Worth <cworth@isi.edu> wrote the first lines of Xr, after Keith
8211 Packard <keithp@keithp.com> proposed the plan for a stateful drawing
8212 library in C providing a PostScript-like rendering model.
8214  LocalWords:  mutex BeOS extraordinaire distro's URL lcd bool tarball