You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-dev@xmlgraphics.apache.org by Jeremias Maerki <de...@jeremias-maerki.ch> on 2009/02/03 11:10:03 UTC

Intermediate Format Performance: Necessary changes to IFPainter interface

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


Re: Intermediate Format Performance: Necessary changes to IFPainter interface

Posted by Simon Pepping <sp...@leverkruid.eu>.
Sounds impressive.

On Tue, Feb 03, 2009 at 07:35:03AM -0800, The Web Maestro wrote:
> Sounds exciting! Cool!
> 
> On Tue, Feb 3, 2009 at 2:31 AM, Jeremias Maerki <de...@jeremias-maerki.ch> wrote:
> > Oh, yes, I almost forgot: I'm removing the "dy" parameter for now since
> > it's not supported anyway until we support different writing-modes.
> > Doesn't make sense to keep that around until then.
> >
> > On 03.02.2009 11:10:03 Jeremias Maerki wrote:
> >> 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.

Simon

-- 
Simon Pepping
home page: http://www.leverkruid.eu

Re: Intermediate Format Performance: Necessary changes to IFPainter interface

Posted by The Web Maestro <th...@gmail.com>.
Sounds exciting! Cool!

On Tue, Feb 3, 2009 at 2:31 AM, Jeremias Maerki <de...@jeremias-maerki.ch> wrote:
> Oh, yes, I almost forgot: I'm removing the "dy" parameter for now since
> it's not supported anyway until we support different writing-modes.
> Doesn't make sense to keep that around until then.
>
> On 03.02.2009 11:10:03 Jeremias Maerki wrote:
>> 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
>>
>
>
>
>
> Jeremias Maerki
>
>



-- 
Regards,

The Web Maestro
-- 
<th...@gmail.com> - <http://ourlil.com/>
My religion is simple. My religion is kindness.
- HH The 14th Dalai Lama of Tibet

Re: Intermediate Format Performance: Necessary changes to IFPainter interface

Posted by Jeremias Maerki <de...@jeremias-maerki.ch>.
Oh, yes, I almost forgot: I'm removing the "dy" parameter for now since
it's not supported anyway until we support different writing-modes.
Doesn't make sense to keep that around until then.

On 03.02.2009 11:10:03 Jeremias Maerki wrote:
> 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
> 




Jeremias Maerki