Changelog

PlutoPrint 0.20.0 (2026-04-14)

  • Bump PlutoBook to v0.17.0

    • Add support for inset shorthand property

    • Add support for lh, rlh, cap, rcap, ic, ric, rex, and rch units

    • Allow flexible emoji selection for primary font

    • Allow none in background shorthand parsing

    • Reject invalid CSS value types

    • Reject trailing tokens in border-radius shorthand parsing

    • Defer font shorthand property emission until full parsing succeeds

    • Improve media query parsing, error recovery, and feature comparison

    • Remove unnecessary whitespace from SVG string properties

Backers and sponsors:

PlutoPrint 0.19.0 (2026-03-19)

  • Bump PlutoBook to v0.16.0

    • Add full CSS :lang() locale support

    • Add language-specific default quotes

    • Fix calc() not preserving unitless results

    • Fix font fallback for grapheme clusters

    • Fix emoji variation selector detection

    • Fallback to monochrome when color glyphs are unavailable

    • Force layout during pagination to fix mismatched layouts

    • Include query component in base URL resolution

    • Enforce strict parsing for CSS matrix() and rect()

    • Reduce memory usage by avoiding redundant CSS property storage

Backers and sponsors:

PlutoPrint 0.18.0 (2026-02-17)

  • Bump PlutoBook to v0.15.0

    • Add support for emoji variation selectors

    • Fast skip painting off-screen table content

    • Fix synthetic oblique slope range check

    • Fix table cell border attribute mapping

    • Fix empty-cells painting in separate border model

Backers and sponsors:

PlutoPrint 0.17.0 (2026-02-09)

  • Bump PlutoBook to v0.14.0

    • Add selector filter for fast CSS selector rejection

    • Add lazy loading support for CSS @font-face sources

    • Add support for padding in page boxes

    • Fix double slanting of remote CSS @font-face fonts

    • Fix fallback handling in SVG paint application

    • Fix rounding errors in fragment offsets, line, and flex layout

    • Apply page scale to page margin boxes

    • Reorder header and footer painting to fix collapsed border rendering

    • Revert change ensuring empty list items with outside markers generate boxes

Backers and sponsors:

PlutoPrint 0.16.0 (2026-01-14)

  • Bump PlutoBook to v0.13.0

    • Support repeating table headers and footers

    • Support column group background painting and border resolution

    • Support absolute and fixed positioning inside page margin boxes

    • Fix table row and cell height sizing

    • Fix table column and row span width and padding calculations

    • Fix collapsed table border resolution order for adjacent columns

    • Prevent page breaks inside table rows

    • Remove table padding for collapsed border

  • Refactor fontconfig path initialization

  • Add custom Meson search for plutobook library and headers

Backers and sponsors:

PlutoPrint 0.15.0 (2025-12-23)

  • Bump PlutoBook to v0.12.0

    • Add support for the width style attribute on td, th, col, and colgroup elements

    • Support outline painting for table rows and sections

    • Fix unnecessary pseudo-element box generation when content is none or normal

Backers and sponsors:

PlutoPrint 0.14.0 (2025-12-05)

  • Bump PlutoBook to v0.11.2

    • Fix :has() matching by preventing premature return so all sub-selectors are evaluated

    • Handle UTF-8 filenames on Windows when opening output files

    • Skip zero-width spaces during text rendering to prevent invisible characters in PDF output

  • Add plutobook_set_fontconfig_path() to set FONTCONFIG_PATH for PlutoBook

  • Fix UTF-8 path handling on Windows

Backers and sponsors:

PlutoPrint 0.13.1 (2025-11-23)

  • Bump PlutoBook to v0.11.1

    • Fix URL resolution for Windows absolute paths by mapping them to proper file:// URLs

    • Add cairo-fix-font-options-leaks.patch to address memory leaks in Cairo

Backers and sponsors:

PlutoPrint 0.13.0 (2025-11-17)

  • Bump PlutoBook to v0.11.0

    • Add support for <base> tag to resolve relative URLs

    • Add support for font-variant-emoji

    • Add support for min-content, max-content, and fit-content in flex shorthand

    • Add support for :local-link selector

    • Add support for :has selector

    • Add support for :where selector

    • Add line-height: normal to ::marker to prevent inherited line-height issues

    • Fix :nth-of-type and :nth-last-of-type sibling counting

    • Fix :nth() page selector matching

    • Fix CSS :lang() selector matching

    • Fix CSS selector specificity calculation to match W3C specification

    • Fix Windows Fontconfig failing to load its default config files

    • Refactor align and hidden presentational attributes

    • Reset form control font-size to match most browsers

    • Fully implement format() support in @font-face to skip unsupported font sources

    • Add some subset of ready-made counter styles (binary, octal, lower-hexadecimal, upper-hexadecimal)

    • Fix default border value for table elements

    • Account for relative positioning offsets when computing static distances

    • Handle RTL direction when computing horizontal relative offsets

