> True, but I had in mind that any such approach will be built on the fact > that any layout is, in some sense, tentative. Rhett raised the question > some time ago of a means recording (and scoring) intermediate results, > something which will be an essential element of such a solution. > > At this stage, I would tend to think not of doing every possible layout, > but of following the "optimum" values to perform initial layout, and > then testing the result for "goodness". The minimum-maximum range > provides the slack - within the context of the spec - for applying > whatever other set of layout tuning algorithms that FOP implements.
The idea I am working with (of which I have prototype working) is that a break is after a line. For this break it finds the BPD distance from the top down (flow layout manager) from the start of the page to the current break. It also finds the keeps from the current break position, looking at parent layout managers and next layout managers for keep with previous. A best break is found based on these two values. A next break is then found, since we don't know we have a best until there is a worse break. This can be done for all pages in the page sequence or until forced break. Then if for example we want to find the optimum break. There is also the possiblity to get the next break within a context (which invalidates all further breaks) or previous break. I am quite confident that this will work well. Footnotes and before floats suddenly become easy. Keeps are quite easy also. The only drawback is that it constantly needs to find the child layout manager that applies to a given break and that finding the BPD distance could be time consuming in some circumstances. Optimisations should help a bit. > I would see these being arranged as a set of heuristics - for want of a > better word - that are applied in a structured fashion to detected > layout conflicts of particular types. What comprises a conflict would > be determined by those configurable parameters. > > In the initial version, we only need to provide for the most basic of > these, as long as the mechanism is general enough to allow for refinement. I am hoping that making the breaks simple and easy to find certain properties from any position will help us to explore what to do next. Keiron. --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, email: [EMAIL PROTECTED]