This is the cairo roadmap. Everything here is subject to change, but it is hoped that all of it will be useful. If you want to influence the roadmap, please feel free to get involved with cairo.

cairo 1.6.6 (Currently unscheduled---should get a subset of the 1.6.x issues from below)

• Add dithering for xlib fallbacks (behdad)

• Eliminate XGetImage from xlib fallbacks (behdad)

• Make cairo-ft respect FC_FT_FACE pattern element. (behdad)

cairo 1.8 (September 22, 2008)

✓ User-font API (in 1.7.4)

cairo_toy_font_face_create, cairo_toy_font_face_get_* (in 1.7.4)

cairo_show_text_glyphs (in 1.7.4)

cairo 1.10 (September 6, 2010)

✓ Support for extended PDF blend mode operators (Benjamin Otte)

✓ Scan line polygon rasterisation, aka spans. (sanooj) Currently only fills are supported, stroke is waiting for stroke-to-path support.

✓ Give backends access to raw jpeg data and use this in e.g. in PDF/PS/Win32-printing backends to embed jpeg images without lossy recompression (adrianj) (see long thread starting with

• mime-surface (ickle) A convenience surface for lazily decoding compressed image data.

✓ Various debugging utilities - integration of cairo-trace, cairo-script and sphinx. (ickle) Sphinx is still WIP, and will remain an external utility.

✓ Avoid re-embedding the same image in the PDF backend, aka snapshot-cow (cworth)

• Debug environment variable to disable PDF compression (ickle)

In the meantime, a useful workaround is to use pdftk to post-process the document to remove the compression:

pdftk original.pdf output new.pdf uncompress

Or use podofo’s uncompress utility:

podofouncompress original.pdf new.pdf

cairo 1.12 (2011?)

✓ Add support for programmatic patterns, (ie. arbitrary gradients).

This should likely be modeled after PostScript Type 6 and Type 7 shading functions, (coons patch and tensor-product patch meshes). See the PostScript Language Reference for details.

• David Turner's cairo-ft rewrite. (behdad)

cairo_font_options_[gs]et_writing_mode (behdad)

cairo_font_metrics_t (behdad)

• API to allow enable/disabling certain subsetters (adrianj) This would also be useful feature to control via an environment variable as it would allow the user to override the application settings.

• API to set surface metadata (title, author, etc). This should be a generic surface API. See two threads: [1] [2]

• Support document hyperlinks (adrianj) See thread See if this can be a generic "insert object" API

• Damage-tracking interface, (track other stuff as well?) (ssp)

• Higher-quality downscaling (fred)

For other ideas that have been proposed for cairo but are not yet scheduled on the roadmap of any particular release, please see the todo page.

Where does the information on this roadmap come from?

The intent is for this to be a living document. We want both the users of cairo, (GTK+, GNOME, Mozilla, Mono, etc. etc.) to let us know features they need and dates by which they are needed so that we can use those to guide our plans.

Additionally, people who are actively developing cairo itself should regularly update this document to reflect their current plans. If you don't want to see a particular release happen without some essential feature, then put that feature on the list and put your name next to it to indicate you are working on it.


Firefox 3.0 (Roadmap)

Firefox 3 is the first release expected to use cairo for all rendering. The cairo 1.6.4 release appears to be adequate for Firefox according to what we've heard from Mozilla folks. If future Mozilla product/projects require more from cairo, please let us know.

GNOME (Roadmap)

GNOME has a regular (6 month) release schedule, so there's always another GNOME release coming up soon.