[cairo] Continued support for Mac OS X v10.4 Tiger (was: Cairo 1.14 error on OS X 10.10.3 Yosemite)

Ryan Schmidt cairo-2015 at ryandesign.com
Sat May 9 13:58:32 PDT 2015

On May 8, 2015, at 5:58 PM, Daven Quinn wrote:
> I recently upgraded to Cairo 1.14.2 (installed via Homebrew) on my Mac OS X (latest) system. I am using it via CairoSVG to create PDF graphics. The upgrade broke the glyph rendering of CairoSVG, resulting in grossly too-large font glyphs (with the same baseline/spacing as prior, leading to compressed text). I have tried building from source and relinking. An example of the output is shown below. 
> Downgrading to cairo 1.12.16 fixes the issue (see attached), although the following warning is raised (which does not appear in 1.14):
> May  4 18:37:47 Daven-Quinn python2.7[993] <Error>: The function ‘CGFontGetGlyphPaths’ is obsolete and will be removed in an upcoming update. Unfortunately, this application, or a library it uses, is using this obsolete function, and is thereby contributing to an overall degradation of system performance.
> Any insights on a possible fix?

I do not have insight on your issue. I only want to explain that it is true that cairo 1.14.0 and earlier used CGFontGetGlyphPaths and other related now-obsolete functions, because these are the only available functions for implementing Quartz support on Mac OS X v10.4 Tiger. In cairo 1.14.2 more modern replacement functions were used instead, at the expense of Tiger support; cairo 1.14.2 with Quartz now requires Mac OS X v10.5 Leopard or newer. Whether this change in cairo is permanent or might yet be reversed is, as far as I know, still up for discussion. Homebrew probably doesn't care, as they have themselves required Leopard or newer for some time already, but I represent MacPorts, which still runs on Tiger and newer, so I still care about cairo supporting Tiger. Apple sold a lot of PowerPC machines that can run Tiger that cannot run Leopard.

I understand that Apple wants developers to move to the most modern APIs available, but I do not understand how the use of this old API could be "contributing to an overall degradation of system performance". As a user, I would not worry about this message. As a developer, I would look for a way to use the new function when available, and otherwise continue to use the old function.

More information about the cairo mailing list