IMPORTANT -*- Text -*- * The new layout routine needs lots of work, particularly it should to do alignment right, if it is even possible [some work has been done in this direction, but it's far from perfect, especially WRT math formulae] * Figure out how font's space params relate to the whitespace between words in DVI. * Go through the current font encoding translation tables and fix the unknown glyphs (do a make enc/*.h after ./configure --enable-developer-warnings to see the problems). [nearly done] BUGS: [None except the known limitations] UPDATES: * Look into the new Unicode 3.2 math characters. Update existing math encodings. Especially: math brackets have changed. And maybe it's time to add AMS font encodings. SMALL IMPROVEMENTS: * Add encodings: LaTeX symbols, TEX extended ASCII. * should ./configure --enable-developer-warnings add -Wall etc. to CFLAGS if we're using gcc? CLEANUPS * page.c : - Change the prototype of bubble(). - Move the special-case adjustemts (diacritics, big operators, radicals) to a separate source file. - box_t has grown large. Do we need a constructor? - Rethink the *clean targets in the makefile. PROJECTS * Supplements to outenc.c : - Add more visual substitutions for ascii and latin1 output encodings. - Think about printing the LaTeX name of important math symbols if the output encoding is not unicode (e.g. \alpha, \omega, \int, \sum). Should this happen automatically / by cmd line option / as an extra output encoding ? - If we do this, the accenting code may have to special-case accented glyphs of output width > 1. * Restructure the layout code (page_end in page.c) : - Break up the messy single loop over the whole page into several independant passes. Addition of a "flags" member (and possibly others ?) to struct box_t seems neccessary then. - Think about how to avoid repeated duplication of code to treat the last line of each page correctly. Addition of an extra "end of page" glyph below the last line is one possibility. * Math layout improvements -- the word break heuristics we use work well with normal text, but fail miserably with math (no wonder since TeX uses different spacing methods for math and the document author usually adds another, impredictable, bunch of spacing instructions). This leads to funny spacing in catdvis output and to badly aligned sub- and superscripts. Example: $(A_i + B_j)$ may result in something like (A+B ) i j One possible approach would be: there are no word breaks in formulae. Position every glyph in a formula based on its DVI coordinates (as we do with word beginnings). Think about how to pick the glyphs that we have to position directly. Some ideas: - based on glyph hints (i.e. per-unicode-char information) - based on per-font information (math chars form extra character sets, at least with TeX). Not really nice. - Some cases can be detected by looking at "intersecting lines" (e.g. the indices intersect with the line on which the variables are placed). * Add rule support. Most important are line-like rules (for fractions, tables etc.). Possible strategy: - When reading page data, detect those rules and put them in a list. - Add some extra "placeholder" glyphs to the text in order to reserve the neccessary space. - Don't directly print the text in a page; draw it on a text canvas (similar to array[x, y] of glyph_t) first. - Draw the rules on the canvas, using the unicode line drawing chars (and some logic to or them together). - Now print the canvas. Convert line drawing chars to the selected output encoding -- {'|', '-', '+'} should be sufficient. WISHLIST * Implement TFM file location routine also without kpathsea