Rhett Aultman wrote:

> There is one more problem you need to put in there- under the
> current system, there is no mechanism for determining if the
> layout instructions in an FO document will produce a document
> that cannot exist.  At least, there's none I've seen.  Most of
> the bugs posted regarding infinite loops are caused by the same
> thing- the layout is impossible to perform, but FOP does not
> detect this and simply continues doing the same thing over and
> over again- get a fresh page, try to lay out, get breaks, get a
> fresh page...  I haven't extensively tried all the infinite loop
> bugs on HEAD, but I have tried a few and they continue to have
> this problem.  This really needs to be addressed from a design
> perspective.

Just to be clear, I should point out that there is not a layout that is
impossible to perform. The standard allows (and would have to)
implementation-specific handling of what they call "over-constrained"
requirements. In other words, requirements can be prioritized and allowed to
slip when they are contradictory or "impossible".

>From a design standpoint, the best ideas I have seen/heard revolve around
some scoring system. I think the HZ program, TeX, and Lout all use this
approach. To do this, you would need for each break manager to return not
just the best break, but a collection of possible breaks with some ranking
mechanism. Ideally, somebody at the highest level (page-sequence) decides
what is best, based on information that percolates up from the lower levels.
This implies to me that we can see the entire page-sequence sub-tree at one
time, which may not be true in our SAX event-based model. It seems that the
page-sequence would attempt to lay itself out using the "best" breaks that
came up from sub-nodes, then adjust if over-constrained, perhaps with the
concept of a layout Plan or Proposal.

I know it is easier said than done, and may already be done. Please pardon
my ignorance of the current design. I would offer it as my $.02 worth, but
someone would want a nickel change ($.05).

To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, email: [EMAIL PROTECTED]

Reply via email to