Shaping ======= Layout Driver ============= The PangoLayout object is a highlevel driver that takes an attributed string and produces lines of glyphs. * Figure out better ways of doing line breaks. (This may involve implementing the TeX/Raph x0-x1 stuff for line breaks.) * Add spacing parameter as illustrated; this should be a quick (10 minute) addition. * Although PangoLayout isn't intended to handle large amounts of text, it should be able to handle embedded "\n" and simple multiple paragraphs. This could be done entirely within pango_layout_check_lines() * Attribute handling needs to be added (fg/bg/underline, etc.) Each PangoItem should have a list of associated non-font attributes ... though this would require a bit more thought as to memory-management of PangoItem, which is currently add-hoc. X rendering =========== * 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. * FreeType-2.0 support could be very interesting, with the OpenType that it has. Engines ======= * Switch engines to be indentified by properties, instead of hardcoded role/language. (?) Language Modules ================ * It would be nice to have X based shapers for a few more scripts; Hindi is one obvious need. (Actually, there may be a need for a generic framework for Indic shapers to be developed. A libpango-indic...) * 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. * Tamil module should be switched over to libunicode from utils.c stuff. 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. * s/num_chars/n_chars/ etc. (Always use n_ as enumeration prefix) * Underline attribute should be an enumeration (none/single/double/squiggle/low, where low is below the ink rect - a style appropriate for underline accelerators.)