Support alignment-adjust for images. Partial application of the patch in Bugzilla 41044: * addition of a generic PropertyCache to be used by all Property types that can be safely canonicalized * modified EnumProperty, StringProperty, NumberProperty, EnumNumber and FixedLength to make use of the cache infrastructure Refactoring in the fo package: -> removal of the childNodes instance member in fop.fo.FObj -> addition of a firstChild instance member in fop.fo.FObj -> addition of a siblings instance member in fop.fo.FONode -> addition of a FONodeIterator interface in FONode + corresponding implementation in FObj -> changed implementations of FObj.addChildNode(), .removeChild() and .getChildNodes() Code cleanup and restructuring: Refactoring of PageSequenceLayoutManager and provide common FObj id property use Slight improvement of relative font-weight handling in the properties package. Updated PDF/A-1b support according to ISO-19005-1:2005/Cor.1:2007. Add support for font auto-detection (easier font configuration). Use source resolution setting for bitmap images which don't provide their own resolution. Fixed the rendering of zero-width spaces for certain fonts by not generating them into the area tree. Fixed a problem with disappearing footnotes inside hyphenated inlines (and footnotes with hyphenated inline child). Add support for exact positioning of internal PDF links. Fix PDF Genaration for non-ASCII compatible locales. Add support for the collapsing-border model in tables. Add support for named destinations in PDF. Fixed a problem with keep-with-next on table-rows. Once a keep-with-next was set inside a table, the FO following the table would always be glued to the previous table. Fixed a problem with the auto-rotate-landscape setting in the PostScript renderer. It didn't generate the right setpagedevice command. Fixed an IllegalArgumentException for absolutely positioned block-containers with a border and no height/bpd set. Add support for a two-pass production for PostScript output to minimize file size. This adds images only once and adds only the fonts that are really used. If a line contained nothing but a linefeed, this didn't produce empty lines. Replaced the auxiliary zero-width box with a glue the width of a line, and shrinkable to zero-width. Stricter FOP user configuration checking Fix parsing 'url(...)' when the URL itself contains a bracketed part. Support for GIF images in RTF output (RTF handler, only. Does not affect the RTF library.) Fix for NPE with PNG images for RTF output. Fix for properly parsing font-family names containing spaces. Support for soft masks (transparency) with ImageIO image adapter. Fix incorrect behaviour of the BreakingAlgorithm when some inline content is wider than the available ipd, causing a restart. Fix for PDF corruption when a TrueType font with spaces in its name is embedded and no XML font metrics file for that font is used. Fix for ClassCastException when fo:wrapper was used as direct child of fo:flow. Note: "id" attributes are still not handled properly on fo:wrapper! Added support for the soft hyphen (SHY) character. Added support for line-height-shift-adjustment property. Added support for the system property fop.home to cli.Main.getJARList(). Added support for display-align for table-cell in RTF output. Added support for UAX#14 type line breaking. Support does not extend across nested fo:inline elements.

This is the first production grade release of the new FOP codebase.

  • It contains the new API first introduced in release 0.92 beta. The preceding API has been removed.
  • See the compliance page for an overview of the compliance of this release with the XSL 1.0 and 1.1 recommendations.
  • This release again contains many bug fixes and new features. See below for details.
  • See the known issues page for an overview of the known issues with this release.

Caveats:

  • You may experience different behaviour compared to version 0.20.5. Please consult the "Upgrading" page for details.
