Release Notes for Prince 9.0

Prince 9.0

June 2013

JavaScript Support

Support for the canvas element and JavaScript API.

Faster JavaScript execution.

Faster JavaScript DOM access, particularly for node lists returned by getElementsByTagName.

Support for the Image constructor in the JavaScript DOM.

Support for the DOMParser interface in the JavaScript DOM.

Support for more JavaScript DOM properties:

  • document.head
  • script.type
  • option.selected
  • option.disabled
  • input.type
  • input.checked
  • input.disabled
  • window.location.hostname
  • window.location.port
  • window.location.pathname
  • link.title
  • link.disabled

Changed nodeName and tagName DOM properties to return uppercase HTML element names.

Changed document.createElement DOM method to create elements in the HTML namespace.

Support for accessing attributes by name from Element.attributes, needed to support jQuery 1.9+.

Support for JavaScript Typed Array objects (unsigned ints only, for now).

Support for the JavaScript Object methods create, defineProperty, and defineProperties.

Prince script functions now require registration with Prince.addScriptFunc.

Support for trailing commas in JavaScript object literals.

Support for non-ASCII JavaScript identifiers.

Fixed bug where JavaScript RegExp lastIndex property was not writable.

Fixed bug where JavaScript parseFloat function would fail on non-digit characters.

HTML Support

Enabled new HTML5 parser by default.

Documents with no filename are treated as HTML, not XML.

HTML elements are placed in the HTML namespace.

Support for SVG elements and attributes with mixed-case names inside HTML documents.

Support for new HTML5 elements without warning messages.

Support for new HTML5 meta charset syntax.

Removed redundant warning when HTML elements have identical id and name attributes.

Fixed issues involving special characters in script elements.

Fixed bug where a null byte in HTML files terminates parsing.

Fixed bug where text between table cells results in a new table column.

SVG Support

Support for the stroke-miterlimit property on SVG elements.

Support for text-decoration properties on SVG text elements.

Support for xml:space="preserve" and the CSS white-space property on SVG tspan elements.

Support for SVG tref elements.

Pixel units in SVG are now scaled consistently with unitless coordinates.

SVG images without a viewBox attribute use the width and height attributes to determine the initial coordinate system.

Fixed bug affecting nested SVG patterns/gradients and SVG images used as repeating backgrounds.

Fixed bug affecting some numbers in scientific/exponential notation in SVG.

CSS Footnotes

Support for inline footnotes with "float: prince-inline-footnote | prince-column-inline-footnote".

Support for absolutely positioning the @footnotes area.

Support for the max-height property on the @footnotes area.

Added "prince-footnote-policy: auto | keep-with-line | keep-with-block" to push footnote calls to the next page if there is not enough space to fit the footnote body on the same page.

Added a warning when a footnote ends up on a different page from the footnote call.

Footnotes and floats will now break across multiple pages unless overridden with page-break-inside.

Fixed bug where footnotes in table headers and captions were repeated on subsequent pages.

CSS Backgrounds

Support for multiple backgrounds on a single element.

Support for background gradients.

Support for the background-size property.

Support for the background-clip and background-origin properties.

Support for padding-box as a value for the box-sizing property.

CSS Layout

Support for vertical text layout.

Support for "text-overflow: clip | ellipsis".

Support for the transform and transform-origin properties on page margin boxes.

Renamed border-break property to box-decoration-break.

Support for box-decoration-break property on table elements.

Support for "position: running(ident)" and "content: element(ident)" syntax for flows defined in CSS GCPM module.

Changed the prince-link property so that it no longer affects the :link selector.

Changed crop marks so that they extend into the page bleed area.

Improved height calculation for tables with specified height by taking specified row heights into account before dividing table height across rows.

Added an experimental --css-dpi=DPI option to change the default DPI value used for pixel measurements.

Fixed bug where negative margin-top could break the layout of following blocks in some circumstances.

Fixed bug affecting the layout of page margin boxes.

Fixed bug affecting transforms where matrix() translation offsets were incorrectly scaled and inverted.

Fixed bug affecting tables with collapsed borders and cells that span rows across page breaks.

Fixed bug where background and border properties did not apply to :blank pages.

Fixed bug in which shrink to fit blocks such as floats and inline blocks could have an incorrect width when they contained tables with cells that have a specified width.

Fixed bug where page floats could overlap with table footers.

Fixed bug where prince-page-group could cause unwanted page breaks for elements that span multiple columns.

Fixed bug affecting :nth-of-type(n+4) and related CSS3 Selectors.

Font Support

Enabled OpenType font features for rendering Syriac text.

Added Japanese fonts to default serif and sans-serif font families.

Accept local(FontName) without quotes in @font-face declaration src property.

Added a warning for cyclic @font-face definitions.

Fixed warning "get_gpos_adjust: pos_pair_unknown" triggered by complex OpenType fonts, eg. some Hebrew and Syriac fonts.

Miscellaneous Improvements

New Windows GUI.

Support for PDF/A-1b.

See the release history for earlier versions of Prince.