Repository navigation
Fullbleed 2.5.23: font-selected text decoration thickness
Fullbleed 2.5.23 fixes text-decoration-thickness: from-font in HTML documents. Underlines, overlines, and strike-throughs now use the first available font's preferred underline thickness. With Noto Sans at 40px, that is 1.5pt; previous releases used the automatic 3pt stroke.
Font metrics are scaled from their native design units, preserving fractional values such as Inter's. Fonts without a positive preferred thickness retain the automatic fallback. Automatic-thickness and explicit-length output is preserved; the existing placement and minimum-width rules still apply. No runtime dependency is added.
In these examples, AUTO uses automatic thickness, FONT uses from-font, and SIZE is the explicit 2px control. The corrected FONT row matches the thinner control.
| 2.5.22 | 2.5.23 |
|---|---|
![]() |
![]() |
Validation includes 1,361 Rust library tests, 11 documentation tests, all 594 Python tests, and Windows/Linux CI. The new installed-output gate covers 100 cases, 300 PDFs / 480 pages, deterministic replay, independent PDF stroke measurements, and native/finalized/PDFium previews. It exercises direct, compiled, fixed-binding, and both reflow compression modes. fontTools supplies the independent metric expectations, and a runnable Chrome print reproduction confirms the Noto Sans thickness.
The public 2.5.22 wheel fails the 60 affected cases and passes 40 controls. Only those 60 PDFs change; the other 240 PDFs remain byte-identical. The final candidate, Windows/Linux CI, and fresh public Python installation reproduce identical PDFs. A fresh default-feature crates.io consumer reproduces all 120 direct/compiled PDFs.
The complete unchanged 1,662-fixture source corpus reports 1,619 PASS, 25 FAIL, and 18 REFERENCE-DISPUTED. Every PDF is byte-identical to the retained 2.5.22 baseline. Inputs, reference artifacts, and comparator policy remain fixed, and the original failed gate is retained. This corpus has no from-font fixture; the added regression gate covers that behavior separately.
The source corpus and separate public-package probes do not establish complete CSS parity or PDF standards conformance. Browser line positions and pixels are not asserted equal to Fullbleed. The unavailable dedicated PDF/VT validator remains skipped. Node and .NET retain their separately verified engine pins.
- PyPI 2.5.23
- crates.io 2.5.23
- PDFs, previews, controls, and runnable verification
- Complete unchanged source-corpus evidence
- Verification record
- SHA-256 checksums
Source and release preparation: #76. Related to CSS tracker #54.

