XFC preserves the structure of source documents, as well as most of the presentation information. Below is a list of key features of XFC.
Most paragraph attributes (e.g. indentation) are supported. Vertical spacing is handled reasonably in most cases.
Most font attributes (family, size, weight, etc) are supported.
font-family property contains a list of several font families, it's always the first font family which is used by XFC. Example:
font-family= "'FF Trixie', 'Andale Mono',monospace", the font used by XFC is "
FF Trixie" (a very uncommon font indeed).
What happens when this font family is absent from the platform where the file generated by XFC is used? The answer is: the word processor will automatically substitute another font for it. However for this font substitution to work well, the font family being referenced in the generated file must have been properly declared.
XFC uses the generic font family name (
cursive) possibly found in the list to properly declare the font being used.
In the above example, the font used by XFC is "
FF Trixie" and because the list contains
FF Trixie" is declared to be a “modern” font having a fixed pitch.
Note that when the
font-family property does not contain any generic font family name, XFC will nevertheless try to properly declare the font being used. It does so by searching its own internal set of known fonts for the font being used. For example, XFC knows that "
Andale Mono" is equivalent to a
monospace font and as such, it will declare it as being a “modern” font having a fixed pitch.
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
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.
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.
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,
GraphicFactory interfaces (
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
Headers and footers
static-content elements associated with the
after regions are converted to page headers and footers respectively.
Page references (
page-number-citation elements) are supported.
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:
xfc:label-format extension attribute.
Extensions attributes allowing to control the rendering of
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 ("
Heading 1", "
Heading 2", etc) and named character styles ("