Release Notes for Prince 15

Prince 15

November 2022

Highlights

  • Create PDF Forms
  • Add PDF Comments/Annotations
  • Javascript ES6 improvements
  • WebP and AVIF image support
  • Support for Khmer and Sinhala fonts
  • Universal binary for MacOS on Apple Silicon

PDF Features

PDF forms can be created from HTML forms with the --pdf-forms option.

PDF comments/annotations can be added using the prince-pdf-annotation CSS properties.

JavaScript Support

Support for ES6 lexical scopes with let/const declarations.

Support for the ES6 Map and Set classes.

Support for the ES6 Symbol class and values.

Support for ES6 iterators.

Support for ES6 for-of loops.

Support for ES6 arrow functions.

Support for the JavaScript String fromCodePoint method.

Support for the JavaScript String codePointAt method.

Support for the JavaScript Object.getOwnPropertySymbols method.

Support for the JavaScript Element classList property and DOMTokenList interface.

Changed behaviour of regexp literals to match recent JavaScript specs.

Added stubs for the XMLHttpRequest getResponseHeader and getAllResponseHeaders methods.

Images

Support for the WebP image format.

Support for the AVIF image format.

Fonts

Support for Unicode 15.

Support for the Sinhala script.

Support for the Khmer script.

Applied Unicode mark reordering to more scripts, not just Arabic and Indic scripts.

Applied correct mark decomposition and reordering for Lao script.

CSS Support

Support for fragmentation and correct sizing for multi-line flex row containers (flex-wrap).

Support for align-self: stretch for flex items in a fragmented flex row container.

Support for wavy and double text-decoration styles.

Support for the CSS text-decoration-line/color/style properties.

Support for the text-underline-position property.

Command-line

Added the options --ssl-no-revoke and --ssl-revoke-best-effort for Windows.

Added the option --fail-stripped-transparency to fail when transparent images are used with a PDF profile that does not support transparency.

Added the option --fail-invalid-license.

Added the option --pdf-xmp-metadata to include the HTML metadata in an XMP packet even when not required by the PDF profile. (also available via the PDF.xmpMetadata property and and the pdf-xmp-metadata job field).

Renamed the --cookiejar option to --cookie-file.

Miscellaneous

Provided a universal binary for MacOS that supports Apple Silicon and Intel architectures.

Support for the HTML noscript element.

Improved the appearance of HTML select elements.

Improved the appearance of HTML radio buttons when PDF Forms are not enabled.

Bug Fixes & Improvements

Security

Disabled HTML iframes by default and added an --iframes option to enable them.

Prevented prince-pdf-script and prince-pdf-event-scripts CSS properties from accessing files or URLs and added new command-line options for this purpose.

CSS

Improved performance of style sheets with many class selectors.

Fixed bug in flex column layout that could lead to overlapping content.

Improved treatment of break-before: avoid so that it can pull partial content from the previous block instead of pulling the entire block to the next page.

Fixed bug affecting multi-column layouts with zero line-height.

Fixed column width issue with auto table layout in shrink-to-fit contexts, like nested tables and floats.

Fixed issue with box-decoration-break: slice and spanning cells in tables with collapsing borders.

Better support for relatively positioned table cells.

Preserved leading newlines for white-space: pre, pre-wrap, and pre-line.

Improving handling of trailing spaces for white-space: pre-wrap.

Fixed incorrect positioning of absolute positioned content within inline blocks.

Fixed incorrect positioning of absolute positioned content within relatively positioned inline elements.

Fixed incorrect paragraph breaks caused by absolutely positioned blocks inside inline content.

Images & SVG

Improved color space handling of PNG images with sRGB/cHRM/gAMA chunks but not iCCP chunks.

Paletted PNGs are now embedded as indexed color images instead of expanded.

Avoided unnecessarily re-rasterising SVG masks where possible.

Fonts

Improved the performance of complex font shaping.

Fixed issue where font-variant: prince-opentype(...) would disable Arabic and Indic shaping.

Fixed performance issue affecting some CFF fonts such as Noto Sans SC.

Fixed below-base mark reordering for Thai script.

Fixed bug affecting rare combination of OpenType GPOS positioning features.

Renamed embedded font subsets to avoid name clashes in documents that include multiple subsets of the same font.

JavaScript

Fixed bug where the JavaScript Function.bind method would not support constructor invocation or arguments.callee properly.

Fixed JavaScript issue where changing the length of large sparse arrays could be very slow.

Speed up JavaScript DOM live node lists returned by getElementsByTagName and getElementsByClassName.

Fixed the enumeration order of JavaScript properties with integer keys.

Fixed issue where automatic semicolon insertion could affect the use of JavaScript keywords like return as property names.

Tagged PDF

Fixed performance issue affecting tagged PDF.

Avoided inserting extra P structure element in tagged PDF for paragraphs containing only figures and/or floats.

Avoided generating some unnecessary Span elements in the tagged PDF structure tree.

Fixed bug where run-in elements could break the tagged PDF structure tree.

Miscellaneous

Fixed crash affecting some very large documents.

Workaround Acrobat issue triggered by certain uses of bfrange in PDF ToUnicode mappings.

Fixed the XMP serialisation of the meta keywords value.



See the release history for earlier versions of Prince.