xmlgraphics-fop-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <wikidi...@apache.org>
Subject [Xmlgraphics-fop Wiki] Update of "GoogleSummerOfCode2006/ImplementingFloats" by VincentHennebert
Date Sun, 23 Apr 2006 22:54:14 GMT
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:

The comment on the change is:
New project proposal for Google's SoC: implementing floats

New page:
= Google's Summer of Code Project Proposal: Implementing floats =
This page is the draft of a project proposal that could be made at Google's Summer of Code.
The goal is to gather the key points, the main issues and to sketch a timeline for the project.

== Motivation ==
The project is to implement the fo:float formatting object in Fop. This element is used to
generate two kinds of floats: ''before-floats'' for positioning objects in a separate area
at the beginning of a page, and ''side-floats'' for positioning objects on one side of the
page, with normal content flowing around it.

Before-floats are typically used to render figures, images, tables and so on. Such objects
are frequent in book-like documents: they often carry additional information which is not
required to understand the reading, and to which the reader may want to further refer. As
Fop is often used as a print backend to render [http://www.docbook.org DocBook] documents,
many users would benefit from the implementation of before-floats.

Side-floats may be used to achieve various effects, such as drop capitals (displaying the
first letter of a paragraph in a large size, spanning several lines of the paragraph), margin
notes, illustrating images integrated in the content with text flowing around, etc.

== Main Areas of Work ==
 * validate the source file: there are several constraints on the usage of floats: they may
not appear as children of other float or footnote elements, they must not be descendant of
a flow which is not assigned to a region-body, etc.
 * study whether the layout of floats may be readily expressed in the Knuth box-glue-penalty
model, or if it has to be extended, and how...
 * study how floats interfere with other fo elements (footnotes, absolutely positioned elements...),
line- and page-breaking
 * consider the possibility to apply different algorithms, especially regarding placement
of before-floats (first-fit, best-fit, total-fit algorithm, performance and memory issues)

== Proposed Goals ==
 * complete implementation of before-floats, with at least two placement algorithms:
   * first-fit: fast, memory-efficient, low-quality
   * total-fit: slow, memory-consuming, high-quality
 it should be possible to choose the algorithm through a user-config option
 * basic implementation of side-floats, working for the simplest cases. Examples of not-so-simple
   * when many side-floats are to be placed and there is not enough room for a new one, or
for the normal content
   * near page boundaries, when there is not enough room in the block-progression dimension
to place the float
 The possible implementation difficulties should at least be identified, whith e.g. testcases
illustrating special issues, to ease further work on this.

== Schedule ==
 1. Documentation phase: 1 month
    * XSL-FO and CSS specifications
    * Knuth glue-box-penalty and line-/page-breaking algorithm
    * Fop source code (Layout Managers)
 1. Before-floats implementation: 3 weeks
    * algorithm
    * design choices
    * coding and testing
 1. Side-floats implementation: 1 month and 1 week
    * understand and illustrate the computation of intrusion adjustments (this part of the
spec looks rather complicated)
    * identify the typical layout situations
    * identify and document the trickiest cases
    * basic implementation

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

View raw message