Cairo: Making Graphics Easy to Print
Free software operating systems have often been accused of having pessimal printing support. Recent infrastructure improvements have largely solved the plumbing problem. But adding print support to applications is still painful. Generally, rendering code must be duplicated which often leads to inconsistencies between display and print output.
The cairo graphics library is designed to provide high-quality print output with the same API used for rendering to a display. The initial approach toward implementing printing support was to prioritize output fidelity over memory or bandwidth requirements yielding an implementation that achieves consistent print quality through reuse of image-based rendering code. Or we were just lazy and it was easy that way. Either way, it was a pig.
This paper will discuss recent progress in cairo's printing backends as they develop into first-class citizens. Generating efficient, high-quality print output is complicated because PostScript has an imaging model fundamentally more limited than that of cairo. This and other challenges will be presented along with our solutions.
Carl is the maintainer and primary author of the cairo graphics library. He works for Red Hat doing desktop-related development. He also has experience with embedded Linux systems. Carl has MS/BS degress in Electrical and Computer Engineering from Brigham Young University.