[prev in list] [next in list] [prev in thread] [next in thread] 

List:       fop-dev
Subject:    RE: Copyfitting and Flexible Layout
From:       "Patrick Jaromin" <patrick () jgsullivan ! com>
Date:       2010-10-28 18:59:30
Message-ID: DC20F146FC6DF042AAB824165205B321024CF3C9 () BE43 ! exg3 ! exghost ! com
[Download RAW message or body]

Jeremias-

Yeah, I recall reading this wiki page back when I started looking into this. In my \
case, there aren't alternative contents -- I needed to adjust various properties of \
the contents -- namely the font-size and line-spacing.

In my system, custom attributes are added to the fo:block-container element that look \
something like:

myrx:copyfit-strategy="min-opt-max" myrx:copyfit-ruleset="font(36,20,80,1) \
line(2.0,1.1,2.2,.1)"

This would notify the copyfitter to first adjust the font, starting at 36pt and \
increment/decrement by 1pt until best fit. Then it will adjust the linespacing the \
same way. There can be as many rulesets as desired...so the refinement can continue, \
though at the cost of more iterations.

In my initial version I hacked in my own layout listener that I could register to be \
notified of overflows in various layout manager classes. The actual adjustments take \
place outside of FOP. Back when I did this, I noticed the EventProducer interfaces in \
HEAD, however there were rendering issues with the code in HEAD at the time so I was \
unable to use it.

Reviewing FOP 1.0, it looks like I should be able to use the EventBroadcaster to be \
notified of the overflow events I need...though I haven't worked out if I will have \
everything I need from the event. I was passing up the FObj in the event. I'll need \
to dig some more.

Ideally I would be able to make the adjustments and perform another pass within the \
main render process instead of kicking off a new trial render each time there's at \
least one overflowing section. However, it's unclear to me how this could work, or \
even if it's practical/possible as, if I remember correctly, the attributes I'd need \
to modify are read only by this point in the process. If there's a way to make this \
work as part of the core renderer or as some kind of plugin to it, I'd be happy to \
see if I can get the budget and contribute the results.

BTW: In reviewing the code, it looks like LineLayoutManager line #385, the event is \
only thrown if the log level is WARN. Bug?

-Patrick

-----Original Message-----
From: Jeremias Maerki [mailto:dev@jeremias-maerki.ch] 
Sent: Thursday, October 28, 2010 1:44 AM
To: fop-dev@xmlgraphics.apache.org
Subject: Re: Copyfitting and Flexible Layout

We've written down some thoughts about the topic some time ago:
http://wiki.apache.org/xmlgraphics-fop/WhitespaceManagement
But there were no further actions on this.


On 27.10.2010 20:11:29 Patrick Jaromin wrote:
> Early last year I implemented copyfitting and flexible layouts into our
> FOP-based rendering process by locally branching FOP 0.95, adding my
> own listener/event mechanism and FO extensions, and a pre-processor that
> implements the copyfitting strategies through an iterative process of
> render-modify-render-...
> 
> I'm hoping to upgrade to the FOP 1.0 codebase and rather than branching
> and re-implementing my hacks, I'd prefer to extend the base in a more
> maintainable way that perhaps others could also benefit from.
> 
> Before I embark on this process (or even discuss it in more depth) I
> figured I'd see if anyone else has made any movements on this or has
> any thoughts. My system uses my own namespace/attributes, however I would
> likely adopt the specifications outlined in XSL:FO 2.0 working draft
> (http://www.w3.org/TR/xslfo20/#req_2_1_4).
> 
> Thoughts/Comments?
> 
> 
> Patrick K. Jaromin
> VP Technology
> 312.943.1600 * fax 312.640.8100
> 
> JGSullivan Interactive, Inc.
> 
> 




Jeremias Maerki


[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic