I'm getting near to finishing my work on the new intermediate format. Logically, performance tests have to show whether the goals have been achieved. Generally, they have: - Rendering directly from the new intermediate is a lot faster than from the old area tree XML format. - The new intermediate files are also a lot smaller. - New output formats are much easier to implement than the old Renderers.
However, the performance tests showed that the improvement for the PostScript output was rather small (and that's one of the most important formats in that context). The cause was my simplistic approach to glyph positioning (using the xshow operator). It causes at least one DecimalFormat.format() call per glyph even if the text has no kerning, letter/wordspacing or justification. So I had to revise my decision to simply carry a "dx" (from SVG) property with glyph offsets. Adding SVG's letter-spacing and word-spacing attributes made it possible to keep dx to null in many cases. Furthermore, a custom text painting operator in PostScript (similar to PDF's TJ) allowed much more compact PostScript code and brought the performance back in the region of PDF and AFP. So, IFPainter.drawText will get two new parameters letterSpacing and wordSpacing. I'm currently updating the rest of the output formats in a similar way (for example, PDF gets to use the Tc operator for letter-spacing). AFP will also profit from that. I'll commit when everything's working again. I'll also publish performance figures when this is done. Jeremias Maerki