All Versions
14
Latest Version
Avg Release Cycle
157 days
Latest Release
14 days ago

Changelog History
Page 1

  • v69.0 Changes

    June 02, 2026

    ⚑️ This is a security update (CVE-2026-49452).

    ⬆️ We strongly recommend to upgrade WeasyPrint to the latest version if you use the --presentational-hints option and render untrusted HTML with restricted CSS properties.

    πŸš€ Read about this release on our blog.

    πŸ”’ Security

    • Avoid CSS injection with HTML presentational hints.

    Command-line API

    • The --srgb option has been replaced by --output-intent=srgb. Other values are possible: device-cmyk for CMYK documents with no ICC profile, or the CSS identifier of a @color-profile rule.

    Python API

    • 0️⃣ The output_intent string entry replaces the srgb boolean in default options.

    πŸ”‹ Features

    • πŸ–¨ #2357, #2700: Support logical properties
    • πŸ–¨ #1194, #2702: Support viewport units
    • πŸ–¨ #2686: Detect redirection loops early in URL fetcher
    • πŸ–¨ #2735, #2737: Support SVG transform angle units
    • πŸ–¨ #2636, #2720, #2773: Use HTML parsers for presentational hints
    • πŸ–¨ #2631, #2778, #2785, #2788: Allow users to set PDF output intent

    πŸ› Bug fixes

    • πŸ–¨ #2697, #2691: Avoid endless loops in grids
    • βœ… #2709: Be less strict for gradient rasterization in tests
    • πŸ–¨ #2683: Fix rendering of emojis in SVG
    • πŸ–¨ #2688: Always describe font using absolute sizes
    • πŸ–¨ #2676: Fix inheritance for svg/symbol tags referenced by use tags
    • πŸ“‡ #2681: Add dc:description field to PDF/A metadata
    • πŸ–¨ #2680: Force first grid row rendering on empty pages
    • πŸ–¨ #2690: Compute units in gradients used in border background
    • πŸ–¨ #2689: Cut flex elements with fixed height and overflowing children
    • βœ… #2651, #2696: Fix tests on Debian
    • πŸ–¨ #2698, #2699: Fix alignment of right-to-left elements with auto width and set min/max-width
    • πŸ–¨ #2556: Apply presentational hints to svg tags
    • πŸ–¨ #2706: Handle infinite border radii
    • πŸ–¨ #2707, #2708, #2710: Get mimetypes from Python code instead of various third-party files
    • πŸ–¨ #2717, #2580, #2740: Fix table break retry after padding overflow
    • πŸ“‡ #2769: Add year in PDF/UA-2 metadata
    • πŸ–¨ #2768: Allow SVG lists of numbers to be split on + character
    • πŸ–¨ #2770: Add namespace to Document tag in PDF 2
    • πŸ–¨ #2771: Never try to render SVG use tags with external sources
    • πŸ–¨ #2774: Fix calc in logical
    • πŸ–¨ #2791: Improve management of variables

    πŸ“š Documentation

    • πŸ–¨ #2703, #2733: Document command-line option for papersize and orientation

    Contributors

    • Guillaume Ayoub
    • Nils K
    • Rob
    • Daniel Fitzpatrick
    • Elango Subramani
    • Lucie Anglade
    • Markus Mohanty
    • Tomsgu
    • arjenzorgdoc

    Backers and sponsors

    • Spacinov
    • Syslifters
    • Kobalt
    • Grip Angebotssoftware
    • Simonsoft
    • Menutech
    • KontextWork
    • TrainingSparkle
    • Healthchecks.io
    • Method B
    • FieldHub
    • Hammerbacher
    • Yanal-Yves Fargialla
    • Prothesis Dental Solutions
    • Morntag
    • Xavid
    • Charlie S.
    • PDFBolt
    • Kai DeLorenzo
  • v68.1 Changes

    February 06, 2026

    πŸ› Bug fixes

    • πŸ–¨ #2662: Don’t crash when SVG clip paths are not in defs tags
    • πŸ–¨ #2665: Fix position of box bounding box
    • πŸ–¨ #2663: Fix transparency with Acrobat and Edge
    • βœ… #2666: Don’t rely on random default font to define test page size
    • πŸ–¨ #2670: Fix pattern detection of URL schemes
    • πŸ–¨ #2671: Improve API compatibility between URLFetcherResponse and addinfourl
    • πŸ–¨ #2672: Fix charset for old URL fetcher requests
    • πŸ–¨ #2675, #2673: Fix calc for many properties

    Contributors

    • Guillaume Ayoub

    Backers and sponsors

    • Spacinov
    • Syslifters
    • Kobalt
    • Simon Sapin
    • Grip Angebotssoftware
    • Manuel Barkhau
    • Simonsoft
    • KontextWork
    • Menutech
    • TrainingSparkle
    • Healthchecks.io
    • Method B
    • FieldHub
    • Hammerbacher
    • Yanal-Yves Fargialla
    • Morntag
    • Piloterr
    • Xavid
    • Charlie S.
    • Prothesis Dental Solutions
    • Kai DeLorenzo
  • v68.0 Changes

    January 19, 2026

    ⚑️ This is a security update (CVE-2025-68616).

    We strongly recommend to upgrade WeasyPrint to the latest version if you use the default_url_fetcher function in your custom URL fetcher, or if you use the allowed_protocols parameter of the default_url_fetcher function.

    πŸš€ Read about this release on our blog.

    πŸ”’ Security

    • Always use URL fetcher for HTTP redirects

    Python API

    • default_url_fetcher() is deprecated, use the new URLFetcher class instead, see URL Fetchers for more information about URL fetchers
    • DocumentMetadata.generate_rdf_metadata is now a method that can be overridden instead of a parameter, see Factur-X / ZUGFeRD (Electronic Invoices) for examples to create e-invoices

    πŸ”‹ Features

    • πŸ”¨ #2609, #2603, #351: Refactor URL fetcher API
    • πŸ–¨ #2632: Support legacy 0 value for angles
    • πŸ–¨ #2627: Add font-face support to SVG
    • πŸ–¨ #2646, #2255: Add font shorthand support for SVG text elements
    • πŸ–¨ #2590, #1749: Honor language-specific rules for text-transform
    • πŸ–¨ #2645, #2613: Improve SVG and SVG emojis rendering
    • πŸ–¨ #2658, #2583: Add CLI for Factur-X / ZUGFeRD e-invoices

    πŸ› Bug fixes

    • πŸ”¨ #2649: Refactor URL fetcher API
    • πŸ–¨ #2643, #2628: Handle box-sizing: border-box in grid layout
    • πŸ–¨ #2641, #1875: Process whitespace after checking all pending targets
    • πŸ–¨ #2488, #2485: Preserve page groups during layout repagination
    • πŸ–¨ #2642, #2631: Don’t use isolated transparency groups
    • πŸ–¨ #2637: Fix repeating radial gradients rendering
    • πŸ–¨ #2622: Fix validation of colors
    • πŸ–¨ #2626: Share grid items rendering advancement between a box and its copies
    • πŸ–¨ #2621: Correctly handle fallback values of attr()
    • πŸ–¨ #2619: Fix SVG fonts
    • πŸ–¨ #2629: Always define extra skip height that may be used after
    • πŸ–¨ #2648: Fix numbers validation in font-feature-settings
    • πŸ–¨ #2648: Fix keyword values for text-decoration-thickness
    • πŸ–¨ #2661: Respect inline images when defining minimum table width

    πŸ“š Documentation

    • ⚑️ #2638: Update Python command for Windows installation steps

    Contributors

    • Guillaume Ayoub
    • Jurriaan Pruis
    • Mohamed Hamed
    • Alexandra Usatenko
    • Andrea Corna
    • Aoishik Khan
    • Joe

    Backers and sponsors

    • Spacinov
    • Syslifters
    • Kobalt
    • Simon Sapin
    • Grip Angebotssoftware
    • Manuel Barkhau
    • Simonsoft
    • KontextWork
    • Menutech
    • TrainingSparkle
    • Healthchecks.io
    • Method B
    • FieldHub
    • Hammerbacher
    • Yanal-Yves Fargialla
    • Morntag
    • Piloterr
    • Xavid
    • Charlie S.
    • Prothesis Dental Solutions
    • Kai DeLorenzo
  • v67.0 Changes

    December 02, 2025

    πŸš€ Read about this release on our blog.

    Dependencies

    • πŸ‘ Python 3.10+ is now needed, Python 3.9 is not supported anymore
    • tinycss2 1.5.0+ is now needed
    • fontTools 4.59.2+ is now needed

    πŸ”‹ Features

    • πŸ–¨ #2560, #640, #844, #1091, #2517: Support CMYK colors, PDF/X, color profiles and light-dark() function
    • πŸ–¨ #2558, #1175: Support ::first-line, with financial support from Karte Technology
    • πŸ–¨ #2552: Support CSS layers, with financial support from Code & Co.
    • πŸ–¨ #2564, #2599, #2397: Allow page breaks in grid rows, with financial support from Ocean Recap
    • πŸ–¨ #2568, #357: Support calc() and other mathematical functions
    • πŸ–¨ #2575, #2574: Support PDF/A-1a, PDF/A-2a and PDF/A-3a
    • πŸ–¨ #2611, #2573: Support PDF/A-4e and PDF/A-4f
    • πŸ–¨ #2523: Display tofu for missing glyphs
    • πŸ–¨ #2581: Add option to disable protocols in URL resolution
    • πŸ–¨ #2570: Support rch, cap, rcap, rex, ic and ric font-relative units
    • πŸ–¨ #2547, #2140: Support "only" keyword in media queries

    πŸ› Bug fixes

    • πŸ–¨ #2516, #1510: Fix rendering of first line of text with nested right float
    • πŸ–¨ #2510, #1073, #2507: Avoid Pango crashes and font mismatches with @font-face rules referencing local fonts
    • πŸ—„ #2532, #2531: Use fonttools instancer instead of deprecated mutator API
    • πŸ–¨ #2541: Fix syntax of functions
    • πŸ–¨ #2543: Allow font-related units to access @font-face fonts
    • πŸ–¨ #2525: Respect top margins and avoid overlapping footnotes for columns, with financial support from Code & Co.
    • 🚚 #2536: Remove Subtype key from font descriptor
    • πŸ–¨ #2539: Fix min width for SVGs with intrinsic ratio but no intrinsic size
    • πŸ–¨ #2537, #2533: Fix order of operators when drawing SVGs
    • πŸ–¨ #2538: Don’t crash with nested unknown functions
    • πŸ–¨ #2542: Don’t crash when lh and rlh are used for line height or font size
    • πŸ–¨ #2540, #2528: Use locale encoding instead of filesystem encoding for font paths
    • πŸ–¨ #2563, #2479: Don’t avoid float collisions for atomic flex items
    • πŸ–¨ #2569: Don’t be case-sensitive for units
    • πŸ“‡ #2567, #2566: Add x-default attribute for metadata description to be compliant with PDF/A
    • πŸ–¨ #2586, #2571: Improve formatting contexts management
    • πŸ–¨ #2600: Fix SVG image aspect ratio when only width or height is specified
    • πŸ–¨ #2612, #2595: Clean block layout and fix corner cases
    • πŸ–¨ #2522: Ignore preserveAspectRatio when SVG has no viewBox
    • πŸ–¨ #2544: Allow to use a variable twice in a function
    • πŸ–¨ #2555: Fix flex gap in right-to-left context
    • πŸ–¨ #2591: Respect non-auto widths and fix padding of grid items
    • πŸ–¨ #2601: Don’t crash when tagged tables are not displayed as tables
    • πŸ–¨ #2607: Fix rendering of multiline textareas with PDF forms
    • πŸ–¨ #2106: Force variable initialization to avoid crashes during column layout
    • πŸ–¨ #2618, #2617: Fix rendering of relative grid and flex items

    πŸ“š Documentation

    • 🚚 #2535: #2534: Removed reference to defunct site

    Contributors

    • Guillaume Ayoub
    • Fazle Rabbi Ferdaus
    • Lucie Anglade
    • Luca Vercelli
    • ChickenF622
    • Ernie Chu
    • Mark Pullin
    • Malte LaukΓΆtter
    • Markus Mohanty
    • Yvonne Kothmeier
    • Jarom Ort
    • kuypan

    Backers and sponsors

    • Spacinov
    • Syslifters
    • Kobalt
    • Simon Sapin
    • Grip Angebotssoftware
    • Manuel Barkhau
    • Simonsoft
    • KontextWork
    • Menutech
    • TrainingSparkle
    • Healthchecks.io
    • Method B
    • FieldHub
    • Hammerbacher
    • Yanal-Yves Fargialla
    • Morntag
    • Piloterr
    • Xavid
    • Charlie S.
    • Prothesis Dental Solutions
    • Kai DeLorenzo
  • v66.0 Changes

    July 24, 2025

    πŸš€ Read about this release on our blog.

    πŸ”‹ Features

    • πŸ–¨ #2475: Add support for 'lh' and 'rlh' units
    • πŸ–¨ #2432, #2437: Report footnotes when text overflows because of orphans, with financial support from Code & Co.
    • πŸ–¨ #2256, #2466: Handle transform-origin in SVG
    • πŸ–¨ #2445: Add parameter to have additional HTTP headers for url_fetcher

    πŸ› Bug fixes

    • πŸ–¨ #2471, #2506, #2500, #2460, #2363, #2470, #1872, #2153, #1838, #1837, #1784, #1835, #2444, #2497, #2505, #2503, #1836, #2467: Improve PDF/UA support, with financial support from NLnet
    • πŸ–¨ #2425, #1557: Improve position of outside markers
    • πŸ–¨ #2409, #2265: Draw circles instead of rectangles when drawing dotted borders
    • πŸ–¨ #2416, #2270: Correctly split words for automatic hyphenation
    • πŸ–¨ #2439, #2426: Don’t rely on URL protocols outside URL fetcher function
    • πŸ’… #2433: Disable style for deprecated outline algorithm
    • πŸ–¨ #2447, #2441, #2448: Improve min- and max-content calculation, with financial support from Menutech
    • πŸ–¨ #2454, #2442, #2449: Minor fixes for flex layout
    • πŸ–¨ #2473, #2459: Include out-of-flow boxes in page layout progress, with financial support from Pathfindr
    • πŸ—„ #2458: Replace deprecated warn logger function
    • πŸ–¨ #2494, #1856: Fix bug with bottom margins in columns
    • πŸ–¨ #2435: Make footnote calls inherit from footnotes
    • πŸ–¨ #2484, #2456: Allow to avoid page breaks after table-row-group elements
    • πŸ–¨ #2450: Draw background and borders for relative grid containers
    • πŸ–¨ #2453: Don’t advance position_y for collapsed margins of discarded children
    • πŸ–¨ #2493: Fix endless loop with CSS variables referencing each other
    • πŸ–¨ #2502: Ignore bottom margin when calculating footnote overflow

    Contributors

    • Guillaume Ayoub
    • Lucie Anglade
    • Alvaro Garcia Fernandez
    • Emmanuel Ferdman
    • Gabriel Corona
    • Markus Mohanty
    • Luca Vercelli
    • Tre Huang

    Backers and sponsors

    • Spacinov
    • Kobalt
    • Grip Angebotssoftware
    • Syslifters
    • Simon Sapin
    • Manuel Barkhau
    • Simonsoft
    • Menutech
    • KontextWork
    • TrainingSparkle
    • Healthchecks.io
    • Hammerbacher
    • DocRaptor
    • Yanal-Yves Fargialla
    • Method B
    • FieldHub
    • Morntag
    • Xavid
    • Kai DeLorenzo
    • Charlie S.
    • Alan Villalobos
  • v65.1 Changes

    April 14, 2025

    πŸ› Bug fixes

    • πŸ–¨ #2414: Correctly handle flex columns split between pages
    • πŸ–¨ 1b24ad9: Include padding in outer size of item elements
    • 0️⃣ #2419: Set main tag as block by default
    • πŸ–¨ #2415: Fix support of replaced block box as flex items
    • πŸ–¨ 83da2fe0: Fix margins and padding for rtl lists
    • πŸ–¨ #2429, #1076, #2431: Fix page groups

    Contributors

    • Guillaume Ayoub

    Backers and sponsors

    • Spacinov
    • Kobalt
    • Grip Angebotssoftware
    • Syslifters
    • Simon Sapin
    • Manuel Barkhau
    • Simonsoft
    • Menutech
    • KontextWork
    • TrainingSparkle
    • Healthchecks.io
    • Hammerbacher
    • DocRaptor
    • Yanal-Yves Fargialla
    • Method B
    • FieldHub
    • Morntag
    • Xavid
    • Kai DeLorenzo
    • Charlie S.
    • Alan Villalobos
  • v65.0 Changes

    March 20, 2025

    πŸš€ Read about this release on our blog.

    Dependencies

    • CSSSelect2 0.8.0 is now needed

    πŸ”‹ Features

    • πŸ–¨ #1665: Support gap properties in Flex layout, with financial support from NLnet.
    • πŸ–¨ #378, #2405: Handle @font-face unicode-range
    • πŸ’… #2394: Modernize and improve default user agent stylesheets

    πŸ› Bug fixes

    Contributors

    • Guillaume Ayoub
    • Luca Vercelli

    Backers and sponsors

    • Spacinov
    • Kobalt
    • Grip Angebotssoftware
    • Syslifters
    • Simon Sapin
    • Manuel Barkhau
    • Simonsoft
    • Menutech
    • KontextWork
    • TrainingSparkle
    • Healthchecks.io
    • Hammerbacher
    • DocRaptor
    • Yanal-Yves Fargialla
    • Method B
    • FieldHub
    • Morntag
    • Xavid
    • Kai DeLorenzo
    • Charlie S.
    • Alan Villalobos
  • v64.1 Changes

    February 20, 2025

    πŸ› Bug fixes

    • πŸ–¨ #2368: Fix ascent and descent font values
    • πŸ–¨ #2370: Avoid endless recursion for variables in nested functions
    • πŸ–¨ #2275: Use correct containing block to render waiting children
    • πŸ–¨ #2375: Ensure that we handle text-anchor only on text content elements
    • πŸ–¨ #2090: Only create font temporary folder when adding fonts
    • πŸ–¨ #2383: Fix grid-template-areas validation and allow uppercase identifiers for grid lines

    Contributors

    • Guillaume Ayoub

    Backers and sponsors

    • Spacinov
    • Kobalt
    • Grip Angebotssoftware
    • Syslifters
    • Simon Sapin
    • Manuel Barkhau
    • Simonsoft
    • Menutech
    • KontextWork
    • TrainingSparkle
    • Healthchecks.io
    • Hammerbacher
    • DocRaptor
    • Yanal-Yves Fargialla
    • Method B
    • FieldHub
    • Morntag
    • Xavid
    • Kai DeLorenzo
    • Charlie S.
  • v64.0 Changes

    January 30, 2025

    πŸš€ Read about this release on our blog.

    πŸ”‹ Features

    • πŸ“‡ #2338: Allow custom RDF metadata for PDF/A and eInvoices
    • πŸ–¨ #123, #2345: Handle small-caps synthesis
    • πŸ–¨ #2343: Support outline-offset
    • πŸ–¨ #2361: Support text-underline-offset and text-decoration-thickness
    • πŸ–¨ #2296: Don’t crash with tables with rounded corners split between pages

    πŸ› Bug fixes

    • πŸ–¨ #2360: Fix gradients with non-RGB colors
    • πŸ–¨ #2355, #2358: Align png emojis to the surrounding text
    • πŸ–¨ #2353: Fix alignment of SVG text with multiple nested text-anchor values
    • πŸ”Š #2350: Fix logging restoration in capture_logs
    • πŸ–¨ #2341: Fix page groups
    • πŸ–¨ #2314: Use CSS 'image-rendering' attribute for images in SVGs
    • πŸ–¨ #2332: Fix opacity for translated SVG elements
    • #2329: Refactor text.line_break.get_log_attrs
    • πŸ–¨ #2325, #2326: Fix table overflow edge cases

    🐎 Performance

    • πŸ–¨ #2347, #2364: Improve rendering speed for text

    πŸ“š Documentation

    • πŸ“š #2352: Add more use cases in documentation, use Furo theme

    Contributors

    • Guillaume Ayoub
    • Kesara Rathnayake
    • Xavid Pretzer
    • David Tagatac
    • Ernesto Ruge
    • Niko Abeler
    • Noam Kushinsky

    Backers and sponsors

    • Spacinov
    • Kobalt
    • Grip Angebotssoftware
    • Syslifters
    • Simon Sapin
    • Manuel Barkhau
    • Simonsoft
    • Menutech
    • KontextWork
    • TrainingSparkle
    • Healthchecks.io
    • Hammerbacher
    • DocRaptor
    • Yanal-Yves Fargialla
    • Method B
    • FieldHub
    • Morntag
    • Xavid
    • Kai DeLorenzo
    • Charlie S.
  • v63.1 Changes

    December 10, 2024

    Dependencies

    • 🚚 #2297: Remove upper bounds for dependencies

    πŸ› Bug fixes

    • πŸ–¨ #2300, #2292: Don’t avoid floats for flex items
    • πŸ–¨ #2301, #2293: Include floats in calculation of minimum cell height
    • πŸ–¨ #2303, #2302: Set alpha even when current color channels didn’t change
    • πŸ–¨ #2306: Don’t try to increase column width when there’s no extra width
    • πŸ–¨ #2304: Don’t forget skip stack when drawing flex items
    • πŸ–¨ #2316: Don’t crash with SVG symbols
    • πŸ–¨ #2320: Fix currentcolor detection when parsing gradient color stops
    • 🏁 #2322, #2289: Don’t add DLL directories when using Windows executable
    • βœ… #2323, #2305: Fix different rendering test

    🐎 Performance

    • πŸ–¨ #2319: Fix memory leaks

    πŸ“š Documentation

    • ⚑️ #2299: Update install instructions for Alpine
    • πŸ–¨ #2321: Add example invocation of WeasyPrint on the "Contribute" page

    Contributors

    • Guillaume Ayoub
    • JΓ³ Ágila Bitsch
    • Lucie Anglade
    • Alexander Gitter
    • Luke Cousins

    Backers and sponsors

    • Spacinov
    • Kobalt
    • Grip Angebotssoftware
    • Syslifters
    • Manuel Barkhau
    • SimonSoft
    • Menutech
    • KontextWork
    • Simon Sapin
    • TrainingSparkle
    • Healthchecks.io
    • Hammerbacher
    • Advance Insight
    • Docraptor
    • Method B
    • FieldHub
    • Yanal-Yvez Fargialla
    • Morntag
    • Xavid