Release Notes for Prince 17

Prince 17

September 2026

Highlights

  • JavaScript ES6 classes
  • Markdown support
  • Fragmented CSS grid layout
  • CSS cascade layers and nested CSS
  • OpenType COLR emoji fonts

Prince for Books

Prince for Books is now synchronised with Prince releases, and will remain so for future versions.

Platform Changes

Added packages for openSUSE 16.0 and Alpine Linux 3.24.

Windows 32-bit and generic Linux 32-bit (i686) packages are no longer provided.

Packages are no longer provided for FreeBSD 13.0 and Alpine Linux 3.19 and 3.20, which have reached end of life.

CSS Support

Support for fragmented CSS grid layout.

Support for CSS cascade layers.

Support for nested CSS.

Support for the CSS @property rule.

Support for the CSS @counter-style rule.

Support for the all shorthand CSS property.

Support for the unset value for all CSS properties.

Support for @media features prefers-color-scheme and forced-colors.

Support for flow-relative values for float and clear.

Support for flow-relative box-model logical properties.

Support for the font-variant-alternates CSS property and for the @font-feature-values rule.

Support for the font-feature-settings CSS property.

Support for percentage values for the CSS property letter-spacing.

Added the new CSS property -prince-smart-typography to enable the OpenType case and cpsp features.

Implemented initial support for grid baseline alignment.

Support for CSS character units for lengths (ch and rch).

Support for CSS CapHeight units for lengths (cap and rcap).

Support for CSS ideographic units for lengths (ic and ric).

Support for CSS lh (line height) and rlh (root line height) units - using font metrics when line-height is normal.

Support for the color functions lab(), lch(), oklab(), oklch().

Support for list-style-type: <string>.

Support for display: contents.

Support for the CSS box-decoration-break property across line breaks.

Support for the z-index property for flex and grid items.

JavaScript Support

Support for JavaScript ES6 classes.

Support for the JavaScript Proxy and Reflect APIs.

Support for JavaScript strict-mode with use strict declarations.

Support for the JavaScript exponentiation and logical assignment operators.

Support for the JavaScript "nullish coalescing" operators.

Support for the JavaScript optional chaining operator.

Support for iteration methods on DOM NodeList objects.

Support for iteration methods on DOMTokenList objects.

Support for public static and instance fields in JavaScript classes.

Support for JavaScript new.target expressions.

Support for the JavaScript special properties __proto__, __defineGetter__, __defineSetter__, __lookupGetter__, __lookupSetter__.

Support for more JavaScript Math functions (cbrt, clz32, cosh, expm1, fround, hypot, imul, log2, log10, log1p, sign, sinh, tanh, acosh, asinh, atanh, trunc).

Support for the JavaScript Object.hasOwn method.

Support for HTMLElement.dataset in the JavaScript DOM.

Support for JavaScript canvas measureText method.

Implemented a faster JavaScript parser.

Fixed a bug where JavaScript vars and let bindings could incorrectly shadow each other.

Markdown

Support for Markdown documents as input files.

Fonts

Support for OpenType COLR fonts such as Segoe UI Emoji.

Support for OpenType fonts for Mongolian/Manchu and Tibetan scripts.

Improved the rendering of Unicode space characters by using the glyphs from the font, where possible, instead of substituting ASCII space.

Improved kerning for Apple fonts such as Hoefler Text and Zapfino.

Improved kerning of Arabic text in Apple fonts like Farisi and Geeza Pro.

SVG & Graphics

Support for the SVG foreignObject element, which allows HTML content to be nested inside SVG.

Support for the letterSpacing, wordSpacing, and direction properties on the HTML canvas.

Support for the HTML image srcset and sizes attributes.

Support for the HTML picture and source elements.

Added a new --pdf-dpi command-line option and pdf-dpi setting in JSON job options, used to resolve img srcset queries and provide the default for -prince-filter-resolution: auto.

Included more context in the warning message emitted when an image used for filtering is clamped, to help identify the element responsible.

Fixed issues with text positioning attributes inside SVG textPath.

Fixed incorrect patterns on SVG textPath.

Fixed an issue when SVG textPath is used inside clipPath.

PDF Features

Support for the PDF/X-4p profile.

Extended the -prince-pdf-output-intent property to allow specifying more parameters, such as output-condition and registry-name.

Support for the required attribute on signature input fields.

Added the new property -prince-pdf-form-field-settings, including a rich-text value for creating rich text form fields.

Support for a mechanism for creating PDF annotations linked to multiple elements with the new -prince-pdf-annotation-merge property.

Added the new property -prince-mark-color to specify the color of page crop and cross marks.

Non-Figure/Formula structure elements can now be specified on image content with -prince-pdf-tag-type.

Command-line & Control Interface

The css-dpi setting can now be specified per-job in the JSON job options for the Prince control interface.

Support for the --license-file and --license-key options with --show-license.

Misc. CSS Bug Fixes & Improvements

Support for CSS outlines on table rows and cells.

Support for outline-style: auto as synonym for solid.

CSS outlines are now drawn above content and collapsed borders.

The actual font X-height is now used for CSS ex and rex units.

When combining multiple input documents, @font-face rules from one document no longer affect the other documents.

Collapsed table borders are now painted above descendant backgrounds and borders.

Horizontal borders are now drawn above vertical borders in the collapsed-border model.

Fixed a bug where multiple floats could overlap if they were pulled out of their containing block by negative margins.

Fixed a bug where preserved whitespace in table rows could break table layout.

Fixed relative positioning of inline blocks and list markers.

The :host selector and unsupported pseudo-elements used by Tailwind v4 are now ignored.


See the release history for earlier versions of Prince.