Release Notes for Prince 12

Prince 12.5

April 2019

Explicitly tag headers and footers as pagination artifacts for all tagged PDFs, not just those in the PDF/UA-1 profile.

Fixed an issue where PDF/A validators might not have recognised rdf:resource attributes.

Fixed issues relating to images of unusual size.

Fixed a bug where the --pdf-xmp option did not work correctly when used through the control interface.

Fixed an issue when Prince would claim internal error: no area.

Throw exception for JavaScript with too much recursion.

Fixed a bug where the JavaScript hash property of anchor elements is incorrectly percent-decoded and not prefixed with the # mark.

Fixed a bug in which a forced page break in a very tall fixed height block could cause Prince to hang.

Improved performance for very large CSS style sheets.

Prince 12.4

January 2019

Restricted redirects to HTTP and HTTPS URLs.

Added the new command-line option --no-redirects which disables redirects entirely.

Prince 12.3

November 2018

Support prince-pdf-page-layout: two-page as an alias for two-page-left.

Fixed an issue where the overflow property was incorrectly applied to table rows.

Fixed a bug in which opacity set on an element could affect following filters.

Improved performance of tagged PDF for large documents.

Prince 12.2.1

September 2018

Fixed bug affecting fonts on MacOS 10.14 (Mojave).

Prince 12.2

September 2018

Fixed abort caused by Noto Glagolitic font having null offsets in the GSUB header.

Fixed bug affecting zero-sized soft mask images in SVG.

Prince 12.1

August 2018

CSS Support

Allowed the prince-filter-resolution property to apply to individual elements, not just the @prince-pdf rule.

Applied hyphenation to text in white-space: pre-line and pre-wrap blocks.

Gave transformed links and non-rectangular SVG links more accurate clickable areas (eg. for 45deg rotations).

Added support for HSL colors with the hsl() and hsla() functions.

Added support for the orientation field in JPEG and TIFF images with the new CSS property image-orientation.

PDF Support

Set the default language field in the PDF when the lang or xml:lang attributes are present even for non-tagged PDF files.

Set the PDF direction based on the direction and writing-mode of the document root element to support right-to-left books.

JavScript Support

Added support for the JavaScript Number.toExponential method.

Bug Fixes & Improvements


Fixed bug where links were not affected by CSS transforms.


Fixed masking of SVG image referenced by SVG image element.

Fixed bug affecting SVG feGaussianBlur and feDropShadow filters.


Fixed bug where the JavaScript String trim function did not trim non-breaking spaces or other Unicode space characters.

Fixed bug where the JavaScript Number.toFixed function returned the wrong result.

Fixed bug in the box tracking API where boxes in columns and flex containers could have the wrong parent.


Fixed bug with zero font size text.

Fixed an issue introduced in Prince 12 where PNG, GIF, and TIFF files would load slower on MacOS.

Avoided unnecessary rasterisation when applying drop shadow filters.

Clarified warning message about "filter resolution reduced by factor" that applies to overlarge images.

Fixed bug where HTML character entities are handled incorrectly if they are the very last thing in the file or in the innerHTML string.

Fixed an issue affecting whitespace collapsing around newlines in Thai text.

Fixed bug in which tables with max-width set can end up unnecessarily wide.

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.