Drawing a filled shape with a solid border and transparency applied to the whole currently requires the creation of an intermediate surface (so the fill doesn&#39;t show through the border). Likewise, compositing a group of objects separately from other objects already on a surface requires the creation of an intermediate surface containing only the objects to be composited. Unless I&#39;m mistaken about the way Cairo works, such intermediate surfaces assume the form of a bitmap with a given resolution, adding to the memory footprint during rendering and making it impossible to export these images as 100% resolution-independent SVGs.<br>
<br>If this is correct, I hereby propose the creation of a high-level surface type containing only drawing commands. These surfaces could then be blended together with a target surface just like for image surfaces, but the new surface type would retain the vector nature of any vector-based drawing commands. This would in turn allow for the creation of pure vector images when rendering such surfaces to an SVG target (assuming SVG is compatible with this approach).<br>
<br>Does this sound like a good idea?<br>