Release Notes for Prince 12

Prince 12

June 2018

CSS Support

Support for CSS flexbox layout.

Support for the :checked, :disabled, :enabled, :read-only, and :read-write selectors.

Support for the break-before, break-after, and break-inside properties as shorthands for the page/column-break-before/after/inside properties.

Support for column-gap: normal.

Support for the tab-size property, although without full tab alignment.

Support for percentage values for the word-spacing property.

Support for setting the default zoom level with the prince-pdf-open-action property (unfortunately only working in Acrobat).

Support for multiple chained actions for the prince-pdf-open-action property.

PDF Profiles & Features

Support for tagged PDF and the PDF/A-1a, PDF/A-3, and PDF/UA-1 profiles.

Support for combined PDF/A-1a+PDF/UA-1 and PDF/A-3a+PDF/UA-1 files.

Support for PDF object streams, to reduce the size of tagged PDFs and PDFs with lots of link annotations. (Can be disabled by the new command-line argument --no-object-streams or from JavaScript via the PDF.objectStreams boolean property).

Support for a new --pdf-lang command-line option and the PDF.lang JavaScript property for specifying the document language.

Raised default PDF version to 1.5.

Javscript Support

Efficient support for large sparse arrays in JavaScript.

Support for the DataView interface to JavaScript DOM typed arrays.

Support for octal integer literals in JavaScript.

Support for vertical tab as whitespace character in JavaScript.

Support for the DOM Document.compatMode property, needed by KaTeX.

Execute capturing event handlers in the JavaScript DOM.

Expose individual columns in the box tracking API.

Expose footnotes and page floats area in the box tracking API.

Expose image URLs in the box tracking API.


Support for the U+2060 word joiner character.

Support for SSL client certificates with new command-line options.

Bug Fixes & Improvements


Fixed bug where percentage widths on table cells that span multiple columns could be resolved incorrectly.

Fixed issue where the orphans property could cause footnotes to be unnecessarily moved to the next page.

Fixed issue where nested inline footnotes did not work properly.

Investigated issues where overflowing content interacts with page and column breaking.

Fixed issues affecting CSS clearfix techniques that cross page breaks.

Fixed some issues affecting CSS clearfix techniques that don't cross page breaks.

Changed column-count: 1 to behave differently from column-count: auto, for consistency with browsers.

Fixed some bugs with table minmax width calculation.

Fixed some bugs with resolution of percentage margins and paddings.

Don't collapse margins across block formatting context boundaries.

Fixed margin collapsing bugs involving percentage height and min-height values.

Fixed margin collapsing bugs involving empty blocks that establish new block formatting contexts.

Fixed bug where margins would be repeated even when box-decoration-break is set to slice.

Made prince-hyphenate-lines stricter and started to accept prince-hyphenate-limit-lines as an alias to bring it closer to CSS4.

Limited squeezing in justified text so that spans with white-space: nowrap do not get squashed into overlapping themselves.

Correctly took block height and min-height into account for blocks that cross page breaks.


Fixed JavaScript bug where whitespace would not be trimmed when convering strings to numbers.

Sped up accesses to JavaScript objects that have many properties.

Fixed JavaScript bug where carriage return was not treated as a line terminator and would not trigger automatic semicolon insertion.

Fixed bug where the JavaScript Function.bind method would not support a null first argument.

Fixed bug where the getElementsByTagName DOM method would not lowercase its argument.

Fixed bug where the DOM querySelector methods should be case-insensitive in HTML documents.

Fixed bug where the DOM attribute methods and others should be case-insensitive in HTML documents.

Allowed the DOM innerHTML property to be set to strings containing NULL characters.


Worked around bug in MacOS X Preview affecting OpenType CFF fonts.

Support non-Latin font family names properly.

Fixed bug affecting mark positioning in Thai text.

Fixed bug that could affect the positioning of nested marks in complex OpenType fonts.

Disabled the OpenType fina feature by default for non-Arabic scripts.

Fixed issue where Prince would attempt to load img elements with empty src attributes.

Fixed conformance issues for PDF/A and log numbers that went out of range.

Improved accuracy of text positioning due to PDF font units differing slightly from TrueType font units (1/1000 vs. 1/2048).

Fixed bug where PDF encryption disallow properties were inverted when set via the control interface.

Changed default PDF encryption key size from 40 bits to 128 bits.

Fixed bug that could affect the rasterisation of patterns inside filters.

Improved conformance for XMP metadata parsing.

Fixed bug causing crash on Ubuntu 18.04 virtual machine.

See the release history for earlier versions of Prince.