Roadmap

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.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 http://lists.freedesktop.org/archives/cairo/2007-January/009096.html)

✓ 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)

cairo 1.12 (March 23, 2012)

✓ Add support for programmatic patterns, aka mesh gradients.

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

✓ Callback patterns which allows the application to provide the appropriate pixel data at the time of rendering.

✓ cairo-xcb

✓ Common API for addressing various types of surfaces as an image.

✓ Antialias hints (NONE, FAST, GOOD, BEST) to fine tune rasterizer performance vs. quality.

✓ Port the OpenGL backend to GLESv2. Add MSAA compositor refinements for high performance antialiasing.

✓ SHM transport for image transfers to and form the X server.

✓ Make font handling by pango/cairo/fontconfig fully threadsafe.

cairo 1.14 (Oct 13, 2014)

✓ Pixman-based downscaling

✓ Improved handling of device transformation and scaling

✓ JBIG2 mime data in PDF

cairo 1.16 (2017?)

✓ PDF document structuring. Metadata, outlines, hyperlinks, tags, structured text, thumbnails.

• Path effects API. A gaussian blur effect will be introduced with this API for creating arbitrary path shadowing.

• Perspective transform addition to Cairo's matrix functionality.

• GLESv3 support for OpenGL backend

• Drop obsolete driver backends: Skia, OpenVG, Gallium surface.

Unknown / Future work

The status on the following items originally targeted to earlier releases is not currently known. Some may be partly or completely done, others may yet need started.

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

• 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.

• Support document hyperlinks (adrianj) See thread http://lists.cairographics.org/archives/cairo/2007-November/012026.html See if this can be a generic "insert object" API

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

• Add dithering for xlib fallbacks (behdad)

• Eliminate XGetImage from xlib fallbacks (behdad)

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

• 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

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.

Targets

GNOME (Roadmap)

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