# FOP: Standards Compliance

Progress Report on Standard Features Implemented

One of FOP's design goals is conformance to the W3C XSL-FO 1.0 standard, which specifies three levels of "conformance": basic, extended, and complete. Although FOP does not currently conform to any of these levels, it is nevertheless a useful work-in-progress for many applications. The information presented here demonstrates FOP's progress toward the goal of conformance, which progress consists of implementation of specific objects and properties in the standard. The information presented is useful not only to the developers as a sort of "to do" list, but also for setting proper expectations for users and potential users.

In the tables below, "yes" indicates conformance, "no" indicates a lack of conformance, "partial" indicates partial conformance, and "na" indicates that the item is "not applicable" to FOP. The color-coding indicates conformance at a specific conformance level, with blue indicating conformance, red indicating non-conformance, and gray indicating partial conformance. So, for example, a given item may be blue either because it is not required at the conformance level indicated, or because FOP supports this feature, or both.

The following is a summary of FOP's current support for the standard XSL-FO objects.

Currently only works as direct child of fo:flow.
For absolute positioning, use 'position="absolute"' (as 'absolute-position="absolute"' is not implemented), and specify all four of "left", "top", "width" and "height"
Only works for table of contents without any problems. The case where the page number doesn't fit on a line isn't handled, and any text on the same line and after the page-number might not appear exactly where you want it to.
you must explicitly specify column widths
must contain block-level FOs (cannot contain straight character data)
both internal and external supported

The following is a summary of FOP's current support for the standard XSL-FO properties.

Use shorthand position="absolute" as a workaround.
only "solid" works
only "solid" works
only "solid" works
only "solid" works
only "solid" works
only "solid" works
only "solid" works
only "solid" works
only one value allowed
only implemented for blocks
can't be used to make extra space (use indents + spaces instead)
can be used to control how much the background-color extends beyond the content rectangle
same limitations as padding-before
same limitations as padding-before
same limitations as padding-before
same limitations as padding-before
same limitations as padding-before
same limitations as padding-before
same limitations as padding-before
font-family lists are not supported, use a single font-family name
only on pages and regions
only on pages and regions
only on pages and regions
only on pages and regions
space-before.optimum supported
space-after.optimum supported
Implemented only for table-cell and block-container.
For table-cell, the "height" attribute must be set for the parent table-row; setting the height of the table or the table-cell results in vertical centering having no effect.
Only start, end, center and justify are supported
Only start, end, center and justify are supported
works only in table rows
works only in table rows
works only in table rows
Workaround for page-orientation (portrait vs. landscape) is to swap the page-width and page-height properties.
Workaround for block-container is to use SVG.
not value "page"
not value "use-content"
leader-length.minimum is not used at all
"last" isn't implemented!
Implementation of collapsed table model not complete.
"percentage" not implemented. Workaround is to use the XSL-FO "proportional-column-width" function.
only one value allowed
only "solid" works
only on pages and regions
only one value allowed
only implemented for blocks
can't be used to make extra space (use indents + spaces instead)
can be used to control how much the background-color extends beyond the content rectangle
"inherit" not handled