cairo/TODO
Adrian Johnson 7047a09174 TODO: Remove PDF encoding issues
All PDF font encoding issues are fixed now that TrueType fonts are
embedded in PDF as CIDFontType2.
2007-10-03 23:10:15 +09:30

111 lines
4.3 KiB
Text

This file contains a list of some things that have been proposed for
inclusion in cairo. None of these items have been scheduled for a
particular release, (see the ROADMAP file next to this TODO file for
those).
If you'd like to see an item on this list get into a particular
release, let us know that you're planning on working on it, (see
http://cairographics.org/lists ), and we can move the item to ROADMAP
with your name on it.
Changes that add new API (API changes/removals will not be considered)
======================================================================
• Add CAIRO_FILL_RULE_INVERSE_WINDING and CAIRO_FILL_RULE_INVERSE_EVEN_ODD
or another way to provide that functionality.
• Add support for programmatic patterns, (ie. arbitrary gradients)
• Add cairo_arc_to.
see http://lists.freedesktop.org/archives/cairo/2005-August/004801.html
or see arc_to branch in bedhad's repository
• Add support for custom caps
It would be nice if the user had a mechanism to reliably draw custom
caps. One approach here would be to provide the coordinates of the
butt cap faces so that the user can append seamless caps to the
current path. We may also need to provide the coordinates of the
faces of every dash as well.
• Polling API (cairo_get_serial and cairo_changed)
• cairo_save/restore_path()
http://lists.freedesktop.org/archives/cairo/2007-April/010363.html
• cairo_copy_clip() and cairo_copy_clip_flat()
http://lists.freedesktop.org/archives/cairo/2007-April/010520.html
Performance improvements
========================
• Add dashing support to the fast-path rectilinear stroking
code, (will help GTK+ focus rectangle, for example)
• Improve software polygon compositing by doing it in a
single scanline pass rather than tessellating, rasterizing, then
compositing the entire polygon.
• Clip trapezoids that are partially outside the clip region
Other fixes
===========
• Fix/define tolerance for PS/PDF/SVG backends
• Fix CAIRO_EXTEND_REFLECT in pixman and remove the current hack
• Fix disabled show-glyphs-many case in cairo test suite
• Get pixman merged up with X server fb implementation
• Possibly remove pdiff (slows down the test suite with little
benefit)
• Make font backends separable from their native surfaces
• Fix cairo so that a degenerate matrix draws nothing rather than
triggering an error state. That is: cairo_scale (cr, 0, 0); should
not cause an error, (though maybe it shouldn't actually draw
_nothing_ for painting an infinite source pattern---compute the
average color for a surface-based source pattern perhaps?).
• The new tessellator has greatly improved performance, robustness,
and code readability, but may still suffer from "missed
intersections" as described here:
http://cm.bell-labs.com/cm/cs/doc/93/2-27.ps.gz
[Hobby93c] John D. Hobby, Practical Segment Intersection with
Finite Precision Output, Computation Geometry Theory and
Applications, 13(4), 1999.
We could do multi-pass Bentley-Ottmann or add a tolerance-square
pass as described by Hobby in the paper above.
• Fix vertical metric and TrueType subsetting:
Text drawn with vertical metrics cannot currently use TrueType
subsetting for PDF/PS output as the code doesn't write out the
necessary VHEA or VMTX entries to the TrueType font
objects. As a result, cairo uses Type3 fonts which generates
slightly different outlines. Type1 has the same problem.
• Pen matrix locking. Carl has written an excellent summary but
unfortunately that was not sent to the mailing list. Ask him.
• Explore Render-like component-alpha ARGB masks
Backend-specific improvements
==============================
Win32 backend
• Fix self-copy test
• Fix trap-clip test
PS/PDF improvements
• Fix extend modes in PDF
• Use glyph advances to generate more compact PostScript (done for PDF)
Xlib backend
• xlib backend requires xrender to compile, while it can perform without
xrender at run time. Make it compile without it. see
http://lists.freedesktop.org/archives/cairo/2006-October/008075.html
• Switch to server-side gradients
• Switch to using XRenderAddTraps rather than XRenderCompositeTrapezoids
• Use XlibRectStretch for nearest-neighbor image scaling.