Find a file
Emmanuele Bassi 6ac5348308 The GDI coordinate system is inverted compared to cairo's here, so the
delta-y value needs to be negated, otherwise glyph runs with non-zero 
y-advances will shift in the wrong direction.

See mozilla bug https://bugzilla.mozilla.org/show_bug.cgi?id=1962816 and
earlier https://bugzilla.mozilla.org/show_bug.cgi?id=454098 where this was
first discovered & fixed, but unfortunately was not upstreamed at that 
time.
2025-07-14 14:41:40 +00:00
.gitlab-ci ci: Install android toolchain into our own image 2025-03-26 10:18:13 +00:00
boilerplate Drop support for very old GCC versions 2025-06-16 18:52:39 +02:00
doc docs: Use the proper xinclude path 2023-09-23 15:18:32 +01:00
meson-cc-tests Add support for C11 atomics 2024-05-26 21:17:39 +09:30
perf Fix cairo-perf-print build on Solaris 2024-10-13 11:07:44 -07:00
src The GDI coordinate system is inverted compared to cairo's here, so the 2025-07-14 14:41:40 +00:00
subprojects build: Update wrap files 2025-03-26 10:18:13 +00:00
test Fix pdf-structure test build on Solaris 2024-10-13 11:01:59 -07:00
util Drop support for very old GCC versions 2025-06-16 18:52:39 +02:00
.gitignore Ignore build instead of builddir 2021-05-29 18:13:30 +02:00
.gitlab-ci.yml ci: remove macos job that used ancient intel mac mini runners 2025-06-25 11:14:17 +01:00
AUTHORS Misc. typos 2019-01-31 17:37:15 -08:00
BUGS BUGS: update bug database links to use gitlab instead of bugzilla 2024-09-30 18:58:00 -07:00
CODING_STYLE Add emacs modeline to CODING_STYLE 2023-01-15 19:00:22 +10:30
COPYING Add a COPYING file to each aux. source directory 2008-10-31 16:14:14 +00:00
COPYING-LGPL-2.1 Update FSF address 2010-04-27 11:13:38 +02:00
COPYING-MPL-1.1 Add the MPL as a new license option, in addition to the LGPL. 2004-09-04 06:38:34 +00:00
HACKING BUGS: update bug database links to use gitlab instead of bugzilla 2024-09-30 18:58:00 -07:00
INSTALL README fixes 2023-01-15 19:00:22 +10:30
meson.build Meson: Define _CRT_SECURE_NO_WARNINGS when compiling with MSVC 2025-06-16 19:10:07 +02:00
meson.options Merge branch 'meson' into 'master' 2025-01-30 09:31:59 +00:00
NEWS Release Cairo 1.18.4 2025-03-08 13:23:25 +00:00
README.md Readme: Update Windows OS requirements to Windows Vista 2025-01-16 16:49:05 +01:00
version.py build: Turn version.py into idiomatic Python 2023-02-02 08:37:28 +01:00

Cairo: Multi-platform 2D graphics library

https://cairographics.org

What is cairo

Cairo is a 2D graphics library with support for multiple output devices. Currently supported output targets include the X Window System (via both Xlib and XCB), quartz, win32, and image buffers, as well as PDF, PostScript, and SVG file output.

Cairo is designed to produce consistent output on all output media while taking advantage of display hardware acceleration when available (for example, through the X Render Extension).

The cairo API provides operations similar to the drawing operators of PostScript and PDF. Operations in cairo include stroking and filling cubic Bézier splines, transforming and compositing translucent images, and antialiased text rendering. All drawing operations can be transformed by any affine transformation (scale, rotation, shear, etc.).

Cairo has been designed to let you draw anything you want in a modern 2D graphical user interface. At the same time, the cairo API has been designed to be as fun and easy to learn as possible. If you're not having fun while programming with cairo, then we have failed somewhere---let us know and we'll try to fix it next time around.

Cairo is free software and is available to be redistributed and/or modified under the terms of either the GNU Lesser General Public License (LGPL) version 2.1 or the Mozilla Public License (MPL) version 1.1.

Where to get more information about cairo

The primary source of information about cairo is its website:

The latest versions of cairo can always be found at:

Documentation on using cairo and frequently-asked questions:

Mailing lists for contacting cairo users and developers:

Roadmap and unscheduled things to do, (please feel free to help out):

Dependencies

The set of libraries needed to compile cairo depends on which backends are enabled when cairo is configured. So look at the list below to determine which dependencies are needed for the backends of interest.

For the surface backends, we have both "supported" and "experimental" backends. Further, the supported backends can be divided into the "standard" backends which can be easily built on any platform, and the "platform" backends which depend on some underlying platform-specific system, (such as the X Window System or some other window system).

As an example, for a standard Linux build similar to what's shipped by your distro, (with image, png, pdf, PostScript, svg, and xlib surface backends, and the freetype font backend), the following sample commands will install necessary dependencies:

  • Debian (and similar):

    • apt-get build-dep cairo
  • Fedora (and similar):

    • dnf builddep cairo

Technically you probably don't need pixman from the distribution since if you're manually compiling Cairo you probably want an updated pixman as well. However, if you follow the default settings and install pixman to /usr/local, your Cairo build should properly use it in preference to the system pixman.

Supported, "standard" surface backends

image backend (required)

PNG support (preferred)

PDF backend

PostScript backend

SVG backend

  • none

Supported, "platform" surface backends

Xlib backend

xlib-xrender backend

Quartz backend

  • macOS >= 10.4 with Xcode >= 2.5

Windows backend

  • Microsoft Windows Vista or newer.

XCB backend

Font backends (required)

freetype font backend

Quartz-font backend

  • MacOS X >= 10.4 with Xcode >= 2.5

Windows GDI font backend

  • Microsoft Windows 2000 or newer

Windows DirectWrite font backend

  • Microsoft Windows 7 or newer

Compiling

See the INSTALL document for build instructions.

Licensing

Cairo is released under the terms of either the GNU Lesser General Public License version 2.1, or the terms of the Mozilla Public License version 1.1.

See the COPYING document for more information.

History

Cairo was originally developed by Carl Worth cworth@cworth.org and Keith Packard keithp@keithp.com. Many thanks are due to Lyle Ramshaw without whose patient help our ignorance would be much more apparent.

Since the original development, many more people have contributed to cairo. See the AUTHORS document for as complete a list as we've been able to compile so far.