W3C XSL-FO 1.0 Standard

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.

XSL-FO Object Support

XSL-FO Property Support

XSL-FO Object Support Table (§6)

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

Object Name

Citation Support Comments
Basic Extended Complete
Declarations and Pagination and Layout Formatting Objects (§6.4)
root §6.4.2 yes      
declarations §6.4.3 no      
color-profile §6.4.4   no    
page-sequence §6.4.5 yes      
layout-master-set §6.4.6 yes      
page-sequence-master §6.4.7 yes      
single-page-master-reference §6.4.8 yes      
repeatable-page-master-reference §6.4.9 yes      
repeatable-page-master-alternatives §6.4.10   yes    
conditional-page-master-reference §6.4.11   yes    
simple-page-master §6.4.12 yes      
region-body §6.4.13 yes      
region-before §6.4.14   yes    
region-after §6.4.15   yes    
region-start §6.4.16   yes    
region-end §6.4.17   yes    
flow §6.4.18 yes      
static-content §6.4.19   yes    
title §6.4.20   no    
Block Formatting Objects (§6.5)
block §6.5.2 yes      
block-container §6.5.3   partial  
  • 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"
Inline Formatting Objects (§6.6)
bidi-override §6.6.2   no    
character §6.6.3 yes      
initial-property-set §6.6.4   no    
external-graphic §6.6.5 yes      
instream-foreign-object §6.6.6   yes    
inline §6.6.7 yes      
inline-container §6.6.8   no    
leader §6.6.9 partial      
page-number §6.6.10 yes      
page-number-citation §6.6.11   partial  
  • 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.
Table Formatting Objects (§6.7)
table-and-caption §6.7.2 no      
table §6.7.3 yes      
table-column §6.7.4 yes    
  • you must explicitly specify column widths
table-caption §6.7.5   no    
table-header §6.7.6 yes      
table-footer §6.7.7   yes    
table-body §6.7.8 yes      
table-row §6.7.9 yes      
table-cell §6.7.10 yes    
  • must contain block-level FOs (cannot contain straight character data)
List Formatting Objects (§6.8)
list-block §6.8.2 yes      
list-item §6.8.3 yes      
list-item-body §6.8.4 yes      
list-item-label §6.8.5   yes    
Link and Multi Formatting Objects (§6.9)
basic-link §6.9.2   yes  
  • both internal and external supported
multi-switch §6.9.3   no    
multi-case §6.9.4 no      
multi-toggle §6.9.5   no    
multi-properties §6.9.6   no    
multi-property-set §6.9.7   no    
Out-of-line Formatting Objects (§6.10)
float §6.10.2   no    
footnote §6.10.3   yes    
footnote-body §6.10.4   yes    
Other Formatting Objects (§6.11)
wrapper §6.11.2 yes      
marker §6.11.3   yes    
retrieve-marker §6.11.4   yes    

XSL-FO Property Support Table (§7)

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

Property Name

Citation Support Comments
Basic Extended Complete
Common Accessibility Properties (§7.4)
source-document §7.4.1 na      
role §7.4.2 na      
Common Absolute Position Properties (§7.5)
absolute-position §7.5.1     no
  • Use shorthand position="absolute" as a workaround.
top §7.5.2   yes    
right §7.5.3   yes    
bottom §7.5.4   yes    
left §7.5.5   yes    
Common Aural Properties (§7.6)
azimuth §7.6.1 na      
cue-after §7.6.2 na      
cue-before §7.6.3 na      
elevation §7.6.4 na      
pause-after §7.6.5 na      
pause-before §7.6.6 na      
pitch §7.6.7 na      
pitch-range §7.6.8 na      
play-during §7.6.9 na      
richness §7.6.10 na      
speak §7.6.11 na      
speak-header §7.6.12 na      
speak-numeral §7.6.13 na      
speak-punctuation §7.6.14 na      
speech-rate §7.6.15 na      
stress §7.6.16 na      
voice-family §7.6.17 na      
volume §7.6.18 na      
Common Border, Padding, and Background Properties (§7.7)
background-attachment §7.7.1   no    
background-color §7.7.2 yes      
background-image §7.7.3   yes    
background-repeat §7.7.4   no    
background-position-horizontal §7.7.5   no    
background-position-vertical §7.7.6   no    
border-before-color §7.7.7 yes      
border-before-style §7.7.8 yes    
  • only "solid" works
border-before-width §7.7.9 yes      
border-after-color §7.7.10 yes      
border-after-style §7.7.11 yes    
  • only "solid" works
border-after-width §7.7.12 yes      
border-start-color §7.7.13 yes      
border-start-style §7.7.14 yes    
  • only "solid" works
border-start-width §7.7.15 yes      
border-end-color §7.7.16 yes      
border-end-style §7.7.17 yes    
  • only "solid" works
border-end-width §7.7.18 yes      
border-top-color §7.7.19 yes      
border-top-style §7.7.20 yes    
  • only "solid" works
