See also FOPProjectPages.

This page's content is out of date. It has not been updated since April 2008!

This page contains high-level tasks for Apache FOP. If you like to help with the development, look here for ideas what to implement and notify ''fop-dev' when you're starting with such a task.

(see also FOPWorkEstimates)


  • (warning) Answer questions on the fop-users mailing list.


  • Improve documentation on FOP Trunk.


  • (warning) Create additional layout engine test cases (see HowToCreateLayoutEngineTests). (in progress - as of Aug 31 there are nearly 200 tests in the repository)
  • Create a test subsystem that allows the generated PDF, PS and Java2D/AWT output to be converted to a bitmap so it can be compared to reference bitmaps. (in progress)

Interfaces and frontends

(nothing here ATM)

AWT Viewer

  • continue cleanup and improvements
  • develop towards design with area tree/caching etc.

RTF Integration

JFOR has been integrated into FOP. Now the whole RTF support needs to be stabilized.

  • Check text-decoration (it was disabled after a change in property handling for text-decoration)
  • Improve property evaluation. No percentages, yet and "auto" values cause warnings.
  • Better support for nested tables
  • Problems with tables in static-content (messes up the document in Word)


  • Add support for font-variant. Limited support of this was available in 0.20.5.
  • Support font-family lists to make life easier for our users. (should be resolved as part of the FOray integration)
  • Add some sort of font substitution mechanism (becomes necessary with auto-detection)

(see also FOPFontSubsystemDesign)

FO Tree

  • Remove FONode.getLogger() and make "log" protected instead.
  • Allow region-before before region-body (with strict validation turned off)
  • Better handling of the difference of strict and relaxed validation
  • Add warning messages for misplaced non-inheritable properties during validation.

Layout managers

  • Detailed documentation of layout system and overconstraint resolution

(see also FOPWorkEstimates)

Layout of

  • block-containers
  • multi-column documents
  • tables
    • AutoTableLayout
    • column creation when not defined
    • background painting is incomplete, i.e. table-column and table-row
    • column groups not supported, yet
    • collapsing border model (in progress)
    • Reimplement table-and-caption and table-caption
    • support for table markers!
  • footnotes/before floats
    • space resolution in footnotes
    • add proprietary option that doesn't span a footnote over all columns of a multi-column document
    • fix the problem with footnote handling in multi-column documents
  • keeps
    • remaining issues with keep-with-previous (see keep-with-previous2-5)
    • support for keep.within-line on fo:inline (partially done)
    • support numeric values for keeps. Numerics would have a less favourable break than elements without keeps, but allow breaks which "always" does not. As a first phase this could be implemented as different numeric values would have no extra meaning, i.e. a value of 1 is just as likely to cause a break as 1000. (in progress)
  • side floats
    • layout with nearest reference area
    • break/keep implications
    • adding to areas
  • handling of differring available IPD over multiple pages (Example: page 1 portrait, page 2 landscape)
  • fix alignment of page-number-citations.
  • graphics
    • tests for e-g and i-f-o (look at line-stacking-strategy and place of images in a line)

Inline areas

  • ipd adjustment after page number resolution
  • min/opt/max support for line-height, especially concerning space-resolution (space-before, space-after)
  • support for inline-container (smile)

Adding Areas

  • must be able to adjust spacing (works in many places but not on tables, for example).
  • add id/markers (some remaining problems when content is broken over multiple pages)
  • ID has no affect on some elements, e.g. fo:table-row, i.e. such elements can't be referenced from a page-number-citation.

Area Tree

  • Writing mode, stacking direction and orientation, width/height vs. ipb/bpd. (See FOPWritingModesAndBidiDesign).
  • Extend the intermediate format to support imposition ("two-up" etc.)
  • Add a new renderer which has output similar to Area Tree XML, but which is less verbose therefore improving performance. This will also require changing each renderer to be able to render from this new XML. (Intermediate Format Redesign, see AreaTreeIntermediateXml)


  • Check that the current renderer design is suitable and covers all areas in all situations.
    • Especially make sure the clipping can be done in a way that is supported by all renderers
  • Avoid type casting where possible.
  • Can different orientation and stacking directions be handled? Should document extensions have an extension handler so that user defined extension can be handled?
  • Bring back all the other renderers: SVG, MIF
  • Possible new renderers: Mars & SVG Print (relatively easy once SVG output is restored), XPS
  • Possible new FO event handlers: ODF (Open Document Format)
  • Revisit the way absolutely positioned areas are rendered. The break-out mechanism can probably be avoid by taking the area out of the normal flow. Maybe look at z-index at the same time.

PDF Renderer

  • pdf state (still some improvements necessary)
  • stacking directions
  • Support for SVG fonts to be converted for PDF into Type 3 fonts (question)
  • Support for tagged PDF
  • PDF/X-3:2003 support: Fix for transparency and patterns in SVG support

PDF Library

  • separate into a stand-alone library (remove Commons Logging dependency)
  • documentation
  • optimisations
  • some additions so it can load and read pdf documents (investigate switching to PDFBox)
  • maybe add possibility to generate PDF 1.3 only (must be configurable)
  • encryption (partly done, needs fixing, add support for PDF 1.4 level encryption)
  • Improve building of PDF dictionaries (also needed to properly finish PDF encryption for string and text entries) (in progress)
  • possible addition: Support of one or more of the PDF/X standards. See Big question is which one(s)? We already have PDF/X-3:2003 to a certain degree but it is not the most widely used.
  • possible addition: Support for tagged PDF (necessary for PDF/A-1a support)
  • Investigate merging with PDFBox

SVG support for PDF

  • Rendering of SVGs as Form XObjects.

Also see FOPBatikTranscoders.

PostScript renderer

  • Support for TrueType/multibyte fonts
  • SVG text painter (basics are there)
  • Provide level 2 and 3 (make configurable)
  • Support CMYK colours (in progress).

SVG renderer

  • What's the status? broken. Could easily be restored using Batik's SVGGraphics2D to begin with.

Java2D/AWT renderer

XML renderer

(no issues ATM)


  • Better integration with MathML extension, i.e. FOP needs to do baseline-adjustment in accordance with formula in MathXML (in progress at the JEuclid project).
  • Bundle JEuclid with FOP once a stable release is published (caveat: JEuclid is using Java 1.5!)
  • Bundle Barcode4J with FOP when the final 2.0 release is available (Jeremias Märki)
  • Compatibility with Harmony & GNU Classpath (GCJ, JamVM, Kaffee, IKVM etc.)
  • .NET integration (using IKVM)
  • Whitespace Management enhancement, see WhitespaceManagement


  • none ATM


  • min/opt/max support in IPD and BPD for e-g and i-f-o. IPD is easier, BPD adjustment requires feedback from page breaking.


There are several classes and variables left after refactorings that can probably be cleaned up. Here's a list of things that were found so far:

  • layoutmgr.SpaceSpecifier (will probably be done differently in the future)
  • traits.BlockProps
  • traits.InlineProps
  • LayoutProps
  • TextLayoutManager.halfWS and .iNbSpacesPending
  • No labels