Tables that paginate properly in both PDF engines, CSS fragmentation and @media print in the Swift engine, iOS WebKit support, and main-content extraction for HTML → Markdown.
Breaking: minimum deployment targets rise to macOS 13 / iOS 15 / tvOS 15 / watchOS 10 (#53).
Tables
- Rows continue across page boundaries and headers repeat on each page, in both engines (#66, #67, #76, #99).
- Columns are sized by content instead of evenly, honouring
min-width,break-wordand min-content limits (#82, #96, #103, #104). - Unbreakable content stays within the page, and columns no longer collapse under overflow wrap (#69, #72).
- Collapsed borders and WebKit's right-hand borders are preserved (#90, #92).
SwiftTextRender — Swift PDF engine
- CSS fragmentation (
break-before/break-after/break-inside, plus the legacypage-break-*aliases) is honoured —render --page-break-beforewas a silent no-op on--engine swift(#57). @media printrules are applied in the Swift cascade, so the screen stylesheet's padding no longer leaks into PDFs (#101).- Embedded TrueType fonts are subset, and base-14 WinAnsi advance widths are correct (#84, #85).
- Local images resolve, task-list checkboxes render, soft line breaks win over overflow wrapping, and underlines no longer gap between words (#83, #86, #91, #95).
iOS
- WebKit's JavaScript-loading path now works on iOS — the post-JS DOM, not the raw server HTML (#52).
- Paginated PDF export via
UIPrintPageRenderer, reaching the same WebKit print pipeline as macOS (#55). WebKitBrowserfails instead of hanging: real failure callbacks, a Swift-side timeout, and a fixed retain cycle that leaked a web content process per load (#58).
Also
- Main-content extraction for HTML → Markdown — nav, cookie banners, sidebars and footers stay out (#56).
- Document metadata is written into PDF, DOCX and HTML output (#65).
- libarchive replaces ZIPFoundation (#53): back on a tagged dependency, reproducible archives, ~9% smaller output.
- Inferred document titles keep literal punctuation instead of being smart-quoted (#105).
Full Changelog: 2.1.0...2.2.0