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 Only values "super" and "sub" have been implemented. 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 Only works as a shorthand for baseline-shift property.