You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by Apache Wiki <wi...@apache.org> on 2006/05/29 11:10:56 UTC

[Xmlgraphics-fop Wiki] Update of "GoogleSummerOfCode2006/FloatsImplementationProgress" by VincentHennebert

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Xmlgraphics-fop Wiki" for change notification.

The following page has been changed by VincentHennebert:
http://wiki.apache.org/xmlgraphics-fop/GoogleSummerOfCode2006/FloatsImplementationProgress

The comment on the change is:
Progress informations about the implementation of floats.

New page:
This page will contain various informations about how the project progresses: thoughts, issues, design decisions, etc.

= Phase 1: Documentation =
I'm planning to read the following literature:
 * "Digital Typography", Knuth: glue/box/penalty model, optimal line-breaking algorithm
 * "Pagination Reconsidered", Brüggemann-Klein, Klein, Wohlfeil: a better algorithm for placing floating objects than TeX's one.
 * Pages of this Wiki related to the Knuth Approach
 * Have a look at Simon Pepping's generalized glue/box/penalty model.

== "Digital Typography": Breaking Paragraphs into Lines ==
Some very early thoughts after a quick reading of this article.

The algorithm works when each line of the paragraph has a different length. This may be interesting for implementing side-floats, provided that we know in advance which height each line will have. And I think this may depend on the line-stacking strategy.

AFAICT from what I've read, we may decompose the algorithm in three rather independant parts:
 * building a sequence of glue/box/penalty elements from some input data;
 * defining a somewhat arbitrary formula used to compute the demerit of each break, and which is to be minimized;
 * the algorithm itself, which corresponds to a shortest path finding algorithm in a graph.

Regarding (before-)floats:
 * the fo:float element (with the "float" property set to "before") will have to be converted to a sequence of glue/box/penalty elements, which themselves will have to be inserted at the beginning of certain pages;
 * the formula used to determine the optimality of floats placements should be retrieved from the "Pagination Reconsidered" paper;
 * the line-breaking algorithm isn't designed to handle a floating sequence of g/b/p items. So it will have to be extended, probably by the algorithm found in "Pagination Reconsidered";
 * All what have been stated so far may be invalidated by further readings...

---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org