Release Notes for Prince 14

Prince 14.1

February 2021

CSS Support

Support vh/​vw/​pvh/​pvw/​vmin/​vmax/​pvmin/​pvmax units relative to the @page area.

Support break-before properties on the first table cell of a row.

Support break-after properties on the last table cell of a row.

JavaScript Support

Added floatPosition property ("TOP" or "BOTTOM") to page float container boxes in the box tree.

Added paddingTop/​paddingRight/​paddingBottom/​paddingLeft and borderTop/​borderRight/​borderBottom/​borderLeft properties to the JavaScript box tracking API to give used padding and border widths.

Support ES6 octal and binary literals in JavaScript.

Support the JavaScript Array find method.

Support the JavaScript Array findIndex method.

Support \u{} character escapes in JavaScript.

Support Object with valueOf method as valid length property value for array-like objects in JavaScript.

Miscellaneous

Support the href attribute without the XLink namespace prefix for compatibility with SVG 2.

Support PDF/A-2 profiles (without attachments).

Added new fail-safe options to abort conversion when a PDF profile cannot be used or there is an accessibility tagging error (--fail-pdf-profile-error and --fail-pdf-tag-error).

Added new --fail-safe option that enables all of the other fail-safe options.

Bug Fixes & Improvements

CSS

Fixed issue where long content could cause a block with fixed height to break across pages even when overflow: hidden was specified.

Fixed issue where box-sizing: border-box did not correctly apply to tables with fixed layout.

Fixed issue affecting the sizing of replaced elements in flex containers.

Fixed regression affecting nested page floats.

Fixed bug affecting image aspect ratios in flexbox.

Fonts

Fixed issue affecting the Caudex font caused by duplicate PostScript glyph names.

Fixed issue affecting libthai on MacOS.

Fixed issue with fonts containing GSUB tables with version 1.1.

Accessibility

Fixed issue where absolutely positioned content in table headers and footers could break tagged PDF.


Prince 14

February 2021

Highlights

  • CSS calc() support!
  • Color emoji fonts and SVG fonts!
  • Multipass formatting with JavaScript!
  • New column and page float features!

CSS Support

New column and page float features with the following properties:

  • -prince-float
  • -prince-float-defer-column
  • -prince-float-defer-page
  • -prince-float-placement
  • -prince-float-policy
  • -prince-float-reference
  • -prince-float-tail
  • -prince-clear
  • -prince-margin-alt

Support for calc() expressions.

Support for the font-kerning property.

Support for the font-variant-ligatures property.

Support for the font-variant-numeric property.

Support for the font-variant-caps property (small-caps and all-small-caps only for now).

Support for @font-face rules in external SVG image files.

Support for custom page counters.

Support for prince-expansion-text() value on the content property for use in tagged PDF.

Support for "prince-pdf-tag-type: none" for making wrapper span/block elements transparent in tagged PDF structure tree.

Added "no-embed" option to prince-pdf-color-conversion.

Fonts

Support for SVG-in-OpenType for emoji fonts and color display fonts.

Support for color emoji fonts in CBLC/CBDT format, such as Noto Color Emoji and JoyPixels

Support for color emoji fonts in Apple sbix format (some limitations may apply).

Support for emoji tag sequences (needed for some flag emoji).

Support for fonts with Big5 encoding and no Unicode cmap.

Support for language-specific OpenType shaping with the "locl" feature, enabled using the XML/HTML lang attribute.

Support for OpenType shaping for Syriac scripts.

Support for #index fragment URLs to refer to individual fonts within TrueType Collections (TTC) and WOFF2 collections which works with --scanfonts.

JavaScript Support

Support for multipass JavaScript workflow by means of a new Prince.registerPostLayout(func) API and --max-passes command-line option.

Support for the JavaScript Object.setPrototypeOf method.

Support for -j option as a shorthand for --javascript.

Added marginTop, marginRight, marginBottom and marginLeft properties to the JavaScript box tracking API to give used margin values.

Added baseline property to line boxes in the JavaScript box tree API.

SVG Support

Support for the xlink:href attribute for external scripts in SVG.

Support for the textLength attribute in SVG.

Miscellaneous

Added --allow-copy-for-accessibility option as an exception to --disallow-copy and --allow-assembly as an exception to --disallow-modify.

Added --raster-jpeg-quality command-line option.

Bug Fixes & Improvements

CSS

Fixed bug where min/max-width/height properties clamped negative values to zero instead of rejecting them.

Draw dotted borders with circles instead of squares.

Changed image-orientation property default value to "from-image" to match web browsers.

Fixed issue in which using footnote counters with prince-script() could use the wrong counter value.

Fixed regression in resolving percentage sizes on replaced elements.

JavaScript

Fixed issue where JavaScript strings were not represented in UTF-16, breaking scripts like Twemoji.

Tagged PDF

Fixed tagged PDF issue affecting floated pseudo-elements.

Avoids creating structure elements in tagged PDF for ::first-line/letter pseudo-elements by default.

Fonts

Fixed bug in which OpenType fonts with CFF outlines could fail to work if they use non-standard names for MacRoman glyphs.

Fixed cursive positioning issue affecting Noto Nastaliq Urdu font.

Made Indic text shaping faster.

Switched to use ⯑ as the fallback character for missing glyphs instead of '?'.

SVG

Fixed bug where SVG baseline-shift incorrectly affected subsequent tspans with relative positions.

Miscellaneous

Fixed broken links between input documents by normalising filenames.

Disabled XInclude processing and external entities/DTDs in SVG images.



See the release history for earlier versions of Prince.