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.


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 [ 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

Proposed Goals


  1. Documentation phase: 1 month
    • XSL-FO and CSS specifications
    • Knuth glue-box-penalty and line-/page-breaking algorithm
    • Fop source code (Layout Managers)
  2. Before-floats implementation: 3 weeks
    • algorithm
    • design choices
    • coding and testing
  3. 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