WHAT'S NEW IN XEP XEP 4.4 New features and improvements ============================= - Personal license, free for noncommercial use, is now available; - many enhancements and bug fixes, including: tagged PDFs can now be produced with stamped versions (Personal and Trial); changebars in nested lists and tables work. Fixes since 4.3 =============== - treatment of indents on spanning blocks and flow-sections is improved; - implemented a workaround for a bug in JRE in WeakHashMap. - precise values are used for crop & bleed offsets; - repeatable table headers processing made more robust. XEP 4.3 New features and improvements ============================= - added Section 508 support; XEP can now produce documents that are in compliance with Section 508 of the Rehabilitation Act of 1973. - added support for repeatable table footers; XEP now honours 'table-omit-footer-at-break' property. Fixes since 4.2 =============== - restored proper handling of color specifiers in 'text-shadow' property; - overflow property in CSS style is supported; - markers in SVG are supported; - rendering of images optimized; - fixed containers in static regions work; - hyphen characters are preserved on lines affected by initial-property-set. XEP 4.2 New features and improvements ============================= - Containers with fixed absolute position can now have z-index property; - Change bars extension is now supported; - PDF/X documents can now be produced with varying conformance level of PDF/X-1a or PDF/X-3; - ICC profule can now be embedded into documents. Other Improvements ================== - Clipping of SVG images was optimized - XEP now fills the Producer field in PDF meta-info and allows for control over the Creator field Fixes since 4.1 =============== - leaders and images are kept together with the preceding text - fallbacks for tables with overconstrained keeps are handled nicely - page-number-citation works correctly with fonts with kerned digits - handling of missing glyphs in subsetted fonts improved XEP 4.1 New features and improvements ============================= - Adobe Compact Font Format (CFF) fonts can be embedded into PDF documents. - Page numbers can use Arabic-Indic, Kanji, Katakana, Hiragana, Cyrillic and Armenian numerals. - Compressed SVG images are properly recognized and processed. - Memory management has been improved, the formatter now uses memory pools and weak references to avoid memory leaks and ensure efficient resource allocation. - Both PDF and PostScript use the Latin1 (ISO-8859-1) encoding for symbols that can be represented in it, thus making post-processing of generated PDF and PostScript more convenient. - Formatting of automatically laid out tables is brought into strict accordance with CSS2. - Fixes for bugs discovered since the release of XEP 4 are incorporated into the production code. XEP 4.0 New features ============ 1. XEP 4.0 uses a single configuration file for all subcomponents: formatter options, fonts, and hyphenation are now configured from a single location. The new format has the following advantages over the old one: - default options for back-ends can be set in the same file; - font configuration is more intuitive: font families are created directly, and individual fonts are explicitly assigned to specific combinations of font family + weight + style + variant; - font aliases can resolve to multiple font families; - font aliases can depend on the language setting. 2. Table processing is now fully conformant to the XSL Recommendation. In particular, the following features are now supported: - automatic table width adjustment (table-layout="auto"); - collapsed borders (border-collapse="collapse"|"collapse-with-precedence") 3. Additional prepress features are supported: - spot and registration colors can be specified in both XSL-FO and SVG; - bleeds and trim offsets can be controlled by processing instructions, and respective marks placed on the page; - arbitrary SVG images can be placed in the image offset area, to create advanced printer marks. The distribution includes sample SVGs for registration targets and color bars. 4. More SVG features are supported: - clipping implementation is extended to cover arbitrary combination of path, shapes, and text; - fill-opacity and stroke-opacity are supported in PDF output only (incompatible with PDF version 1.3). 5. Improvements in font handling: - TrueType collection fonts are supported; - OpenType fonts with CFF outlines are supported, with limitations: * in PostScript, only non-CID fonts are supported, and Level 3 is required; * subsetting of these fonts is not implemented. - Automatic slanting is possible, to create oblique and backslant fonts from upright variants. - Basic support for ligaturization: a list of ligatures can be specified in the font configuration. Other Improvements ================== - XEP can work without write access to local file system. When TMPDIR option is set to 'none', XEP stores all intermediate files in memory. - Performance is optimized: memory consumption reduced, table processing speeded up; - Documentation rearranged and refactored. Interface Changes ================= - Deprecated Java interfaces have been removed; - FormatterImpl takes an optional extra parameter, an XML document describing the configuration (as a generic JAXP source); - Validator now accepts generic JAXP source as input. Bug fixes ========= - Inline keep conditions work on rx:index-item elements. XEP 3.8.4 Bug fixes ========= - In PDF, multibyte Unicode strings in annotations are preserved in linearization; - In SVG, text spans with only one absolute coordinate don't disappear; - In DOMInput Java code sample, namespace handling in DOM parser turned on. XEP 3.8.3 Bug fixes ========= - Leaders in markers don't crash the formatter; - TrueType font subsets that contain only spaces are compatible with Acrobat/Acrobat Reader. XEP 3.8.2 Bug fixes ========= - Markers referenced by elements with retrieve-boundary="document" get correct inherited properties when retrieved from other page sequences, and never disappear; - Subscripts/superscript page number citations are correctly positioned; - Footnotes from repeated table headers work correctly; - Single token in 'font' shorthand does not disrupt parsing; - SVG color names work in border shorthands; - In PostScript, unmatched 'gsave' operator never appears in SVG images; - In SVG, elliptic arcs don't disappear because of an arithmetic overflow; - In XEP for Java, missing Java code sample re-added (Developer and Server editions only); - In XEP.NET Assistant, XSL FO files are not locked after processing; - In XEP.NET command-line utility, '-valid' switch operates correctly. XEP 3.8.1 Bug fixes ========= - Floats made more robust; - Width and height on fo:block elements is duly ignored; - In XEP.NET, empty attributes and blank spaces outside the root node don't cause a null reference exception; - In PDF generator, linearized PDFs are made compatible with Acrobat 5.x; - Documentation corrected. XEP 3.8 New features ============ - Support for kerning in XSL-FO and SVG; - Blank pages caused by break properties are drawn using 'blank' page master; 'last' page master is never omitted from the sequence; - Improved treatment of overflow conditions, support for 'overflow' property; - New extension element: rx:page-number-citation-last; - SVG color names can be used in XSL-FO property values; - In the PDF output, page labels reflect the XSL-FO page numbering; - Support for markers in SVG; - A new sample added, showing how to apply an XSLT transformation to the output of the formatter (Server and Developer editions only); - Added '-hosted' switch to the synopsis of XSLDriver command line invocation, to permit its call from within a JVM (no System.exit() called on exit); - .NET version can work with the intermediate XML representation. Improvements ============ - Reconsidered message caching policies in the logger: warnings about missing fonts are issued once per font per document instance, all other warnings are not cached; - Memory usage optimizations: XSLT preprocessing stage eliminated; - Validation strictness level can be controlled; - Representation of SVG text optimized; number of save/restore operations in PDF and PostScript significantly reduced; - In PDF output, target file specifications for PDF-to-PDF links are styled in a way recognized by Adobe Acrobat 6.0; - Performance of .NET version in debug mode significantly improved; - In PostScript, data relative to images are wrapped in a pair of custom comments, to facilitate resource management and postprocessing. Bug fixes ========= - In right-to-left text, page numbers and page number citations are presented in correct reading order; - Fixed occasional reversing of the last word in right-to-left texts; - .NET native XML/XSLT component is used in a conformant way. XEP 3.7.8 Improvements ============ - In PostScript generator, page device setting is optimized to minimize the number of setpagedevice calls. Bug fixes ========= - In SVG, clip paths can be specified through CSS styling; - In SVG, negative values for 'x' and 'y' attributes on elements are processed correctly; - In SVG, CSS cascade rule application fixed: selectors applicable to a parent element don't leak to children anymore. XEP 3.7.7 Bug fixes ========= - SVG text positioning repaired (accidentally broken in 3.7.6); - In PDF generator, temporary files created by linearization are erased at the end of processing. XEP 3.7.6 Improvements ============ - Empty URL in 'src' attribute treated as 'none'; - In PDF generator, TrueType fonts with spaces in font name don't destroy the output file; - For PostScript safety, text with font-size='0' is omitted in PDF and PostScript output; - Compression routines include a workaround for a bug in J#.NET 1.1. Bug fixes ========= - 'visibility' property in SVG works when specified through CSS styles; - TIFFs with infinite strip size now work correctly; - Rotated pages correctly process multicolumn layouts; - Restored accented characters in the hyphenation file for Spanish; - Minor corrections to the documentation. XEP 3.7.5 Improvements ============ - PDF parser made more robust. Bug fixes ========= - 'whitespace-treatment' property made inheritable; - PDF parser now allows /Contents entry of the page dictionary to be an indirect object reference; - Compatibility with MS JVM restored; - Corrections to the documentation. XEP 3.7.4 Improvements ============ - Lifted restriction on font names in etc/fonts.xml: 'name' attribute does not need to coincide with the system (PostScript) name for the font; - TrueType font parser accepts name and version strings in MacRoman encoding (present in legacy TrueType fonts). Bug fixes ========= - Added optimization against a stack overflow when processing long tables without fo:table-row elements; - Fixed a problem with instream foreign objects creeping from the preceding element to the subsequent (through improper caching). XEP 3.7.3 Bug fixes ========= - Japanese texts in PDF output are searchable in Adobe Acrobat 4 and 5; - 'switch' functionality restored in SVG; - an error message is issued when an outline is missing for a font that should be embedded; - fixed positioning of floats attached to leading inlines in the line area. XEP 3.7.2 Bug fixes ========= - Lines terminated with explicit linefeeds now honor 'text-align-last'; - Table headers don't disappear in right-to-left writing mode; - Right-to-left directionality is preserved inside inline elements; - Subsetting of Type 1 fonts with non-Adobe embedded encoding does not lose diacritics from accented Latin characters; - Acrobat CJK fonts in PDF output are searchable in Adobe Acrobat 4 and 5; - Embedded Type 1 fonts in PostScript may not contain linebreaks in the first 8 bytes of the encrypted body (for Distiller compatibility); - X-height and Cap-height font metric parameters are correctly extracted from older TrueType fonts (with 'OS/2' table version 0 or 1). Improvements ============ - Relaxed checks for 'text-align' values in the validator. XEP 3.7.1 Improvements ============ - Warnings and errors are cached in the default logger: identical messages are displayed only once per document. Bug fixes ========= - Multi-page footnotes don't get trimmed; - Repeatable header is correctly displayed when the first row has a smaller height than the header; - license.txt files with Unix/Mac newlines work properly; - For compatibility with previous XEP versions, setOption() method in com.renderx.xep.gen.H4base class turned back to 'public' access. XEP 3.7 New features ============ - New non-static Java API, better suitable for J2EE integration; - Full support for table headers; - Support for all values of 'white-space-treatment' property; - 'show-destination' property is honored for the PDF-to-PDF links; - CSS Level 1 styling is supported in SVG. Improvements ============ - Subsetting for Type 1 fonts restored and improved; - All glyphs in Type 1 fonts can be accessed, regardless of the built-in encoding and character set; - New logger used in the command-line driver; - Embedded AGL upgraded to version 2.0; - External links in PostScript can produce PDF-to-PDF hyperlinks. Bug fixes ========= - PDF image files are closed after processing; - Attributes from external namespaces are duly ignored. XEP 3.6.4 Bug fixes ========= - Java system variables without dots do not trigger spurious error messages; - Very long table cells behave correctly in multi-column layouts; - Validator accepts RenderX extensions for background image sizing on region elements; - In SVG, stroke-dasharray="none" does not generate spurious error messages; - PDF image parser correctly processes documents with resource dictionary specified on intermediate leafs of the page tree; - Brackets in annotation text are correctly escaped during linearization; - Embedded PDF images don't get word- and letter-spacing from the preceding text. XEP 3.6.3 Improvements ============ - Added support for clipping by simple shapes in SVG. Bug fixes ========= - PFB fonts embedding in PostScript repaired; - Name mangling for PostScript temporary files made more robust. XEP 3.6.2 Bug fixes ========= - Transformation attributes are honored on elements; - Improved TrueType font embedding algorithm for fixed-width fonts; - Trial version works correctly when Times and Helvetica font families are redefined to non-Adode fonts. XEP 3.6.1 Bug fixes ========= - Footnote placed on an empty block at the end of a page sequence does not slip to the next page; - It is possible to use 'resource:' URL schema in external system entities inside XML configuration files; - SVG support restored (accidentally broken in 3.6). XEP 3.6 New features ============ - All resources (fonts, configuration files etc.) can be specified as URLs; - 'data:' and 'resource:' URL schemas supported in all URLs; - Bookmarks state (expanded/collapsed) can be controlled; - Content type can be explicitly set for background images; - Initial headers in tables can be suppressed; - CMYK color can be used in SVG images; - Initial destination can be specified with an extension attribute; - Initial scale factor and viewer preferences can be specified with processing instructions; - PDF generator can produce linearized (Web-optimized) PDF; - In PostScript, arbitrary page device settings can be specified on a per-page basis. Improvements ============ - CMYK JPEG files generated by Adobe Photoshop are processed consistently; - Relative paths and xml:base enabled in SVG images; - API expanded: the formatter and all standard back-ends now have initialization methods that take java.util.Properties as arguments. Format-specific property setting methods are now deprecated; - Added an option to disable call to System.runFinalizersOnExit() during formatter initialization. Bug fixes ========= - Unused glyphs deleted from metrics for Adobe base fonts; - Improved processing of accented characters in hyphenation tables; - Repaired text-align problems when TrueType and non-TrueType fonts are mixed in font-family attribute; - Output to stdout works again; - Before-floats don't produce a spurious page break after them; - Keep-together condition on table elements does not interfere with keep-with-next; table headers are never split from the body; - Hot areas and destination targets are correctly positioned in right-to-left text; - Strengthened synchronization to ensure thread-safety on multi-CPU systems. XEP 3.5.4 Improvements ============ - Named destination placement optimized. Bug fixes ========= - Explicit file:// URLs now work correctly in the PDF generator. XEP 3.5.3 Improvements ============ - Footnote placement algorithm rewritten: long footnotes are handled better, keep/orphan/widow restrictions on footnotes are honored consistently; - Improved placement of dot-filled and pattern-filled leaders: constraints permitting, the length is adjusted to the nearest multiple of pattern width; - Number of calls to EventLogger.logger() is significantly reduced to achieve better performance in multi-CPU installations. Bug fixes ========= - URL escaping for file URLs revisited, and reduced to a necessary minimum for the sake of interoperability with older versions of Java and servlet engines; - Image caching improved: virtual servers are taken in consideration when comparing URLs; - Keep conditions handling on table rows further improved; - Validator accepts data type for letter-spacing and word-spacing; - Spaces are removed from font names embedded in PDF or PostScript; - Hot areas placement in PostScript back-end repaired; - Non-ASCII symbols in internal destinations are correctly processed in PostScript; - Processing instruction functionality in PDF generator restored. XEP 3.5.2 Bug fixes ========= - Keep-together on rows with cells spanning multiple columns are handled correctly; - Multiple references to the same missing internal destination are reported once per document. XEP 3.5.1 Improvements ============ - Under Windows, UNC paths may be used. Bug fixes ========= - Special symbols in file URLs are correctly unescaped from x-www-urlencode. - Restored loading of remote SVG images. XEP 3.5 New features ============ - A subset of SVG supported for external and embedded vector graphics; - Support for catalogs: external SAX entity resolver and JAXP URI resolver made configurable. Improvements ============ - PostScript back-end redesigned; - Image processing in PostScript optimized: images are inserted once and referenced through forms; - Documentation markup checked; documentation switched to DocBook stylesheets from Norman Walsh. Bug fixes ========= - Fixed a bug that caused XEP to crash on floats not preceded by spaces. XEP 3.4.2 Bug fixes ========= - Big-endian TIFFs are parsed correctly. XEP 3.4.1 Improvements ============ - Bookmarks and link anchors are generated for missing internal destinations. Bug fixes ========= - /Parent is correctly specified for all bookmark entries. XEP 3.4 New features ============ - rx:index extended to support the following: * explicit range markup, with rx:begin-index-range/rx:end-index-range; * independent styling of individual page index entries, with rx:index-item; * backlinking to index term locations, with 'link-back' property. - In PDF generator, file URLs in external-destination are converted to PDF-to-PDF links; - PDF generator produces named destinations for link targets in the document: parts of PDF document can be addressed from outside as named fragments. - by default, footnotes are now placed into a page-wide area as prescribed by the XSL specification. Column-wide footnotes can be achieved by setting PAGEWIDE_FOOTNOTES option to 'false'; - XML output producer enhanced: it can incorporate images in the body of the output file. Bug fixes ========= - Indexed-color PNG images with transparency now work properly. Other changes ============= - XML output producer class renamed to H4XEP. XEP 3.3.1 New features ============ - xml:base attribute can be used to specify base for relative URIs; - formatter can be accessed through org.xml.sax.ContentHandler interface; - new Java samples added; - documentation updated. Bug fixes ========= - non-breaking spaces don't disrupt text justification. Other changes ============= - validator issues a warning for non-zero padding and border specifiers on region elements - fo:region-body, fo:region-before, fo:region-after, fo:region-start, fo:region-end. (This warning is disabled in XEP2-compatible mode). XEP 3.3 New features ============ - Arabic glyph shaping is implemented; - relative-align is supported for fo:list-item; - keep-with-next/previous on table rows and cells is implemented consistently; - the command line interface (com.renderx.xep.XSLDriver) has been redesigned; a consistent command-line syntax is used for all processing modes and supports use of XEP as a pipe; - XEP2_COMPATIBLE_MODE is set to false by default; XEP strictly follows inheritance rules of the Recommendation. Bug fixes ========= - PDF images on rotated pages are properly oriented in the resulting document. XEP 3.2.3 Bug fixes ========= - bounding box is set correctly for embedded PDF images. XEP 3.2.2 Bug fixes ========= - 'text-indent' works properly with mixed content; - no-break space (Unicode 00A0) is preserved (not collapsed) in the output; - uri-specifications with special characters are processed correctly; - links to list items and table rows point to their before-edges; - PDF output is adjusted for printing on PostScript printers from Adobe Acrobat version 4; - AFM parser does not crash on malformed AFMs; - TrueType metric handling improved; - PDF embedding robustness increased. XEP 3.2.1 Bug fixes ========= - parameters in MIME type specifiers are duly ignored; - marker issues resolved: markers recognized as children of table and list elements; - scripts for Windows adapted for Windows 95/98/Me; - keep conditions honored on footnotes; - specifying different locations for configuration files now works correctly; - hyphenation algorithm improved; - documentation proof-read and cleaned up. Improvements ============ - Added extra validity checks to PNG parser, as a workaround for Alchemy-generated PNG images with incorrect transparency; - Added protection against an attempt to embed OpenType/CFF fonts. XEP 3.2.0 New features ============ - 'text-shadow' attribute supported, except for blurred shadows; - PDF generator can embed PDF images; - options for PDF and PostScript can be specified via processing instructions; - added an option to disable RenderX proprietary interpretation of inheritance; - absolute-position="absolute" supported. Improvements ============ - added a switch to display XEP version to com.renderx.xep.Driver and com.renderx.xep.XSLDriver command-line interfaces; - all dependence on AWT has been removed: no more limitations in functionality under MS JVM or console-only Unix/Linux. Bug fixes ========= - margin value of 'auto' recognized; - 'number-columns-spanned' does not leak from fo:table-column to cells in that column; - very small GIFs (less than 200 bytes with 64 colors or less) are processed correctly; - various fixes to improve code robustness. XEP 3.17 Bug fixes ========= - A fix for Microsoft Java implementation: images in PostScript output are duly filtered through ASCII85 (added protection against bug in java.io.FilterOutputStream). XEP 3.16 Bug fixes ========= - XEP now works correctly with Microsoft JVM: resource loading improved; - fixed single-color transparency processing in PNG; - improved signature checks for JPEG files. XEP 3.15 Bug fixes ========= - Page size is set correctly in Postscript output XEP 3.14 Bug fixes ========= - several minor bugfixes XEP 3.13 Bug fixes ========= - markers restored (accidentally broken in 3.12); - additional optimization of lists; - setpagedevice control removed from PostScript for a while; - subsetting disabled for Type1 fonts (because error-prone); - linefeeds in 'title' meta field don't destroy PostScript code; - API documentation fixed. XEP 3.12 Bug fixes ========= - repaired indents on list items (destroyed in 3.10). XEP 3.11 Bug fixes ========= - span property now works correctly on block-containers; - minor fixes in documentation. XEP 3.10 New features ============ - when multiple font families are specified, font selection looks for available glyphs; - implemented viewport size ('width' and 'height') attributes on images; added 'scale-to-fit' value to 'content-width' and 'content-height'; - in addition to RGB, document colors can be specified in grayscale and CMYK color spaces (via predefined profile names in rgb-icc() function - #Grayscale and #CMYK); - added a universal command line driver, com.renderx.xep.XSLDriver. Bug fixes ========= - fixed interpretation of 'precedence' on side regions; - refined treatment of reference-orientation on page masters; - improved processing of spaces on list items. XEP 3.04 Bug fixes ========= - fixed keep condition processing on blocks with big inline images (it could force an unexpected line break). XEP 3.03 Bug fixes ========= - keeps and breaks now work correctly inside nested tables; - com.renderx.xep.BASE property put back into place (setting base URL for documents with no source SystemIDs). XEP 3.02 Bug fixes ========= - hyperlinks now work correctly on pages with non-zero reference-orientation; - block-progression-dimension of rotated block-containers is calculated more precisely. XEP 3.0 New XSL Formatting Objects and Properties ========================================= 1. Full implementation of fo:block-container. Reference-orientation and writing-mode properties now work on block containers regardless of their position. You can now rotate text in the flow and inside table cells. 2. Side floats: left and right floats are supported. Additionally, 'float' attribute can assume values of "inside" and "outside", to align it with 'text-align'. (Note that these additional values are absent in CSS and missing in the XSL Rec; handle with care). 3. Areas spanned across columns: span="all" is fully supported. There is also an rx:flow-section extension element, with a more general functionality. 4. Last page recognized in conditional masters: page-position="last" now works on fo:conditional-page-master-reference. 5. Breaks fully implemented: "page" value for break-before and break-after now works correctly in multi-column layouts. 6. Support for right-to-left writing: writing-mode="rl-tb" is now supported. Some bidirectionality is implemented; see spec.dbx for details and limitations. Explicit direction override through fo:bidi-override is implemented. 7. Support for font-stretch attribute: text can be scaled horizontally. 8. Improved support for expressions: expression support redesigned and made more reliable; from-table-column() function implemented. See specs.dbx about limitations on expressions. 9. Support for relative-align. relative-align on fo:list-item is supported. New Extensions to XSL Recommendation ==================================== 1. rx:page-index Extension to build page number sequences for indices. Merges repeated page numbers and builds ranges. 2. rx:flow-section A generalization of 'span' attribute: partitions a flow into sections with different column counts. Using this extension, it is possible to mix e.g. two-column and three-column fragments on the same page. 3. rx:pinpoint Conveys data from the source file to the XML output. Ignored by backends but visible when filtering output XML structure. Can be used to build complex postprocessing solutions, e.g. revision bars. Architectural Improvements ========================== 1. Validator A new XSLT-based validator catches more errors than the old DTD, and intercepts any input (not just documents read from a byte stream). For instance, output from an XSLT engine can now be validated. There is also a command-line interface to the validator: com.renderx.xep.Validator takes a sequence of file names as arguments, and validates them one by one. 2. SAX2 and JAXP All interfaces (both input and output) are now namespace-aware, and use SAX2 / DOM Level 2. We have also worked on JAXP pluggability: if there is a JAXP-compliant parser factory somewhere in the path, XEP finds it and gets parsers from there (unless explicitly instructed to use a specific parser). There is a class to facilitate working with JAXP transformers: com.renderx.xep.JAXPDriver acts as a transformer that produces PDF/PostScript from XML+XSL. It also has a command-line interface. Running the class with no arguments displays the synopsis. 3. New parser Parser component rewritten from scratch, to optimize memory usage. 4. Performance on table processing Long tables are now processed up to 5 times faster than in the previous version. One of the major performance bottlenecks is therefore eliminated. 5. Optimized graphics Processing of principal graphic formats has been revised to use "lazy" algorithms as much as possible, avoiding full image decompression. Memory penalty for using big images has dropped drastically. Because of the Unisys LZW patent problem, additional limitations are imposed on supported GIF and TIFF flavors. See spec.dbx for details.