border-top-width §7.7.21 yes      
border-bottom-color §7.7.22 yes      
border-bottom-style §7.7.23 yes    
  • only "solid" works
border-bottom-width §7.7.24 yes      
border-left-color §7.7.25 yes      
border-left-style §7.7.26 yes    
  • only "solid" works
border-left-width §7.7.27 yes      
border-right-color §7.7.28 yes      
border-right-style §7.7.29 yes    
  • only "solid" works
border-right-width §7.7.30 yes      
padding-before §7.7.31 yes    
  • 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
padding-after §7.7.32 yes    
  • same limitations as padding-before
padding-start §7.7.33 yes    
  • same limitations as padding-before
padding-end §7.7.34 yes    
  • same limitations as padding-before
padding-top §7.7.35 yes    
  • same limitations as padding-before
padding-bottom §7.7.36 yes    
  • same limitations as padding-before
padding-left §7.7.37 yes    
  • same limitations as padding-before
padding-right §7.7.38 yes    
  • same limitations as padding-before
Common Font Properties (§7.8)
font-family §7.8.2 yes    
  • font-family lists are not supported, use a single font-family name
font-selection-strategy §7.8.3     no  
font-size §7.8.4 yes      
font-stretch §7.8.5   no    
font-size-adjust §7.8.6   no    
font-style §7.8.7 yes      
font-variant §7.8.8 no      
font-weight §7.8.9 yes      
Common Hyphenation Properties (§7.9)
country §7.9.1   yes    
language §7.9.2   yes    
script §7.9.3   no    
hyphenate §7.9.4   yes    
hyphenation-character §7.9.5   yes    
hyphenation-push-character-count §7.9.6   yes    
hyphenation-remain-character-count §7.9.7   yes    
Common Margin Properties - Block (§7.10)
margin-top §7.10.1 partial    
  • only on pages and regions
margin-bottom §7.10.2 partial    
  • only on pages and regions
margin-left §7.10.3 partial    
  • only on pages and regions
margin-right §7.10.4 partial    
  • only on pages and regions
space-before §7.10.5 partial    
  • space-before.optimum supported
space-after §7.10.6 partial    
  • space-after.optimum supported
start-indent §7.10.7 yes      
end-indent §7.10.8 yes      
Common Margin Properties - Inline (§7.11)
space-end §7.11.1 no      
space-start §7.11.2 no      
Common Relative Position Properties (§7.12)
relative-position §7.12.1   no    
Area Alignment Properties (§7.13)
alignment-adjust §7.13.1 no      
alignment-baseline §7.13.2 no      
baseline-shift §7.13.3 partial    
  • Only values "super" and "sub" have been implemented.
display-align §7.13.4   partial  
  • 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.
dominant-baseline §7.13.5 no      
relative-align §7.13.6   no    
Area Dimension Properties (§7.14)
block-progression-dimension §7.14.1 no      
content-height §7.14.2   no    
content-width §7.14.3   no    
height §7.14.4 yes      
inline-progression-dimension §7.14.5 no      
max-height §7.14.6     no  
max-width §7.14.7     no  
min-height §7.14.8     no  
min-width §7.14.9     no  
scaling §7.14.10   no    
scaling-method §7.14.11   no    
width §7.14.12 yes      
Block and Line-related Properties (§7.15)
hyphenation-keep §7.15.1   no    
hyphenation-ladder-count §7.15.2   no    
last-line-end-indent §7.15.3   no    
line-height §7.15.4 yes      
line-height-shift-adjustment §7.15.5   no    
line-stacking-strategy §7.15.6 no      
linefeed-treatment §7.15.7   no    
white-space-treatment §7.15.8   no    
text-align §7.15.9 partial    
  • Only start, end, center and justify are supported
text-align-last §7.15.10   partial  
  • Only start, end, center and justify are supported
text-indent §7.15.11 yes      
white-space-collapse §7.15.12   yes    
wrap-option §7.15.13 yes      
Character Properties (§7.16)
character §7.16.1 yes      
letter-spacing §7.16.2   yes    
suppress-at-line-break §7.16.3   no    
text-decoration §7.16.4   yes    
text-shadow §7.16.5   no    
text-transform §7.16.6   no    
treat-as-word-space §7.16.7   no    
word-spacing §7.16.8   no    
Color-related Properties (§7.17)
color §7.17.1 yes      
color-profile-name §7.17.2   no    
rendering-intent §7.17.3   no    
Float-related Properties (§7.18)
clear §7.18.1   no    
float §7.18.2   no    
intrusion-displace §7.18.3   no    
Keeps and Breaks Properties (§7.19)
break-after §7.19.1 yes      
break-before §7.19.2 yes      
keep-together §7.19.3   partial  
  • works only in table rows
keep-with-next §7.19.4 partial    
  • works only in table rows
keep-with-previous §7.19.5 partial    
  • works only in table rows
