Releases: Kozea/WeasyPrint
Releases · Kozea/WeasyPrint
v68.1
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
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 newURLFetcherclass instead, seeURL Fetchersfor more information about URL fetchersDocumentMetadata.generate_rdf_metadatais now a method that can be overridden instead of a parameter, seeFactur-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
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-facerules 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-facefonts - #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
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
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
Bug fixes
- #2414: Correctly handle flex columns split between pages
- 1b24ad9: Include padding in outer size of item elements
- #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
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-faceunicode-range - #2394: Modernize and improve default user agent stylesheets
Bug fixes
- #2362, #2387, #601, #1967, #1805, #2163, #2342, #2374, #1109, #1356, #1327, #1563, #1652, #2351, #2312, #2340, #1311, #2066, #2359, #2053: Improve Flex layout, with financial support from NLnet.
- #1686, #2404: Fix duplicate text selection with right-to-left text
- #2372, #2389: Fix justification of right-to-left text
- #2403: Fix emoji rendering with older versions of Pango
- #2392: Fix complex cases involving nested SVG text anchors
- #2396, #2398: Fix and improve font names in PDF
- #2269, #2390: Apply justification to non-breaking spaces
- #2362, #2387: Improve Flex layout, with financial support from NLnet.
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
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
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
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
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
v63.0
Read about this release on our blog.
Dependencies
- Python 3.13 is now supported
- pydyf 0.11.0+ is now needed
- tinycss2 1.4.0+ is now needed
- tinyhtml5 2.0.0+ is now needed, instead of html5lib
Features
- #2252, #895: Handle page groups, with financial support from Code & Co.
- #1630, #2286: Support CSS Color Level 4
- #2192: Add PDF variant for debugging purpose
- #2208: Support submit inputs in PDF forms
- #2139: Support
mask-border-*properties - #1831, #2143: Support radio inputs in PDF forms
Bug fixes
- #2262: Avoid integer overflows when converting units from/to doubles
- #2260: Avoid float collision with box establishing formatting context
- #2240, #2242: Handle
svgtags with no size - #2231, #1171, #2222, #1208: Fix several problems related to
flex-direction: column - #2239: Don’t fail when SVG markers are undefined references
- #2230, #2238: Set explicit flags when loading DLLs on Windows
- #2228, #1942: Store original and PDF stream images in different cache slots
- #2234: Apply stylesheet and other basic operations to SVG root tag
- #2054, #2233: Keep auto margins on flex layout boxes
- #1883: Don’t crash with empty list marker strings
- #2216: Fix vertical alignment of out-of-flow elements in tables
- #996, #2219: Don’t ignore absolutely positioned elements inside flex boxes
- #2217: Don’t crash with
normalcolumn gaps - #1817: Don’t assume that lines break after spaces
- #1868: Don’t break rows with atomic cells
- #2166: Don’t display bottom border on cells in split rows
- 61852c4: Capture fontTools logs when subsetting fonts
- #2190: Don’t use a pattern when drawing backgrounds for no-repeat background images
- #2185: Check that Harfbuzz version is at least 4.1.0 to subset fonts
- #2180: Store width for all glyphs when font is not subset
- #2183: Respect
break-inside: avoidfor flex items - #2055, #2058: Fix right-to-left tables with collapsed borders
- #2179, #1128: Handle buggy Adobe Photoshop CMYK JPEGs
- #2175: Don’t compress PDF metadata for PDF/A-1
- #2174: Fix extra width distribution for auto table layout
Performance
- #1155: Improve rendering speed for large colspan values
- #2120, #2178: Use Harfbuzz to subset fonts by default
Documentation
- #2282, #2284: Simplify Alpine install instructions
- #2254: Add warning about antivirus false detection
- #2220: Add extra information to debug logs
- #2211: Fix link to samples
- #2195: Update cache argument documentation
- #2105, #2151: Use MSYS2 instead of GTK+3 for Windows
Contributors
- Guillaume Ayoub
- David Huggins-Daines
- Xavid Pretzer
- Yann Trividic
- Kevin Kays
- Alejandro Avilés
- Gianluca Teti
- Gregory Goodson
- Lucie Anglade
- Roman Sirokov
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