Backers and sponsors:

PlutoPrint 0.12.0 (2025-10-03)

  • Bump PlutoBook to v0.10.0

    • Add support for running headers and footers

    • Add support for CSS min(), max() and clamp() functions

    • Add support for unicode-range in @font-face for selective font coverage

    • Add support for type and fallback in attr() function

    • Prioritize color emoji fonts during font selection

    • Use serif as the last-resort fallback font

    • Handle UTF-8 BOM

Backers and sponsors:

PlutoPrint 0.11.0 (2025-09-20)

  • Bump PlutoBook to v0.9.0

    • Add support for CSS Custom Properties

    • Add support for CSS calc() function with length values

    • Add support for extended rgb() and hsl() functions with whitespace and alpha slash syntax

    • Add support for CSS hwb() color function

    • Add support for CSS wide keyword unset

Backers and sponsors

PlutoPrint 0.10.0 (2025-09-09)

  • Bump PlutoBook to v0.8.0

    • Add support for space-evenly in flex layout

    • Add support for presentational attributes on <li> and <ol>

    • Fix table height computation for positioned tables

    • Ensure empty list items with outside markers generate boxes

  • Set PDF creation date metadata in CLI to current timestamp

  • PlutoPrint is now available via Homebrew :)

PlutoPrint 0.9.0 (2025-08-30)

  • Bump PlutoBook to v0.7.0

    • Add support for row-gap, column-gap, and gap in flex layout

    • Add support for CSS hex alpha notation

    • Fix flex layout to avoid shrinking table boxes below min preferred width

    • Fix flex layout to avoid shrinking table height

    • Fix table section height calculation to avoid double-counting border spacing

    • Fix preferred width calculation for replaced boxes

PlutoPrint 0.8.0 (2025-08-27)

  • Bump PlutoBook to v0.6.0

    • Add support for -pluto-qrcode() in CSS content property for embedding QR codes

    • Fix uninitialized table members causing large cell padding and border

PlutoPrint 0.7.0 (2025-08-26)

  • Bump PlutoBook to v0.5.0

    • Add support for overflow-wrap in inline line-breaking algorithm

    • Fix text-indent offset calculation in block-level inline formatting

    • Fix parser for text-decoration-line to return nullptr when no values are consumed

    • Fix luminance mask computation

  • Provide precompiled binaries for:

    • cp310-macosx_14_0_arm64

    • cp311-macosx_14_0_arm64

    • cp312-macosx_14_0_arm64

    • cp313-macosx_14_0_arm64

    • cp314-macosx_14_0_arm64

PlutoPrint 0.6.0 (2025-08-24)

  • Bump PlutoBook to v0.4.0

    • Add support for text-orientation and writing-mode

    • PNG export outputs a single continuous image (no pagination)

PlutoPrint 0.5.0 (2025-08-19)

PlutoPrint 0.4.1 (2025-08-17)

PlutoPrint 0.4.0 (2025-08-17)

PlutoPrint 0.3.0 (2025-08-14)

  • Provide precompiled binaries for:

    • Linux: cp310-manylinux_2_28_x86_64, cp311-manylinux_2_28_x86_64, cp312-manylinux_2_28_x86_64, cp313-manylinux_2_28_x86_64, cp314-manylinux_2_28_x86_64

    • Windows: cp310-win_amd64, cp311-win_amd64, cp312-win_amd64, cp313-win_amd64, cp314-win_amd64

  • Update requires-python to >=3.10

  • Add functions for runtime access to version and build metadata from the underlying PlutoBook library:

  • Add --info argument to the plutoprint CLI

PlutoPrint 0.2.0 (2025-06-23)

  • Add Read the Docs support

  • Refactor error handling for clarity and robustness

  • Implement == and != for PageMargins and PageSize

  • Update Canvas context methods for AnyCanvas type variable

  • Use is not None for CLI argument presence checks

  • Fix dimensions in PAGE_SIZE_LEDGER constant

  • Add comprehensive unit tests

PlutoPrint 0.1.0 (2025-05-24)

  • This is the first release. Everything is new. Enjoy!