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

Reply via email to