orphans §7.19.6 no      
widows §7.19.7 no      
Layout-related Properties (§7.20)
clip §7.20.1   no    
overflow §7.20.2 no      
reference-orientation §7.20.3   no  
  • 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.
span §7.20.4   yes    
Leader and Rule Properties (§7.21)
leader-alignment §7.21.1   yes  
  • not value "page"
leader-pattern §7.21.2 yes    
  • not value "use-content"
leader-pattern-width §7.21.3   yes    
leader-length §7.21.4 yes    
  • leader-length.minimum is not used at all
rule-style §7.21.5 yes      
rule-thickness §7.21.6 yes      
Properties for Dynamic Effects Formatting Objects (§7.22)
active-state §7.22.1   no    
auto-restore §7.22.2   no    
case-name §7.22.3   no    
case-title §7.22.4   no    
destination-placement-offset §7.22.5   no    
external-destination §7.22.6   yes    
indicate-destination §7.22.7   no    
internal-destination §7.22.8   yes    
show-destination §7.22.9   no    
starting-state §7.22.10   no    
switch-to §7.22.11   no    
target-presentation-context §7.22.12   no    
target-processing-context §7.22.13   no    
target-stylesheet §7.22.14   no    
Properties for Markers (§7.23)
marker-class-name §7.23.1   no    
retrieve-class-name §7.23.2   no    
retrieve-position §7.23.3   no    
retrieve-boundary §7.23.4   no    
Properties for Number to String Conversion (§7.24)
format §7.24.1 no      
grouping-separator §7.24.2   no    
grouping-size §7.24.3   no    
letter-value §7.24.4 no      
Pagination and Layout Properties (§7.25)
blank-or-not-blank §7.25.1   yes    
column-count §7.25.2   yes    
column-gap §7.25.3   yes    
extent §7.25.4   yes    
flow-name §7.25.5 yes      
force-page-count §7.25.6   no    
initial-page-number §7.25.7 yes      
master-name §7.25.8 yes      
master-reference §7.25.9 yes      
maximum-repeats §7.25.10   yes    
media-usage §7.25.11   no    
odd-or-even §7.25.12   yes    
page-height §7.25.13 yes      
page-position §7.25.14   partial  
  • "last" isn't implemented!
page-width §7.25.15 yes      
precedence §7.25.16   no    
region-name §7.25.17 yes      
Table Properties (§7.26)
border-after-precedence §7.26.1 no      
border-before-precedence §7.26.2 no      
border-collapse §7.26.3   partial  
  • Implementation of collapsed table model not complete.
border-end-precedence §7.26.4 no      
border-separation §7.26.5   no    
border-start-precedence §7.26.6 no      
caption-side §7.26.7     no  
column-number §7.26.8 no      
column-width §7.26.9 partial    
  • "percentage" not implemented. Workaround is to use the XSL-FO "proportional-column-width" function.
empty-cells §7.26.10   no    
ends-row §7.26.11   no    
number-columns-repeated §7.26.12 no      
number-columns-spanned §7.26.13 yes      
number-rows-spanned §7.26.14 yes      
starts-row §7.26.15   no    
table-layout §7.26.16   no    
table-omit-footer-at-break §7.26.17   yes    
table-omit-header-at-break §7.26.18   yes    
Writing-mode-related Properties (§7.27)
direction §7.27.1 no      
glyph-orientation-horizontal §7.27.2   no    
glyph-orientation-vertical §7.27.3   no    
text-altitude §7.27.4   no    
text-depth §7.27.5   no    
unicode-bidi §7.27.6   no    
writing-mode §7.27.7 no      
Miscellaneous Properties (§7.28)
content-type §7.28.1   no    
id §7.28.2 yes      
provisional-label-separation §7.28.3 yes      
provisional-distance-between-starts §7.28.4 yes      
ref-id §7.28.5   yes    
score-spaces §7.28.6   no    
src §7.28.7 yes      
visibility §7.28.8   no    
z-index §7.28.9   no    
Shorthand Properties (§7.29)
background §7.29.1     no  
background-position §7.29.2     no  
border §7.29.3     no  
border-bottom §7.29.4     yes  
border-color §7.29.5     yes
  • only one value allowed
border-left §7.29.6     yes  
border-right §7.29.7     yes  
border-style §7.29.8     yes
  • only "solid" works
border-spacing §7.29.9     no  
border-top §7.29.10     yes  
border-width §7.29.11     yes  
cue §7.29.12     no  
font §7.29.13     no  
margin §7.29.14     partial
  • only on pages and regions
padding §7.29.15     partial
  • 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
page-break-after §7.29.16     no  
page-break-before §7.29.17     no  
page-break-inside §7.29.18     no  
pause §7.29.19     no  
position §7.29.20     partial
  • "inherit" not handled
size §7.29.21     no  
vertical-align §7.29.22     partial
  • Only works as a shorthand for baseline-shift property.
white-space §7.29.23     no  
xml:lang §7.29.24     no