Shaping ======= Layout Driver ============= The PangoLayout object is a highlevel driver that takes an attributed string and produces lines of glyphs. As well as just implementing this, there are various improvements that need to be made to * Figure out better ways of doing line breaks. (This may involve implementing the TeX/Raph x0-x1 stuff for line breaks.) X rendering =========== * The point-size/pixel size handling is not done right. Right now we are just assuming pixel == point, because trying to use the point-size fields of the X fonts didn't work on systems with both 100 and 75 dpi fonts installed. We should query the X server for its actual reported value and use that to translate point size to pixel size. (This doesn't really handle the case of optically scaled bitmaps properly, but I think that is an ignorable problem.) * Right now we assume a single resolution for all fonts on a display; but in theory, the resolution could be per-screen. To solve this, we would probably want to add a window argument to pango_x_get_context() and then have some sort of X specific font loading interface. Other rendering engines ====================== Somebody should start working on a libart font-system / renderer soon, to make sure that the interfaces are suitable. Engines ======= * Switch engines to be indentified by properties, instead of hardcoded role/language. (?) Language Modules ================ * It would be nice to have X based renderers for a few more scripts; Arabic in particular is one such script. * Once we have a libart renderer, porting Raph's devanagari shaper to Pango and C (from Perl) would be a cool demo and test case. * The clusters set by the current modules need to be set. Documentation ============= * Much or all of the X Fonts document from pango.org needs to be moved into the API reference. General ======= * Move font sizes to 1000ths of a point where they are still doubles. * Remove the extraneous font argument from the script_shape virtual function in ShapeEngine. * rename pango_context_set_size() to pango_context_set_font_size() * PangoAttrList currently takes the policy of "most recent wins" when multiple attributes of the same type are present for a range. It would map better on the TkText tag-based API if attributes also had a depth/priority and "most recent wins" only applied for attributes of the same priority. * Add a "make test" target to examples/, add environment variables to point to module and font alias files, remove the code that loads these from the current directory. (There are security implications with the current stuff) * pango_context_list_fonts() does not properly suppress duplicates when multiple font maps are involved * Report errors from functions, these errors include such things. - Invalid string - Font does not match Probably the right thing to do here is to use something very close to the GConf API ... see Havoc's GException proposal. * Allow UTF8 strings with embedded NULLs. * Write a small default shaping engine that only draws a placeholder character ... and does that in a way that always works. * Finish coverting over from utils.c to Tom Tromey's libunicode. Add the remaining useful functions from utils.c into libunicode.