XFC preserves the structure of source documents, as well as most of the presentation information. Below is a list of key features of XFC.
Paragraph attributes
Most paragraph attributes (e.g. indentation) are supported. Vertical spacing is handled reasonably in most cases.
Font attributes
Most font attributes (family, size, weight, etc) are supported.
Lists
XFC automatically tries to infer the numbering style from the label of the first list item. Both bulleted and numbered lists are supported. Nested lists are supported.
When the heuristics used by XFC are insufficient to infer the type of a list, it's still possible to explicitly specify this type by adding an xfc:label-format
proprietary attribute to the fo:list-block
.
When the heuristics used by XFC are insufficient to infer the type of a list and the xfc:label-format
attribute is absent from the fo:list-block
, then list items are output as plain paragraphs. That is, the list items look as expected, but will not behave as proper list items when edited in MS-Word or OpenOffice.org.
Tables
XFC supports both the fixed and automatic table layout, as well as the two border models defined in the W3C recommendation. The implementation of the collapsing border model does not strictly conforms to the CSS2 specification, but should give the expected result in most cases.
Images
Out of the box, XFC supports WMF, EMF, BMP (only .NET version and Java™ 1.5+), TIFF (only .NET version and Java™ with jai_imageio.jar
in the CLASSPATH
), GIF, JPEG and PNG graphics.
Implementing the public, documented, Graphic
and GraphicFactory
interfaces (IGraphic
and IGraphicFactory
for the .NET version) allows third-party programmers to add support for even more graphic formats.
Embedded foreign XML
The XML content of a fo:instream-foreign-object
element is now passed to the proper GraphicFactory
. For this to work, the fo:instream-foreign-object
element must have a content-type
attribute containing a media type supported by a registered GraphicFactory
.
Note that content-type
``sniffing'' is implemented only for SVG and MathML and that content-type
attributes starting with "namespace-prefix:
" are completely ignored.
Headers and footers
static-content
elements associated with the before
and after
regions are converted to page headers and footers respectively.
Page references
Page references (page-number-citation
elements) are supported.
Hypertext links
Both internal and external links are supported.
For a complete list of supported objects/properties, see the conformance statement.
In addition, XFC supports an number of proprietary and yet very useful, extensions to the XSL-FO standard:
The aforementioned xfc:label-format
extension attribute.
Extensions attributes allowing to control the rendering of fo:leader
.
An XSL-FO extension for generating Structured Document Tags (SDT) in Office Open XML (.docx
) documents. This extension makes it possible producing simple forms which can be loaded and filled in MS-Word 2007+.
Last but not least, an XSL-FO extension for generating named styles. Using the xfc:user-style
extension attribute, it becomes possible to generate RTF, WordprocessingML, Office Open XML (.docx
) and OpenOffice (.odt
) files where most of the text formatting is achieved using named paragraph styles ("Normal
", "Heading 1
", "Heading 2
", etc) and named character styles ("Strong
", "Emphasis
", etc).