You are viewing a plain text version of this content. The canonical link for it is here.
Posted to fop-commits@xmlgraphics.apache.org by je...@apache.org on 2008/03/19 18:27:27 UTC
svn commit: r638943 [4/4] - in
/xmlgraphics/fop/branches/Temp_ProcessingFeedback: ./ lib/
src/documentation/content/ src/documentation/content/xdocs/
src/documentation/content/xdocs/0.95/
src/documentation/content/xdocs/0.95/layoutengine/ src/documenta...
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableCellLayoutManager.java Wed Mar 19 10:26:45 2008
@@ -23,6 +23,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+
import org.apache.fop.area.Area;
import org.apache.fop.area.Block;
import org.apache.fop.area.Trait;
@@ -75,7 +76,6 @@
private int cellIPD;
private int totalHeight;
private int usedBPD;
- private int borderAndPaddingBPD;
private boolean emptyCell = true;
/**
@@ -98,22 +98,6 @@
return getTable().isSeparateBorderModel();
}
- /** {@inheritDoc} */
- public void initialize() {
- borderAndPaddingBPD = 0;
- borderAndPaddingBPD += getTableCell()
- .getCommonBorderPaddingBackground().getBorderBeforeWidth(false);
- borderAndPaddingBPD += getTableCell()
- .getCommonBorderPaddingBackground().getBorderAfterWidth(false);
- if (!isSeparateBorderModel()) {
- borderAndPaddingBPD /= 2;
- }
- borderAndPaddingBPD += getTableCell().getCommonBorderPaddingBackground()
- .getPaddingBefore(false, this);
- borderAndPaddingBPD += getTableCell().getCommonBorderPaddingBackground()
- .getPaddingAfter(false, this);
- }
-
/**
* @return the table owning this cell
*/
@@ -146,7 +130,7 @@
* {@inheritDoc}
*/
public LinkedList getNextKnuthElements(LayoutContext context, int alignment) {
- MinOptMax stackLimit = new MinOptMax(context.getStackLimit());
+ MinOptMax stackLimit = new MinOptMax(context.getStackLimitBP());
referenceIPD = context.getRefIPD();
cellIPD = referenceIPD;
@@ -161,8 +145,8 @@
while ((curLM = (BlockLevelLayoutManager) getChildLM()) != null) {
LayoutContext childLC = new LayoutContext(0);
// curLM is a ?
- childLC.setStackLimit(MinOptMax.subtract(context
- .getStackLimit(), stackLimit));
+ childLC.setStackLimitBP(MinOptMax.subtract(context
+ .getStackLimitBP(), stackLimit));
childLC.setRefIPD(cellIPD);
// get elements from curLM
@@ -353,11 +337,12 @@
CommonBorderPaddingBackground padding = primaryGridUnit.getCell()
.getCommonBorderPaddingBackground();
- int cellBPD = totalHeight - borderBeforeWidth - borderAfterWidth;
+ int paddingRectBPD = totalHeight - borderBeforeWidth - borderAfterWidth;
+ int cellBPD = paddingRectBPD;
cellBPD -= padding.getPaddingBefore(borderBeforeWhich == ConditionalBorder.REST, this);
cellBPD -= padding.getPaddingAfter(borderAfterWhich == ConditionalBorder.REST, this);
- addBackgroundAreas(painter, firstRowHeight, borderBeforeWidth, cellBPD);
+ addBackgroundAreas(painter, firstRowHeight, borderBeforeWidth, paddingRectBPD);
if (isSeparateBorderModel()) {
if (!emptyCell || getTableCell().showEmptyCells()) {
@@ -487,22 +472,23 @@
/** Adds background areas for the column, body and row, if any. */
private void addBackgroundAreas(RowPainter painter, int firstRowHeight, int borderBeforeWidth,
- int cellBPD) {
+ int paddingRectBPD) {
TableColumn column = getTable().getColumn(primaryGridUnit.getColIndex());
if (column.getCommonBorderPaddingBackground().hasBackground()) {
- Block colBackgroundArea = getBackgroundArea(cellBPD, borderBeforeWidth);
+ Block colBackgroundArea = getBackgroundArea(paddingRectBPD, borderBeforeWidth);
((TableLayoutManager) parentLM).registerColumnBackgroundArea(column, colBackgroundArea,
-startIndent);
}
TableBody body = primaryGridUnit.getTableBody();
if (body.getCommonBorderPaddingBackground().hasBackground()) {
- painter.registerPartBackgroundArea(getBackgroundArea(cellBPD, borderBeforeWidth));
+ painter.registerPartBackgroundArea(
+ getBackgroundArea(paddingRectBPD, borderBeforeWidth));
}
TableRow row = primaryGridUnit.getRow();
if (row != null && row.getCommonBorderPaddingBackground().hasBackground()) {
- Block rowBackgroundArea = getBackgroundArea(cellBPD, borderBeforeWidth);
+ Block rowBackgroundArea = getBackgroundArea(paddingRectBPD, borderBeforeWidth);
((TableLayoutManager) parentLM).addBackgroundArea(rowBackgroundArea);
TraitSetter.addBackground(rowBackgroundArea, row.getCommonBorderPaddingBackground(),
(TableLayoutManager) parentLM,
@@ -540,12 +526,16 @@
}
private Block getBackgroundArea(int bpd, int borderBeforeWidth) {
+ CommonBorderPaddingBackground padding = getTableCell().getCommonBorderPaddingBackground();
+ int paddingStart = padding.getPaddingStart(false, this);
+ int paddingEnd = padding.getPaddingEnd(false, this);
+
Block block = new Block();
TraitSetter.setProducerID(block, getTable().getId());
block.setPositioning(Block.ABSOLUTE);
- block.setIPD(cellIPD);
+ block.setIPD(cellIPD + paddingStart + paddingEnd);
block.setBPD(bpd);
- block.setXOffset(xoffset + startIndent);
+ block.setXOffset(xoffset + startIndent - paddingStart);
block.setYOffset(yoffset + borderBeforeWidth);
return block;
}
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableContentPosition.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableContentPosition.java?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableContentPosition.java (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableContentPosition.java Wed Mar 19 10:26:45 2008
@@ -106,10 +106,12 @@
}
}
+ /** {@inheritDoc} */
public boolean generatesAreas() {
return true;
}
+ /** {@inheritDoc} */
public String toString() {
StringBuffer sb = new StringBuffer("TableContentPosition:");
sb.append(getIndex());
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHFPenaltyPosition.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHFPenaltyPosition.java?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHFPenaltyPosition.java (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHFPenaltyPosition.java Wed Mar 19 10:26:45 2008
@@ -43,6 +43,11 @@
super(lm);
}
+ /** {@inheritDoc} */
+ public boolean generatesAreas() {
+ return true;
+ }
+
public String toString() {
StringBuffer sb = new StringBuffer("TableHFPenaltyPosition:");
sb.append(getIndex()).append("(");
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHeaderFooterPosition.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHeaderFooterPosition.java?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHeaderFooterPosition.java (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/src/java/org/apache/fop/layoutmgr/table/TableHeaderFooterPosition.java Wed Mar 19 10:26:45 2008
@@ -48,6 +48,11 @@
this.nestedElements = nestedElements;
}
+ /** {@inheritDoc} */
+ public boolean generatesAreas() {
+ return true;
+ }
+
public String toString() {
StringBuffer sb = new StringBuffer("Table");
sb.append(header ? "Header" : "Footer");
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/status.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/status.xml?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/status.xml (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/status.xml Wed Mar 19 10:26:45 2008
@@ -59,7 +59,7 @@
</action>
-->
<!--/release-->
- <release version="0.95beta" date="8 March 2008">
+ <release version="0.95beta" date="22 March 2008">
<notes>
<section>
<title>Notes</title>
@@ -69,8 +69,8 @@
</p>
<ul>
<li>
- Improvements and bugfixes for tables (keep and break support, border
- conditionality etc.)
+ Many bugfixes in tables, plus some new features (full support for keeps and
+ breaks, border conditionality, background on columns and header/footer/body)
</li>
<li>
Improvements and bugfixes for font handling and font
@@ -86,14 +86,54 @@
FOP will, from now on, <strong>require at least Java 1.4</strong>.
</p>
<p>
- The image libraries Jimi and JAI are no longer needed (and used). Instead we rely
- completely on the Image I/O API that has been introduced with Java 1.4. If you still
- need support for bitmap image formats that do not work out-of-the-box, we recommend
- adding <link href="http://jai-imageio.dev.java.net/">JAI Image I/O Tools</link>
- (an Image I/O compatible image codec package) to the classpath.
+ There have been a few changes in tables that make FOP both more strict and more
+ compliant to the Recommendation:
+ <ul>
+ <li>XSL-FO 1.1 explicitly states that a row-spanning fo:table-cell element is not
+ allowed to span further than its enclosing fo:table-header/footer/body element
+ (see bottom of <link href="http://www.w3.org/TR/xsl11/#fo_table">section
+ 6.7.3</link>). From now on FOP will give a validation error if a document
+ contains such an erroneous cell.
+ </li>
+ <li>
+ <p>If an fo:table element contains explicit fo:table-column children, then those
+ elements set the total number of columns in the table. This means that a
+ validation error will now occur if a row contains more cells than available
+ columns. This change allows to improve performance, since the rendering of the
+ table may start as soon as the table-column elements have been parsed.</p>
+ <p>If more flexibility is needed, then the fo:table-column elements may be just
+ omitted. The final number of columns will then be set by the row that has the
+ most cells.</p>
+ </li>
+ </ul>
+ </p>
+ <p>
+ The image libraries Jimi and JAI are no longer needed (and used) for image loading.
+ Instead we rely completely on the Image I/O API that has been introduced with
+ Java 1.4. If you still need support for bitmap image formats that do not work
+ out-of-the-box, we recommend adding
+ <link href="http://jai-imageio.dev.java.net/">JAI Image I/O Tools</link>
+ (an Image I/O compatible image codec package) to the classpath. JAI is still required
+ for building the FOP distribution but it is optional for normal builds and at run-time.
</p>
</section>
</notes>
+ <action context="Layout" dev="JM" type="fix" fixes-bug="44412">
+ Bugfix: The before border of a block is no longer swallowed if its first child issues
+ a break-before.
+ </action>
+ <action context="Layout" dev="JM" type="fix" fixes-bug="44412">
+ Bugfix: When there was a forced break after a block with (conditional) borders the
+ border-after wasn't painted.
+ </action>
+ <action context="Layout" dev="VH" type="fix">
+ Bugfix: a forced break inside a cell was ignored when occurring before the minimum height
+ set on the enclosing row was set.
+ </action>
+ <action context="Layout" dev="JM" type="fix">
+ Fixed exceptions when lists, tables or block-container are children of an inline-level
+ FO.
+ </action>
<action context="Layout" dev="VH" type="add" importance="high">
Added support for background on fo:table-column and fo:table-header/footer/body elements.
</action>
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/java/org/apache/fop/URIResolutionTestCase.java
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/java/org/apache/fop/URIResolutionTestCase.java?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/java/org/apache/fop/URIResolutionTestCase.java (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/java/org/apache/fop/URIResolutionTestCase.java Wed Mar 19 10:26:45 2008
@@ -36,17 +36,19 @@
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
+import org.w3c.dom.Document;
+
import org.apache.commons.io.IOUtils;
import org.apache.commons.io.output.ByteArrayOutputStream;
+import org.apache.xpath.XPathAPI;
+import org.apache.xpath.objects.XObject;
+
import org.apache.fop.apps.FOPException;
import org.apache.fop.apps.FOUserAgent;
import org.apache.fop.apps.Fop;
import org.apache.fop.apps.FopFactory;
import org.apache.fop.apps.MimeConstants;
import org.apache.fop.render.xml.XMLRenderer;
-import org.apache.xpath.XPathAPI;
-import org.apache.xpath.objects.XObject;
-import org.w3c.dom.Document;
/**
* Tests URI resolution facilities.
@@ -85,9 +87,6 @@
private void innerTestFO1(boolean withStream) throws Exception {
FOUserAgent ua = fopFactory.newFOUserAgent();
- //Reset the image caches to force URI resolution!
- ua.getFactory().getImageFactory().clearCaches();
-
File foFile = new File(getBaseDir(), "test/xml/uri-resolution1.fo");
MyURIResolver resolver = new MyURIResolver(withStream);
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/disabled-testcases.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/disabled-testcases.xml?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/disabled-testcases.xml (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/disabled-testcases.xml Wed Mar 19 10:26:45 2008
@@ -233,54 +233,6 @@
<description>Column balancing doesn't work as expected.</description>
</testcase>
<testcase>
- <name>No background-images on table-body</name>
- <file>table-body_background-image.xml</file>
- <description>The backgrounds of table-body, table-header,
- table-footer and table-column are not painted, yet.</description>
- </testcase>
- <testcase>
- <name>Collapsing Border Model NYI</name>
- <file>table_border-collapse_collapse_1.xml</file>
- <description>Border-collapse="collapse" is not yet
- implemented.</description>
- </testcase>
- <testcase>
- <name>Collapsing Border Model NYI</name>
- <file>table_border-collapse_collapse_2.xml</file>
- <description>Border-collapse="collapse" is not yet
- implemented.</description>
- </testcase>
- <testcase>
- <name>Problems with border and padding on tables</name>
- <file>table_border_padding.xml</file>
- <description>The element list seems to not be fully correct, yet, causing
- the layout to look odd.</description>
- </testcase>
- <testcase>
- <name>keep-with-previous doesn't work inside tables</name>
- <file>table-cell_block_keep-with-previous.xml</file>
- <description>Keep-with-previous doesn't work inside tables and
- lists, yet.</description>
- </testcase>
- <testcase>
- <name>Border and padding conditionality is NYI on table-cells</name>
- <file>table-cell_border_padding_conditionality.xml</file>
- <description>Border and padding conditionality are not supported
- on table-cells, yet.</description>
- </testcase>
- <testcase>
- <name>No background-images on table-header</name>
- <file>table-header_background-image.xml</file>
- <description>The backgrounds of table-body, table-header,
- table-footer and table-column are not painted, yet.</description>
- </testcase>
- <testcase>
- <name>keep-with-previous doesn't work on table-rows</name>
- <file>table-row_keep-with-previous.xml</file>
- <description>Keep-with-previous doesn't work inside tables and
- lists, yet.</description>
- </testcase>
- <testcase>
<name>table-cell empty area with marker.xml</name>
<file>table-cell_empty_area_with_marker.xml</file>
<description>A table-cell producing an empty area does currently not add any markers to a page.
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border-collapse_separate_1.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border-collapse_separate_1.xml?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border-collapse_separate_1.xml (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border-collapse_separate_1.xml Wed Mar 19 10:26:45 2008
@@ -31,7 +31,7 @@
</fo:layout-master-set>
<fo:page-sequence master-reference="normal" white-space-collapse="true">
<fo:flow flow-name="xsl-region-body">
- <fo:table table-layout="fixed" border-collapse="separate">
+ <fo:table table-layout="fixed" width="100%" border-collapse="separate">
<fo:table-column column-width="160pt"/>
<fo:table-column column-width="200pt"/>
<fo:table-body>
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border_padding.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border_padding.xml?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border_padding.xml (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_border_padding.xml Wed Mar 19 10:26:45 2008
@@ -66,8 +66,8 @@
</fo>
<checks>
<!-- table dimensions -->
- <eval expected="308000" xpath="//flow/block[2]/@ipda"/>
- <eval expected="288000" xpath="//flow/block[2]/@ipd"/>
+ <eval expected="328000" xpath="//flow/block[2]/@ipda"/>
+ <eval expected="308000" xpath="//flow/block[2]/@ipd"/>
<eval expected="48800" xpath="//flow/block[2]/@bpda"/>
<eval expected="28800" xpath="//flow/block[2]/@bpd"/>
<eval expected="10000 10000 10000 10000" xpath="//flow/block[2]/@bap"/>
@@ -95,7 +95,7 @@
<eval expected="144000" xpath="//flow/block[2]/block[2]/block[1]/@ipd"/>
<eval expected="14400" xpath="//flow/block[2]/block[2]/block[1]/@bpd"/>
<eval expected="cell2" xpath="//flow/block[2]/block[2]/block[1]/lineArea"/>
- <eval expected="color=#ffff00,repeat=0,horiz=0,vertical=0" xpath="//flow/block[2]/block[2]/@background"/>
+ <eval expected="color=#ffff00" xpath="//flow/block[2]/block[2]/@background"/>
<!-- cell 3 -->
<true xpath="//flow/block[2]/block[3]/@is-reference-area"/>
@@ -106,7 +106,7 @@
<eval expected="144000" xpath="//flow/block[2]/block[3]/block[1]/@ipd"/>
<eval expected="14400" xpath="//flow/block[2]/block[3]/block[1]/@bpd"/>
<eval expected="cell3" xpath="//flow/block[2]/block[3]/block[1]/lineArea"/>
- <eval expected="color=#ffa500,repeat=0,horiz=0,vertical=0" xpath="//flow/block[2]/block[3]/@background"/>
+ <eval expected="color=#ffa500" xpath="//flow/block[2]/block[3]/@background"/>
<!-- cell 4 -->
<true xpath="//flow/block[2]/block[4]/@is-reference-area"/>
@@ -121,19 +121,27 @@
<element-list category="breaker">
<box w="14400"/>
<penalty w="0" p="0"/>
- <box w="10000" aux="true"/>
+ <box w="0" aux="true"/>
+ <penalty w="0" p="INF" aux="true"/>
+ <glue w="10000" y="0" z="0" aux="true"/>
<box w="14400"/>
- <penalty w="20000" p="0"/>
+ <penalty w="0" p="0"/>
<box w="14400"/>
- <box w="10000" aux="true"/>
+ <penalty w="0" p="INF" aux="true"/>
+ <glue w="10000" y="0" z="0" aux="true"/>
<penalty w="0" p="0"/>
<box w="14400"/>
<penalty w="0" p="0"/>
- <box w="10000" aux="true"/>
+ <box w="0" aux="true"/>
+ <penalty w="0" p="INF" aux="true"/>
+ <glue w="10000" y="0" z="0" aux="true"/>
<box w="14400"/>
- <box w="10000" aux="true"/>
+ <box w="0" aux="true"/>
+ <penalty w="0" p="INF" aux="true"/>
+ <glue w="10000" y="0" z="0" aux="true"/>
+ <box w="0" aux="true"/>
<skip>3</skip>
</element-list>
-
+
</checks>
</testcase>
Modified: xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_row-delay_fixed-row-height.xml
URL: http://svn.apache.org/viewvc/xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_row-delay_fixed-row-height.xml?rev=638943&r1=638942&r2=638943&view=diff
==============================================================================
--- xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_row-delay_fixed-row-height.xml (original)
+++ xmlgraphics/fop/branches/Temp_ProcessingFeedback/test/layoutengine/standard-testcases/table_row-delay_fixed-row-height.xml Wed Mar 19 10:26:45 2008
@@ -144,9 +144,9 @@
<element-list category="breaker">
<skip>3</skip>
- <box w="200"/>
- <penalty w="34800" p="INF"/>
- <box w="33600"/>
+ <box w="17000"/>
+ <penalty w="15000" p="0"/>
+ <box w="16800"/>
<penalty w="1800" p="0"/>
<box w="31200"/>
<penalty w="8000" p="0"/>
---------------------------------------------------------------------
To unsubscribe, e-mail: fop-commits-unsubscribe@xmlgraphics.apache.org
For additional commands, e-mail: fop-commits-help@xmlgraphics.apache.org