Added support for the use of Open Type fonts Enabled Copy/Paste from PDF content in Acrobat Reader for text using embedded TrueType fonts. Commented out unused properties, in order to minimize memory usage. Removed unused attributes from TableCell. Added initial support for loading fonts without a pre-created XML font metric file. Support for the rgb-icc() function and for a proprietary cmyk() function (for device CMYK colors only through the PDF renderer so far). Minor fixes and improvements for the AWT Preview (keyboard shortcuts, scrolling, windows setup). Added support for SVG in fo:instream-foreign objects for RTF output. Bugfix: Fixed bug when the sum of column widths of a table is larger than the specified widths. The table width was not adjusted. Bugfix: Nested tables with headers and footers were not handled correctly and could overlap with the region-after. Added support for CCITT compression in the TIFFRenderer by switching to the ImageWriter abstraction from XML Graphics Commons. Extension properties fox:orphan-content-limit and fox:widow-content-limit which help with list-block and table layout. See the documentation for details. Configuration option in the Java2D-based renderers that allows to disable the default white background in order to produce bitmap output with transparency. Split up FOText instances larger than 32K characters to avoid integer overflow during layout. Bugfix: Corrected painting of shading patterns and position of links for SVG images inside FO documents. Minor fix: correctly set negative values for ipd/bpd to zero. Rework of default column-creation / column-width setting from cells in the first row. Added relaxed validation for empty list-item-*, as suggested by Gary Reed. Modified proportional-column-width() function to log an error if used with table-layout=auto Deferred property resolution for markers until they are actually retrieved, which leads to percentages and relative font-sizes now getting the correct values. Also deferred white-space-handling for markers. Changed the way overflowing pages are handled. The overflow property on region-body is now used to define the behaviour. Fixed a memory-leak: The FO tree part of a page-sequence was not released when a page-sequence was finished. Bugfix: Table headers and footers were swallowed when a table was nested in a list-block. Fixed a bug with indent handling when margins are used on a surrounding block and not start/end-indent. Compatibility fix for GCJ (GNU Classpath): Using "UTF-16BE" instead of "UnicodeBigUnmarked" encoding. Fixed handling for CCITT Group 4 TIFF images with fill order 2. Fixed setting of page margins in AWT Renderer like it was done in the print renderer. Fixed two memory-leaks in image handling. The image cache is finally working properly. Let numeric property values without a unit be treated as pixels like in HTML. This fixes certain NullPointerException when no units are specified. (Note: the use of pixels in XSL-FO is discouraged!) Bugfix: Potential multi-threading issue (ConcurrentModificationException) eliminated for ElementMapping classes. No more System.exit() and look & feel setting calls inside the reusable parts of the AWT viewer. Proper escaping of characters in list-items labels for RTF output. Bugfix: FOUserAgent specific configuration parameters specified in config file were not set when FOP was invoked from command line. Added support for PDF/A-1b and PDF/X-3:2003. (Note: this may still be a bit incomplete. Feedback is welcome!) The CIDSet object is now generated for CID fonts which are embedded in PDFs. (Required by PDF/A). The Java2DRenderer (and therefore the print and bitmap renderers) is now offering the same quality as the PDF and PS renderers. Note: There can still be little differences between PDF and Print/PNG/TIFF because the latter uses a different font metrics source. Bugfix: components of the border-separation property weren't set when in shorthand-mode, leading to a NPE being thrown. Bugfix: Table headers were omitted when a table is a child of a block-container. Bugfix: Bookmarks in PDF will be generated even if some bookmarks cannot be resolved. Bugfix: the interaction between the table FOs and properties package in determining initial values for column-number should be a one-time process, not repeated when the table is in a marker that is retrieved. Bugfix: All fonts names were converted unnecessarily to lower case in RTF output. Bugfix: The combination of hyphenation and kerning resulted in slightly ragged right ends for right-aligned and justified text. Bugfix: NullPointerException in AreaAdditionUtil in a table-cell spanning multiple pages and with a marker. Bugfix: NullPointerException in RTF output when a table does not contain table-columns. Bugfix: NullPointerException in RTF library when there are no borders on the parent table. Automatic support for all fonts available to the Java2D subsystem for all Java2D-descendant renderers (TIFF, PNG, print, AWT). Bugfix: Improved baseline detection in TTFReader for TrueType fonts. Bugfix: tables nested in inline elements caused a NullPointerException. The default sRGB color profile provided by the Java class library is no longer embedded if it is encountered. This should reduce the PDF size considerably. Bugfix: Sections with span="all" lead to overlapping text if spanning multiple pages. Bugfix: Percentages in vertical-align property values were not correctly handled. Bugfix: Gaps in table-columns cause a NullPointerException. Changed the internal representation of colors to use Java's own color infrastructure instead of FOP's home-grown classes. Bugfix: TABs were not correctly replaced by spaces in some circumstances. Content in block-containers makes better use of shrink to fit content vertically into the available area. This can be used indirectly to justify content vertically in a block-container. Bugfix: basic-links with internal destinations in documents with multiple page-sequences sometimes pointed at the wrong page. Bugfix: Fixed ClassCastException when retrieve-marker is used as a direct child if static-content in which case leading and trailing white space is not properly removed. Bugfix: Fixed OutOfMemoryException with long data URLs (RFC 2397). Initial support for page-number-citation-last (XSL 1.1). Works without problems only for page-sequence so far.
Bugfix: The generation of the PDF "d" (setdash) command was assuming that only integer values can be used but that isn't the case. Dash patterns PDFGraphics2D would be wrong in the process. Bugfix: Fixed a division by zero problem in TTFReader and improved the detection of the capHeight and xHeight font metric values for TrueType fonts. Bugfix: Allow URLs in basic-link's external-destination to be wrapped in "url()". Bugfix: Corrected enumerated property value for white-space property from "no-wrap" to "nowrap". Bugfix: Added support for white-space-treatment="preserve" in particular to support the white-space="pre" short hand property. Corrected expectation and behaviour for the text-indent property to only apply to the first line area generated by a block. Bugfix for invalid handling of ICC color profiles in JPEG images and for dealing with CMYK JPEG images with the Adobe APPE marker. Initial support for page-position="last" added. Reenabled loading of user-supplied hyphenation patterns that was available in FOP 0.20.5. (See "hyphenation-base" option in the user configuration) Bugfix: Certain filter combinations in PDF could lead to invalid PDFs. DecodeParams were not properly handled. Bugfix: CCITT Group 4 encoded TIFF images with multiple strips are now properly embedded in PDF files. Added support for fixed-width spaces. Added support for kerning. Bugfix: Fixed a copy/paste error in the table layout code that caused wrong page break decisions when table-headers and/or table-footers are used. Bugfix: Fixed an NPE that was thrown when a table was used inside a footnote-body. Bugfix: Fixed a problem with certain TrueType fonts which are missing the "PCLT" table, where a baseline-shift="sub" had no effect due to a missing x-height value. (Note: This only affects TTFReader, so the font metric file has to be regenerated.) Bugfix: When the base URL was specified as a file system path, the constructed URL was wrong. Support for "userconfig" attribute in FOP Ant Task. Initial support for XMP metadata (PDF 1.4) under fo:declarations. Added support for the background-position shorthand property. Added support for the font shorthand property. Added support for system-color() function. Bugfix: Fixed two causes for ClassCastExceptions in BlockContainerLayoutManager. Bugfix: padding-top and padding-bottom on list-items could lead to wrong page break decisions and thus to overlapping text. Bugfix: break-before and break-after were ignored on list-items. Bugfix: The elements representing a non-breaking space weren't always correct. Bugfix: Text-decoration was not promoted if no text-decoration attribute was specified on a nested element. Added support for the from-table-column() function. Bugfix: Spanned cells could lead to an false error message about overlapping cells and ultimately a NullPointerException. Bugfix: Regions with non-standard names got ignored in RTF output leading to missing headers and footers. The RTF output now properly generates the "\landscape" flag for documents in landscape orientation. Following a clarification by the XSL FO SG, space traits are only set on the first and last area generated by an FO, and not on every area anymore. New feature: "Intermediate format" (IF). The IF is basically the XML dialect written by the area tree renderer (XMLRenderer). A new parser for this format allows reparsing a serialized and possibly modified area tree and rendering it to the final target format. Bugfix: Floating point numbers were not properly formatted in the PDF renderer which could lead to error messages while opening a PDF in Acrobat Reader. Implement property name as default argument on some xsl-function calls. Implement force-page-count property of page-sequence. Bugfix: Spans that end up with a negative height don't get swallowed anymore. Relative URLs for the font configuration attributes metrics-url and embed-url are now supported. A new configuration property font-base has been added. It sets the base URL against which relative font URLs are resolved. If font-base is not set base is used. Added support for RFC2397 "data" URLs. Bugfix: Certain border styles could lead to a NullPointerException. Bugfix: Space was not adjusted if the space was on a nested block. This could lead to content overflowing the bottom of a page. Bugfix: TableCell did not properly report that it generates reference-areas which could lead to wrong inherited values for start-indent and end-indent. The font loading code now reads the encoding value from the XML font metrics file so that fonts like Symbol and ZapfDingbats can be embedded explicitely (Required by PDF/A). Improvements to the code for inline block content. Bugfix: Image height for BMP images was incorrectly calculated Revision of refinement white-space handling. Added feature: support for white-space shorthand Added feature: support for page-break-* shorthands Bugfix: NullPointerException on certain fo:inline within lists. Bugfix: ClassCastException on certain fo:inline with border combinations. Changed a method name in LineArea from finalize to finalise because it was never intended for the method to be an override of the Java Object finalize method. If invoked by the Java garbage collector it may cause a NPE. Deprecated Fop constructors that use integer constants to select the output format have been removed in favor or the constructors that use MIME types. Fixed a bug where the linefeed-treatment property value "preserve" was not honoured when used in conjunction with text-align="center". Bugfix: hard breaks with even-page or odd-page were not handled correctly when spaces were surrounding the break. Changed the XMLHandler interface so it doesn't report the MIME type it supports but instead can report whether it supports a particular Renderer implementation. XMLHandlers are now configurable. Fixed a bug where SVG content could be clipped when rendered to PostScript. Changed the way resolutions are handled. The single resolution in the user agent got split up into source and target resolutions. For more info, see the updated documentation. Note: backwards-incompatible change! Bugfix: Some content inside a table-header may not have been renderered on pages n > 1 in certain conditions. Fixed a bug where an empty line, i.e. a block containing only a  , was not rendered at all. Fixed a bug where the area for a finished cell that is broken over pages was created once for each row it was spanned over instead of only once. Added checks that warn about tables and block-containers that are wider than the available content area. Bugfix: Footnotes were lost if the footnote appeared in centered text. Improved log and error messages in a number of places by adding additional context information that should make it easier to find the location in the source files. Fix to correct image sizes in RTF output. First attempt at SVG support in RTF output. SVG images are converted to 300dpi JPEG images internally. Additional checks to detect text overflows. The overflow property is now properly handled where applicable. Source location information improved. If location information is not available, the context information is provided based on text content. The command-line now automatically sets two parameters for any XSLT transformation: "fop-output-format" contains the MIME type of the currently selected output format, "fop-version" contains FOP's version number. The output file is now deleted when an exception occurs when calling FOP from the command-line. Bugfix: Areas for table-cells that are broken over more than one page are now generated even if all its content is already painted on a previous page. This fixes strange effects like a table grid that is not completely painted. Bugfix: Column balancing produced strange break decisions in certain multi-column documents with large amounts of text. Added an alternative set of rules for calculating text indents which tries to mimic the behaviour of many commercial FO implementations that chose to break the rules in the FO specification in order to better meet the natural expectations of inexperienced FO users. Bugfix: The combination of content-width="scale-to-fit" and content-height="100%" did not work as expected due to a datatype conversion bug. Bugfix: A span="all" on the first block cause a subsequent page break and the first block didn't span all columns. Bugfix: Self-created OutputStreams in PNG Renderer were not properly closed. The border-collapse property on fo:table is now forced to the value "separate" until the collapsing border has been implemented. font-family list still not fully supported but a comma-separated list is now properly tokenized. FOP will now go through all fonts in the list to find one that is available, but it doesn't do so per character, yet. Implemented "Overconstrained Geometry" rules (5.3.4, XSL 1.0) for the most important cases. Bugfix: Relatively positioned BlockViewports (from block-containers) caused the paint cursor not be be properly advanced when space-before or space-after were present. Bugfix: Space resolution was incomplete for content in table-cells. Conditional elements didn't get removed. The validation check for non-zero borders and padding on a region-* and for empty static-content elements is now turned off when relaxed validation is active to improve compatibility with FO documents written for other FO implementations. Bugfix for "/ by zero" ArithmeticExceptions when an URL to a non-existing image is used and content-width and/or content-height is used. Bugfix for a multi-threading problem: propertyListTable initialization moved from the constructor to a static block in FONode. This fixes NullPointerExceptions in PropertyList. Bugfix for placement of text inside a text area when borders are present in PostScript output. Improvements on leader painting in PDF output. Support for leader painting in PostScript output. Support for hyphenation-ladder-count. Complete redesign of the FOP codebase in the period between Dec 2001 and Nov 2005. There are just too many changes to list here. If you like to know details, run "svn log --verbose http://svn.apache.org/repos/asf/xmlgraphics/fop/trunk/". For the change log for the maintenance branch (where FOP 0.20.5 came from), please see the "CHANGES" file in the distribution, or the CHANGES file in the SVN repository.