This uses libbfd, a library which is not exposed on a typical NetBSD
system, but may be on Linux. libbfd does not appear to have a stable
API, so this code may unexpectedly break.
Reported by Dr. Thomas Orgis (problems manifest on CentOS 7)
Memory allocated via FT_Get_MM_Var should be freed via FT_Done_MM_Var since
freetype 2.9. Backport patches from upstream to address missing parts not doing
that.
PKGREVISION++
pkglint -r --network --only "migrate"
As a side-effect of migrating the homepages, pkglint also fixed a few
indentations in unrelated lines. These and the new homepages have been
checked manually.
Release 1.16.0 (2018-10-19 Bryce Harrington <bryce@bryceharrington.org>)
========================================================================
This new stable release incorporates a number of improvements made in
the four years since 1.14.0.
Of particular note is a wealth of work by Adrian Johnson to enhance PDF
functionality, including restoring support for MacOSX 10.4, metadata,
hyperlinks, and more.
Much attention also went into fonts, including new colored emoji glyph
support, variable fonts, and fixes for various font idiosyncrasies.
Other noteworthy changes include GLESv3 support for the cairo_gl
backend, tracking of SVG units in generated SVG documents, and cleanups
for numerous test failures and related issues in the PDF and Postscript
backends.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.16.0
Features and Enhancements
-------------------------
* Add support for OpenGL ES 3.0 to the gl backend.
* The PDF backend has gained support for a range of widely used
features, including thumbnails, page labels, metadata, document
outlines, structured text, hyperlinks, and tags. Tags permit adding
logical info such as headings, tables, figures, etc. that facilitates
indexing, accessibility, text reflow, searching, and extraction of the
tagged items to other software. For details on this new PDF
functionality, see:
https://lists.cairographics.org/archives/cairo/2016-June/027427.html
* Variable font support. Variable fonts are single font files with
various typography characteristics, such as weight or slant, that users
of the font can adjust between two points. Effectively this enables a
single font to behave as multiple fonts.
* Restore MacOSX 10.4 support. Cairo had dropped 10.4 support when
moving to the CoreText API. Now we automatically detect which API to
use via dynamic linking, so can resume supporting this older version
of MacOSX.
* Support colored emoji glyphs, stored as PNG images in OpenType fonts.
* Skia backend is removed
* Use Reusable streams for forms in Level 3 Postscript.
* Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files.
* Add CCITT_FAX mime type for PDF and PS surfaces
* svg: add a new function to specify the SVG document unit
(Bug #90166)
* Use UTF-8 filenames on Windows
API Changes
-----------
Several new APIs were added. No existing APIs were altered.
New PDF functionality:
* cairo_pdf_surface_add_outline
* cairo_pdf_surface_set_metadata
* cairo_pdf_surface_set_page_label
* cairo_pdf_surface_set_thumbnail_size
* cairo_tag_begin
* cairo_tag_end
* CAIRO_STATUS_TAG_ERROR
New error status items for problems relating to PDF tagging:
* CAIRO_STATUS_WIN32_GDI_ERROR
* CAIRO_STATUS_FREETYPE_ERROR
* CAIRO_STATUS_PNG_ERROR
New error status items for handling of GDI, libfreetype, and libpng
errors, respectively.
Setting up Win32 surfaces for HDC with alpha channels:
* cairo_win32_surface_create_with_format
New API for added PDF functionality (see above), and new error
status item for problems relating to PDF tagging.
Variable fonts:
* cairo_font_options_get_variations
* cairo_font_options_set_variations
Tracking units in SVG documents:
* cairo_svg_surface_set_document_unit
* cairo_svg_surface_get_document_unit
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Notable Bug Fixes
-----------------
* Fix thin lines that don't show up when printing in Inkscape due to
overly aggressive culling.
(Bug #77298)
* Fix playback of recording surfaces into PDF surfaces, where objects
with negative coordinates were not getting drawn. To address this,
the coordinate systems for PDF and PS have been changed to match
cairo's coordinate system. This allows recording surfaces to be
emitted in cairo coordinates, and results in the same origin being
used for all operations when using the recording surface XObject.
Test cases for PDF and PS have also been updated accordingly.
(Bug #89232)
* Fix "invalidfont" error on some printers when printing PDFs with
embedded fonts that have glyphs (such as spaces) with
num_contours == 0. (Bug #79897)
* Fix missing glyphs such as thin dashes, which get scaled to 0 in
userspace and thus have their drawing operations culled. (Bug #94615)
* Fix other oddities caused by variously idiosyncratic fonts.
* Fix a data race in freed_pool discovered by Firefox's cairo usage.
The patch adads atomic int load and store functions, with relaxed
memory ordering. (Bug #90318)
* Handle SOURCE and CLEAR operators when painting color glyphs.
(Bug #102661)
* Fix falling back to system font with PDFs using certain embedded
fonts, due to truncated font names.
(Bug #103249)
* Prevent curved strokes in small ctms from being culled from vector
surfaces
(Bug #103071)
* Fix assertion hit with PDFs using Type 4 fonts rendered with user
fonts, due to error when destroying glyph page.
(Bug #103335)
* Prevent invalid ptr access for > 4GB images.
(Bug #98165)
* pdf: Fix internal links pointing to other pages, by pre-calculating
page heights so that link positions can be calculated more accurately.
* Fix error reporting in the xcb backend if fallback fails. Instead of
returning NULL when the X11 server can't do some operation, return a
surface in an error state.
* Clarify documentation regarding device scale inheritance and the units
used in cairo_surface_create_similar_image.
(Bug #99094)
* Call XSync in the xlib backend before setting the error handler to
ignore errors for certain requests, to make sure all pending errors
are handled first.
* Fix regression with text containing space character on Win32.
(Bug: https://gitlab.freedesktop.org/cairo/cairo/issues/339)
For a more comprehensive listing of fixed bugs, see the release notes for the
individual 1.15.x releases.
Release 1.15.14 (2018-09-19 Bryce Harrington <bryce@bryceharrington.org>)
============================================================================
We're nearly ready to finalize the 1.16.0 release, so this snapshot
can be considered a beta for 1.16.
The most notable change this release is a performance optimization for
windows, discussed below. Other than that, much of the development
focus was on final polish and stability as we prepare for 1.16.
Some attention went into getting the testsuite passing at least for the
image backend. The Cairo testsuite depends on external software like
Pixman, and changes in the rendering behavior of these dependencies
change test behavior, leading to false positives.
Results from the Coverity static testing tool were also reviewed. Most
of the issues flagged were false positives, but there were several
legitimate problems found and fixed.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.15.12
Features and Enhancements
-------------------------
* Add more FreeeType font color conversions to support COLR/CPAL
* Update test reference images against current pixman
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
Vasily Galkin introduced a Win32 performance optimization for
CAIRO_OPERATOR_SOURCE when copying data from a backbuffer to an argb32
surface corresponding to a Win32 DC. With this, argb32 drawing should
perform as fast as typical dibsection-buffered GDI drawing. See the
Cairo mailing list for April 2018 for data and discussion of the
performance improvements.
Bug Fixes
---------
* Fix crash when rendering Microsoft's Segoe UI Emoji Regular font.
* Fix build breakage with glesv3 enabled due to non-existant glesv3.pc.
* Fix memory leaks found by Coverity
* Fix incorrect null ptr handling found by Coverity
* Fix test compilation when font-config is disabled
* Use _cairo_malloc instead of malloc (Bug #101547) (CVE-2017-9814)
* Fix assertion failure in the freetype backend (Bug #105746)
Release 1.15.12 (2018-04-04 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
The main focus for this release is the addition of Variable Font
support. Variable fonts are single font files with various typography
characteristics, such as weight or slant, that users of the font can
adjust between two points. Effectively this enables a single font to
behave as multiple fonts.
The Skia backend is disabled in this release, due to severe bitrot, and
will be removed in future releases. Contact the cairo team if you have
a need of this backend.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.15.12
Features and Enhancements
-------------------------
* Variable font support
* Skia backend is disabled
API Changes
-----------
* cairo_font_options_get_variations() and
cairo_font_options_set_variations() are added.
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix errors in csi-trace --help and --version options
* Fix a 'memory leak' in the image compositor, with
pixman_glyph_cache_t.
* Fix access of uninitialized memory found by valgrind
(Bug #91271)
* Fix improper initialization of memory in
_cairo_ft_font_face_create_for_pattern()
(Bug #105084)
* Fix multi-monitor virtual desktop with negative coords on Win32
(Bug #100793)
* Fix issues occuring with older FreeType versions.
Release 1.15.10 (2017-12-07 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
This release adds GLESv3 support to the cairo_gl backend, adds
tracking of SVG units in generated svg documents, and cleans up numerous
test failures and related issues in the PDF and Postscript backends.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.15.10
Features and Enhancements
-------------------------
* Add support for OpenGL ES 3.0 to the gl backend.
* Use Reusable streams for forms in Level 3 Postscript.
* Add CAIRO_MIME_TYPE_EPS mime type for embedding EPS files.
* Add CCITT_FAX mime type for PDF and PS surfaces
* svg: add a new function to specify the SVG document unit
(Bug #90166)
* Use UTF-8 filenames on Windows
API Changes
-----------
* cairo_svg_surface_set_document_unit() and
cairo_svg_surface_get_document_unit()
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix regression in gles version detection
* Fix undefined-behavior with integer math.
* Handle SOURCE and CLEAR operators when painting color glyphs.
(Bug #102661)
* Convert images to rgba or a8 formats when uploading with GLESv2
* Use _WIN32 instead of windows.h to check for windows build.
* Fix sigabrt printing documents with fonts lacking the mandatory .nodef
glyph.
(Bug #102922)
* Prevent curved strokes in small ctms from being culled from vector
surfaces
(Bug #103071)
* Fix painting an unbounded recording surface with the SVG backend.
* Fix falling back to system font with PDFs using certain embedded
fonts, due to truncated font names.
(Bug #103249)
* Fix handling of truetype fonts with excessively long font names
(Bug #103249)
* Fix race conditions with cairo_mask_compositor_t
(Bug #103037)
* Fix build error with util/font-view
* Fix assertion hit with PDFs using Type 4 fonts rendered with user
fonts, due to error when destroying glyph page.
(Bug #103335)
* Set default creation date for PDFs
* Prevent invalid ptr access for > 4GB images.
(Bug #98165)
* Prevent self-copy infinite loop in Postscript surface.
* Fix padded image crash in Postscript surface.
* Fix annotation bugs in PDFs and related memory leaks
* Fix test failures and other assorted issues in ps and pdf code.
* Fix code generation when using GCC legacy atomic operations
(Bug #103559)
* Fix various compilation warnings and errors.
* Fix various distcheck errors with private symbols, doxygen formatting,
etc.
Release 1.15.8 (2017-08-29 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
This small snapshot provides new colored emoji glyph support, and a
handful of minor fixes.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.15.8
Features and Enhancements
-------------------------
* Support colored emoji glyphs, stored as PNG images in OpenType fonts.
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* pdf: Fix internal links pointing to other pages, by pre-calculating
page heights so that link positions can be calculated more accurately.
* image: Fix crash on negative lengths
* win32: Fix initialization of mutexes for static builds
* pdf: Don't emit /PageLabel dict when no labels defined
* font: Fix color font loading on big-endian systems
* font: Fix color font support infinite-loop with empty glyphs
* Fix off by one check in cairo-image-info.c
Release 1.15.6 (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
This new snapshot incorporates changes over the past half-year since the
1.15.4 snapshot, including all the fixes from the 1.14 release series.
The PDF code continues to be enhanced, and we're restored MacOSX 10.4
support. Font-related fixes and improved error handling for X round out
the release.
For a complete log of changes, please see
https://cairographics.org/releases/ChangeLog.1.15.6
Features and Enhancements
-------------------------
* Detect if variable fonts have synthesized bold/italic or non-default
variants, and use a fallback font where needed.
* Restore MacOSX 10.4 support. Cairo had dropped 10.4 support when
moving to the CoreText API. Now we automatically detect which API to
use via dynamic linking, so can resume supporting this older version
of MacOSX.
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix error reporting in the xcb backend if fallback fails. Instead of
returning NULL when the X11 server can't do some operation, return a
surface in an error state.
* Call XSync in the xlib backend before setting the error handler to
ignore errors for certain requests, to make sure all pending errors
are handled first.
* Fix text-glyph-range for quartz-font. Use 0xFFFF instead of 0 for
invalid index tracking.
* Fix handling of Supplementary Multilingual Plane (SMP) Unicode
characters in quartz-font.
* Fix various issues in the drm backend including updating API usage and
general code cleanup.
* Clarify documentation regarding device scale inheritance and the units
used in cairo_surface_create_similar_image.
Bug #99094.
Release 1.15.4 (2016-12-9 Bryce Harrington <bryce@osg.samsung.com>)
=======================================================================
This new snapshot incorporates changes over the past year since the
1.15.2 snapshot, including all the fixes from the 1.14 release series.
Of particular note in this snapshot is a wealth of work by Adrian
Johnson to enhance PDF support, as well as numerous bug fixes provided
by him and other contributors.
For a complete log of changes since the last release, please see:
https://cairographics.org/releases/ChangeLog.1.15.4
Features
--------
* The PDF backend has gained support for a range of widely used
features, including thumbnails, page labels, metadata, document
outlines, structured text, hyperlinks, and tags. Tags permit adding
logical info such as headings, tables, figures, etc. that facilitates
indexing, accessibility, text reflow, searching, and extraction of the
tagged items to other software. For details on this new PDF
functionality, see:
https://lists.cairographics.org/archives/cairo/2016-June/027427.html
API Changes
-----------
cairo_win32_surface_create_with_format
Added a cairo API to set up Win32 surfaces for HDC with alpha channels.
cairo_pdf_surface_add_outline
cairo_pdf_surface_set_metadata
cairo_pdf_surface_set_page_label
cairo_pdf_surface_set_thumbnail_size
cairo_tag_begin
cairo_tag_end
CAIRO_STATUS_TAG_ERROR
New API for added PDF functionality (see above), and new error
status item for problems relating to PDF tagging.
CAIRO_STATUS_WIN32_GDI_ERROR
CAIRO_STATUS_FREETYPE_ERROR
CAIRO_STATUS_PNG_ERROR
New error status items for handling of GDI, libfreetype, and libpng
errors, respectively.
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Bug fixes from 1.15.2 (see the 1.15.2 NEWS for details)
* Fix playback of recording surfaces into PDF surfaces, where objects
with negative coordinates were not getting drawn. To address this,
the coordinate systems for PDF and PS have been changed to match
cairo's coordinate system. This allows recording surfaces to be
emitted in cairo coordinates, and results in the same origin being
used for all operations when using the recording surface XObject.
Test cases for PDF and PS have also been updated accordingly.
(Bug #89232)
* Fix "invalidfont" error on some printers when printing PDFs with
embedded fonts that have glyphs (such as spaces) with
num_contours == 0. (Bug #79897)
* Fix missing glyphs such as thin dashes, which get scaled to 0 in
userspace and thus have their drawing operations culled. (Bug #94615)
* Fix other oddities caused by variously idiosyncratic fonts.
* Fix deadlock when destruction of a scaled font indirectly triggers
destruction of a second scaled font, causing the global cache to be
locked twice. (Bug #93891)
* Fix X errors reported to applications when shmdt() is called before
the Attach request is processed, due to missing xcb and xlib calls.
* Fix random failure in record-paint-alpha-clip-mast test case, caused
by an incorrect assumption that a deferred clear can be skipped.
(Bug #84330)
* Fix crash when dealing with an XShmGetImage() failure, caused by a
double free in _get_image_surface(). (Bug #91967)
* Fix invalid execution of ASCII85 data by the PS interpreter that the
image operator didn't use, by flushing the extraneous data after
drawing the image. (Bug #84811)
* Fix decoding of Adobe Photoshop's inverted CMYK JPEG files in PDF
export.
* Fix unbounded surface assertion in win32-print code.
* Fix a data race in freed_pool discovered by Firefox's cairo usage.
The patch adads atomic int load and store functions, with relaxed
memory ordering. (Bug #90318)
* Cleanup debugging text sent to stdout instead of log. (Bug #95227)
* Fix build issue when using non-GNU strings utility. (Bug #88639)
* Fix build of cairo modules as regular modules, not as versioned shared
libaries. (Bug #29319)
* Fix build on win32 using gcc 5.4.
* Fix build of script backend to require zlib.
* Update test suite reference images using Debian Jessie 64-bit and
poppler current as of June, 2016.
* Various improvements to documentation and tests, compiler warning
fixes, and an assortment of code refactoring and cleanup.
Release 1.15.2 (2015-12-10 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
This release is largely a rollup to include a variety of fixes that
didn't make the cut for the stable 1.14.2 and 1.14.4 releases, as well
as all the fixes from those releases. Notably this includes a highly
requested new API for Win32 surfaces.
For a complete log of changes since the last release, please see:
https://cairographics.org/releases/ChangeLog.1.15.2
Features
--------
None
API Changes
-----------
cairo_win32_surface_create_with_format
Added a cairo API to set up Win32 surfaces for HDC with alpha channels.
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* All the bug fixes from 1.14.2, 1.14.4, and 1.14.6
* Fix xcb/xlib compilation and calls. Make image boxes behave when SHM
is not available.
* Fix various issues with printing and transparent images on Win32.
* Fix thin lines that don't show up when printing in Inkscape due to
overly aggressive culling.
(Bug #77298)
* Fix broken printing via pdf when glyph 0 is used for rendering,
resulting in missing spaces and letters.
(Bug #89082)
* Fix crash for certain glyphs in opentype fonts.
(Bug #91902)
* Fix incorrect rendering of SVG paths with more than one subpath. If
more than one trap is passed in then it's guaranteed that the returned
traps will have their left edge to the left of their right edge, but
if only one trap is passed in then the function always returns without
doing anything.
(Bug #90984)
* Improve rendering with Quartz to better match pixman's blending and
filtering behavior.
Release 1.14.6 (2015-12-09 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Simple bugfix release to fix one Windows issue.
For a complete log of changes since 1.14.4, please see:
https://cairographics.org/releases/ChangeLog.1.14.6
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix failure on Windows due to reference of the function
cairo_win32_surface_create_with_format(), which isn't included in the
1.14.4 release. (Bug #92771)
Release 1.14.4 (2015-10-28 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Just in time for Halloween we see another bug-fix release for Cairo.
This brings a few dozen straightforward bug fixes with no API changes.
In addition, this includes a typical assortment of fixes to tests,
cleanup of warnings and memory leaks, correction of misspellings,
updates to documentation, etc.
For a complete log of changes since 1.14.2, please see:
https://cairographics.org/releases/ChangeLog.cairo-1.14.4
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Avoid appending empty slots to user data arrays. Fixes a memory
consumption regression since commit 9341c254a.
* Return a better error (file-not-found) when setting up pango on
devices where the font files don't have read permissions.
* Fix regression in the font size of canvas text in Inkscape when
compiled with the Quartz backend. (Bug #84324)
* Fix _cairo_gl_shader_bind_matrix() to maintain compatibility with
OpenGL ES 2.0. Manually transpose the matrix.
* Fix incorrect font descriptor conversion when the font matrix yy is
negative. (Bug #90538)
* Fix crash when using a complex path for clip and stroke due to
discarding the intersection exactly at the top edge.
(Bug #74779)
* Fix cairo_get_locale_decimal_point() on Android
* Fix compilation problem on AIX due to conflicting usage of symbol
'jmpbuf'. (Bug #89339)
* Fix broken rendering with XCB due to snapshotting of uploaded part of
surfaces. (Bug #67505)
* Fix loss of alpha when copying a mask for a cairo recording surface,
resulting in a double copy. (Bugs #73038, #73901)
* Fix incorrect recording of certain paths with script surfaces.
(Bug #91054)
* Fix typo in definition of MAYBE_WARN in configure script.
(Bug #89750)
* Fix use of filename variable after it's been freed.
(Bug #91206)
* Fix out of bounds access when printing pattern.
(Bug #91266)
* Fix incorrect size calculation in glyph cache unlocking for Cairo GL
compositor.
(Bug #91321)
* Fix memory leak in _cairo_gl_pattern_texture_setup()
(Bug #91537)
* Fix transparent images in win32-print.
(Bug #91835)
* Fix _put_shm_image_boxes and _put_image_boxes when no SHM available
with XCB.
Release 1.14.12:
Another bugfix release rolling up backported fixes for the past half year.
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix assertion hit with PDFs using Type 4 fonts rendered with user
fonts, due to error when destroying glyph page.
* Fix build error with util/font-view
* Fix handling of truetype fonts with excessively long font names
* Fix falling back to system font with PDFs using certain embedded
fonts, due to truncated font names.
* Fix sigabrt printing documents with fonts lacking the mandatory .nodef
glyph.
* Fix undefined-behavior with integer math.
* Fix various warnings and typos
Unsorted entries in PLIST files have generated a pkglint warning for at
least 12 years. Somewhat more recently, pkglint has learned to sort
PLIST files automatically. Since pkglint 5.4.23, the sorting is only
done in obvious, simple cases. These have been applied by running:
pkglint -Cnone,PLIST -Wnone,plist-sort -r -F
Release 1.14.10 (2017-06-13 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Bugfix release rolling up backported fixes for the past half year.
Bug Fixes
---------
* Clarify documentation regarding device scale inheritance and the units
used in cairo_surface_create_similar_image.
Bug #99094.
* Fix error reporting in the xcb backend if fallback fails. Instead of
returning NULL when the X11 server can't do some operation, return a
surface in an error state.
* Call XSync in the xlib backend before setting the error handler to
ignore errors for certain requests, to make sure all pending errors
are handled first.
* For opentype fonts, always use gid to lookup glyph.
* If glyph 0 used for rendering, remap to different index.
* Set font size to em size when retrieving unhinted metrics.
* Flush ASCII85Decode file after use with Postscript files.
* pdf: Don't fail subsetting if unable to convert utf8 to utf16.
* For truetype, reverse cmap search should end when 0xffff- 0xffff range
reached.
* Fix bug in line wrapping with the PDF operators.
* Fix an off by one check in cairo-image-info.c.
Release 1.14.8 (2016-12-07 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Bugfix release rolling up backported fixes for the past year.
For a complete log of changes since 1.14.6, please see:
http://cairographics.org/releases/ChangeLog.cairo-1.14.8
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Fix "invalidfont" error on some printers when printing PDFs with
embedded fonts that have glyphs (such as spaces) with
num_contours == 0. (Bug #79897)
* Fix deadlock when destruction of a scaled font indirectly triggers
destruction of a second scaled font, causing the global cache to be
locked twice. (Bug #93891)
* Fix X errors reported to applications when shmdt() is called before
the Attach request is processed, due to missing xcb and xlib calls.
* Fix random failure in record-paint-alpha-clip-mast test case, caused
by an incorrect assumption that a deferred clear can be skipped.
(Bug #84330)
* Fix crash when dealing with an XShmGetImage() failure, caused by a
double free in _get_image_surface(). (Bug #91967)
* Fix build issue when using non-GNU strings utility. (Bug #88639)
* Cleanup debugging text sent to stdout instead of log. (Bug #95227)
Release 1.14.6 (2015-12-09 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Simple bugfix release to fix one Windows issue.
Bug Fixes
---------
* Fix failure on Windows due to reference of the function
cairo_win32_surface_create_with_format(), which isn't included in the
1.14.4 release. (Bug #92771)
Release 1.14.4 (2015-10-28 Bryce Harrington <bryce@osg.samsung.com>)
========================================================================
Just in time for Halloween we see another bug-fix release for Cairo.
This brings a few dozen straightforward bug fixes with no API changes.
In addition, this includes a typical assortment of fixes to tests,
cleanup of warnings and memory leaks, correction of misspellings,
updates to documentation, etc.
For a complete log of changes since 1.14.2, please see:
http://cairographics.org/releases/ChangeLog.1.14.4
Features
--------
None
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
None
Bug Fixes
---------
* Avoid appending empty slots to user data arrays. Fixes a memory
consumption regression since commit 9341c254a.
* Return a better error (file-not-found) when setting up pango on
devices where the font files don't have read permissions.
* Fix regression in the font size of canvas text in Inkscape when
compiled with the Quartz backend. (Bug #84324)
* Fix _cairo_gl_shader_bind_matrix() to maintain compatibility with
OpenGL ES 2.0. Manually transpose the matrix.
* Fix incorrect font descriptor conversion when the font matrix yy is
negative. (Bug #90538)
* Fix crash when using a complex path for clip and stroke due to
discarding the intersection exactly at the top edge.
(Bug #74779)
* Fix cairo_get_locale_decimal_point() on Android
* Fix compilation problem on AIX due to conflicting usage of symbol
'jmpbuf'. (Bug #89339)
* Fix broken rendering with XCB due to snapshotting of uploaded part of
surfaces. (Bug #67505)
* Fix loss of alpha when copying a mask for a cairo recording surface,
resulting in a double copy. (Bugs #73038, #73901)
* Fix incorrect recording of certain paths with script surfaces.
(Bug #91054)
* Fix typo in definition of MAYBE_WARN in configure script.
(Bug #89750)
* Fix use of filename variable after it's been freed.
(Bug #91206)
* Fix out of bounds access when printing pattern.
(Bug #91266)
* Fix incorrect size calculation in glyph cache unlocking for Cairo GL
compositor.
(Bug #91321)
* Fix memory leak in _cairo_gl_pattern_texture_setup()
(Bug #91537)
* Fix transparent images in win32-print.
(Bug #91835)
* Fix _put_shm_image_boxes and _put_image_boxes when no SHM available
with XCB.
Problems found with existing digests:
Package fotoxx distfile fotoxx-14.03.1.tar.gz
ac2033f87de2c23941261f7c50160cddf872c110 [recorded]
118e98a8cc0414676b3c4d37b8df407c28a1407c [calculated]
Package ploticus-examples distfile ploticus-2.00/plnode200.tar.gz
34274a03d0c41fae5690633663e3d4114b9d7a6d [recorded]
da39a3ee5e6b4b0d3255bfef95601890afd80709 [calculated]
Problems found locating distfiles:
Package AfterShotPro: missing distfile AfterShotPro-1.1.0.30/AfterShotPro_i386.deb
Package pgraf: missing distfile pgraf-20010131.tar.gz
Package qvplay: missing distfile qvplay-0.95.tar.gz
Otherwise, existing SHA1 digests verified and found to be the same on
the machine holding the existing distfiles (morden). All existing
SHA1 digests retained for now as an audit trail.
Release 1.14.2 (2014-03-09 Bryce Harrington <bryce@osg.samsung.com>)
====================================================================
This release provides collected bug fixes, along with one feature
enhancement for the xcb backend, and a small performance improvement for
fonts.
The running theme of the bug fixes is platform-specific issues, both
build and run-time. Platforms with fixes include Sparc, AIX, Windows
(mingw), and Windows (MSVC8). Memory leaks, valgrind issues, and PDF
issues round out our list.
It's come to light that changes in cairo 1.14 resulted in breakage on
MacOS X 10.4. We've not yet determined whether to fix up the support,
or excise the 10.4-specific code and support only OS X 10.5 or newer.
Meantime, we'll only advertise cairo as working on OS X 10.5.
Features
--------
* Improve xcb's handling of per-screen subpixel ordering. If no
Xft.rgba property is specified, default to the screen's subpixel
order.
API Changes
-----------
None
Dependency Changes
------------------
None
Performance Optimizations
-------------------------
* Improve performance of cpu_to_be32 and be32_to_cpu, making truetype
subsetting of large fonts run about 15% faster.
Bug Fixes
---------
* Fix unaligned access on sparc with the compact font format (CFF).
Unlike truetype, all data in CFF is not aligned.
(Debian bug #712836)
* Fix unaligned access on sparc with tor-scan-converter's memory pool.
* Fix crash when loading a PDF with a transformed image.
(fdo bug #85151)
* Fix regression on mingw for bigendian test due to removal of file
extension for executables.
(fdo bug #85120)
* Fix handling of backslash in PDF interpreter
(fdo bug #85662)
* Fix crash in xlib and xcb renderers when swapping a 0-sized glyph
* Fix bug with RTL text in PDF operators
(fdo bug #86461)
* Fix compilation 'cairo-path-stroke-traps.c' with MSVC8
(fdo bug #84908)
* Fix crash in _fill_xrgb32_lerp_opaque_spans when a span length is
negative.
* Fix valgrind error by releasing pattern created by
cairo_pattern_create_rgb().
* Fix valgrind errors when running cairo-test-suite.
* Fix memory leak in recording surface replays
(fdo bug #87898)
* Fix destruction of fonts in api-special-cases test.
(fdo bug #87567)
* Fix duplicated surface push on similar-image, preventing trivial GTK3
program traces from being replayable, with an error message about
invalid values for the size of the input.
(fdo bug #73580)
* Fix crash when win32 surface's image size does not cover the entire
surface.
(fdo bug #53121)
* Fix crash due to obsolete CGFontGetGlyphPath call
(fdo bug #84324)
* Fix several build issues on AIX
(fdo bugs #89338, #89340, #89356, #89354)
* Fix various documentation warnings and errors
Release 1.14.0 (2014-10-13 Bryce Harrington <bryce@osg.samsung.com>)
====================================================================
Hard to believe it's been over a year since our last release, but it's
not for lack of activity. This release includes contributions of a wide
assortment of bug fixes, build system improvements, warnings cleanups,
codebase refactoring, test suite repairs, and static analysis work.
This release is lighter on features (compared with 1.12.10) but includes
a highly demanded rehaul of our image downscaling functionality, which
solves a serious problem experienced by Inkscape users when shrinking
embedded bitmaps in SVG files. The new scaling algorithms are used by
the image backend and by other backends as needed for fallbacks.
Features
--------
Filtering improvements for the image backend, in particular
down-scaling of images produces filtered images that depend on all the
pixels of the source. When using the image backend you get the
following settings:
CAIRO_FILTER_GOOD: uses a box filter for scales less than .75 in
either direction. For scales larger than this, the same filter as
CAIRO_FILTER_BILINEAR is used.
CAIRO_FILTER_BEST: uses a Catmull-Rom filter always. When upscaling
more than 2x this will produce anti-aliased square pixels, similar
to OS/X.
CAIRO_FILTER_GAUSSIAN: uses PIXMAN_FILTER_BEST, which in current
pixman is the same as BILINEAR. (This is subject to change in the
future).
xlib and xcb also use the image fallback for GOOD/BEST filters, but
note that other backends do not implement these filtering fixes yet,
however other actions may cause them to use an image fallback which
will cause these filters to be used.
Improve handling of device transformation and scaling, allowing Cairo
to now support scaling at a device level, permitting easier, more
transparent HiDPI support.
Support JBIG2 mime data in PDF. This allows embedding of more
compressed JPEG formats within PDF, rather than including the full
uncompressed image. Also, reduce the number of transparency groups
used by PDF to keep the file size small and viewing/printing of the
PDF fast.
Expand the embedding section to include stencil mask support.
Reorder font declarations to be in natural order.
Update the Skia backend to build against current Skia (as of June
2014).
Drop Link-Time Optimization (LTO) support from build system. This
seems to have caused much trouble for unclear benefit, and most
distros are reverting or disabling it anyway.
Optimize VBO size on GL to 1M and to 16k for EGL. This improves
(theoretical) performance for desktop GLX use cases while avoiding
hitting VBO memory size limitations on embedded devices.
API Changes
-----------
cairo_surface_set_device_scale, cairo_surface_get_device_scale:
Sets a scale that is multiplied to the device coordinates
determined by the CTM when drawing to @surface. One common use for
this is to render to very high resolution display devices at a scale
factor, so that code that assumes 1 pixel will be a certain size
will still work.
cairo_egl_device_get_display, cairo_egl_device_get_context:
Support get/set of EGLContext and EGLDisplay for egl-based cairo
devices, similar to GLX.
Dependency Changes
------------------
Cairo now requires glib 2.14 for its gobject helper functions,
and pixman 0.30 for downscaling.
Bug fixes
---------
Don't embed CMYK Jpeg images in svg.
Fix tests to place output in proper location.
Fix determination of alpha for all surfaces when recording.
Extend oversize check to cairo_gl_surface_create_for_texture, so an
error surface is returned if the texture is too large to render to.
Fix embedding of mime data in PDF and PS files.
Remove useless error handling in *_reply() functions in XCB.
Fix a double-free exposed by multithreaded apps creating and
destroying the same font concurrently.
https://bugs.freedesktop.org/show_bug.cgi?id=69470
Fix corrupt stacks produced by bugs in operand emission for trace.
Fix out of bounds array access in format cache for xlib
Don't rename glyphs used by seac operator. This can cause certain
combined characters to use their decorations (e.g. umlauts on ö) to be
lost during printing of PDFs using evince.
https://bugs.freedesktop.org/show_bug.cgi?id=70364
Fix crash on calling cairo_create with a finished surface
Fix SSIZE_T definition problem when making with MSYS on Windows7
Fix one off issue in gl context cleanup
Fix usage of CAIRO_STACK_ARRAY_LENGTH
Fix rectangle stroke with non rectilinear pen
Fix imagemask with pattern source failure on some printers. This bug
could cause files converted using pdftops to fail for example on Ricoh
printers, or opening in Adobe Distiller on Windows.
https://bugs.freedesktop.org/show_bug.cgi?id=69485
Fix whitespace in font names
Fix page size in generated PDFs. When printing using pdftocairo on
larger page sizes, such as 11x17, the image would be cropped to letter
size.
https://bugs.freedesktop.org/show_bug.cgi?id=73452
Fix path-currentpoint test by preserving current-point in
copy_path()/append_path() sequence
Fix generation of HTML in code docs for
cairo-format-stride-for-width. Raw HTML code was being passed
to the browser, instead of displaying normally.
https://bugs.freedesktop.org/show_bug.cgi?id=63257
Fix spelling of "tessellator" throughout code. We're using the
American rather than British spelling of this word.
https://bugs.freedesktop.org/show_bug.cgi?id=50411
Fix crash in pixman_image_composite32
Fix crash when trying to modify a (const) all-clipped cairo_clip_t
https://bugs.freedesktop.org/show_bug.cgi?id=75819
Add check_composite method to all compositors, to fix crashes in the
test suite.
Fix crash in Firefox when scrolling on certain pages.
Fix memory leaks found by static analysis.
Fix build of any2ppm if fork is not available.
Fix broken build for Qt backend, due to missing libstdc++.
Fix typo in two cairo_uint128 functions. Fixes potential build issues
on systems without a uint128 type.
Fix build when --enable-pdf=no
Fix cache_frozen assertions for Win32 print.
Correctly check for xcb image surface for inplace upload
Fix webkit-based web browser crashes due to empty boxes by skipping
over them when tesselating.
Make pixman, libpng, and zlib paths commandline configurable for win32
builds.
Fix image scale on Win32 when GDI scale is not identity.
Fix float endian configure test when using clang -O4
Fix compilation with Android bionic libc
Don't try to build util/sphinx on Windows
Fix loss of precision when emitting joins. This was caused by
discrepancies in line gradients when passing trapezoids around.
Fix loss of precision and associated rendering issues in
cairo-tor-scan-converter from projection onto sample grid.
Fix pixman oversampling of neighbouring edges within a cell by
eliminating self-intersections for the pixman traps compositor.
Fix multi-line string splitting in PDFs
Various cleanups and fixes to warnings, documentation, tests, and
build system. Improve error handling and return value checks.
Cleanup XFAIL tests and reference images. Cover recently added
functionality.
Quartz backend interacts badly with our library stack. The most notable
issue is that when quartz-font is enabled, cairo will never use fontconfig
but instead uses CoreGraphics API to find fonts in system-default font
paths; as a result, any fonts installed with pkgsrc will never be found.
OTOH fontconfig by default searches for fonts in MacOS X system-default
paths too so sticking with it will not cause a problem.
Bug fixes
* Set the correct orientation for simple boxes with a negative scale factor.
* Fix the creation of the shading dictionary in PDF.
* Fix a crash in PDF when incorporating an image with CAIRO_EXTEND_PAD.
* Avoid upscaling bitmap fonts if possible.
* Fix an assertion failure within the mempool allocator for shared memory.
* Fix allocation size for CFF subsets.
* Export cairo_matrix_t for GObject bindings.
* Fix a double free in the Quartz backend.
* Fix origin of GDI StretchBlits for the Windows backend
* Fix error propagation for requests to create a similar surface with
negative size.
* Fix complex clipping of trapezoids with regions
* Stop leaking the image data when loading PNGs
* Fix unbounded operations with a clip mask through the span compositor
* Add missing checks before rendering to a finished surface - so we return
an error rather than hit an assert.
* Prevent an assertion failure when creating similar GL surfaces larger
than supported by hardware.
* Prevent a double free of a similar image under Windows.
to address issues with NetBSD-6(and earlier)'s fontconfig not being
new enough for pango.
While doing that, also bump freetype2 dependency to current pkgsrc
version.
Suggested by tron in PR 47882
Release 1.12.14 (2013-02-10 Chris Wilson <chris@chris-wilson.co.uk>)
====================================================================
In the last week we had a few more bugs reported and promptly resolved.
As these are a combination of regressions and stability issues, it is
time for a prompt update and release. Many thanks to everyone for
testing and reporting issues, and helping to make Cairo better.
Bug fixes
---------
Prevent user callbacks accessing user-data during destroy to prevent
use-after-free bugs.
https://bugzilla.mozilla.org/show_bug.cgi?id=722975
Use standard names for glyphs in subset fonts (PDF).
https://bugs.freedesktop.org/show_bug.cgi?id=60248
Fix detection of Win98. The logic for detecting Win98 (and its broken
AlphaBlend()) was inverted, disabling AlphaBlend() for everyone.
Prevent numeric overflow from extrapolating polygon edges to the clip
boundary and causing severe render artifacts.
https://bugs.freedesktop.org/show_bug.cgi?id=60489
Fix computation of glyph string coordinates when breaking up runs
for xlib.
Fix an assertion in the win32 backend for failing to clear its
similar-images.
https://bugs.freedesktop.org/show_bug.cgi?id=60519
Release 1.12.12 (2013-01-31 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
The goal of this release is to fix the synchronisation problems that
were exhibited in the SHM transport for cairo-xlib. This cropped up
any place that tried to rapidly push fresh pixel data to the X server
through an ordinary image surface, such as gimp-2.9 and evince.
Bug fixes
---------
Avoid replacing the entire image when uploading subimages
https://bugs.freedesktop.org/show_bug.cgi?id=59635
Force synchronisation for scratch SHM image buffers, so that we do
not overwrite data as it is being read by X.
https://bugs.freedesktop.org/show_bug.cgi?id=59635 (also)
Fix typos in detecting multisampling for the GL (MSAA) backend.
Fix a memory leak in the GL (MSAA) backend.
Fix a reference counting bug when mapping a GL surface to an image.
Release 1.12.10 (2013-01-16 Chris Wilson <chris@chris-wilson.co.uk>)
===================================================================
A heap of bug fixes everywhere, and the gradual completion of the MSAA
backend for cairo-gl. Perhaps the most noteworthy set of the bugfixes
was the crusage lead by Behdad Eshfabod to make font handling by
pango/cairo/fontconfig fully threadsafe. This testing revealed a couple
of races that needed fixing in Cairo's scaled-font and glyph cache.
Bug fixes
---------
Append coincident elements to the recording's surface bbtree so that
the list is not corrupted and the overlapping elements lost.
Fix cairo-trace to correctly record map-to-image/unmap-image and then
replay them.
Ignore MappingNotifies when running the XCB testsuite as they are sent
to all clients when the keyboard changes. The testsuite would detect
the unexpected event and complain.
Handle very large large images in the XCB backend.
Fix a memory leak in the xlib/shm layer, and prevent use of the SHM
surfaces after the display is closed.
https://bugs.freedesktop.org/show_bug.cgi
Handle resizing of bitmap fonts, in preparation for a fix to
fontconfig to correctly pass on the user request for scaling.
Always include subroutine 4 (hint replacement idion) when subsetting
type 1 fonts in order to prevent a crash in cgpdftops on Mac OS/X
Fix a couple of typos in the cairo-gobject.h header files for
introspection.
Prevent a mutex deadlock when freeing a scaled-glyph containing a
recording-surface that itself references another scaled-glyph.
https://bugs.freedesktop.org/show_bug.cgi?id=54950
Make scaled-font cache actually thread-safe and prevent
use-after-frees.
Restore support for older versions of XRender. A couple of typos and a
few forgotten chunks prevented the xlib compositor from running
correctly with XRender < 0.10. Note that there are still a few
regressions remaining.