Skip to content

Fullbleed 2.5.16: independent font synthesis controls

Choose a tag to compare

@krflol krflol released this 08 Oct 04:49
1813df2

Fullbleed 2.5.16 lets documents control synthetic bold and italics independently.

With only a regular font registered, font-synthesis: weight now permits synthetic bold without artificial italics; font-synthesis: style permits artificial italics without synthetic bold. The four controls inherit independently, shorthand omissions reset to none, and the style longhand supports oblique-only. HTML decoration geometry and SVG text use the independent style control. SVG stylesheet !important declarations outrank normal inline declarations.

Rust callers can use fullbleed::FontSynthesisStyle to set TextStyle.font_synthesis_style independently of font_synthesis_weight. Small-cap controls govern the existing HTML fallback; position controls govern the default footnote-call fallback. Real selected bold and italic faces remain available.

Install from PyPI with python -m pip install fullbleed==2.5.16, or use fullbleed = { version = "=2.5.16", features = ["svg_raster"] } from crates.io. The Rust example enables SVG raster fallback to match the Python wheels. The Python package has no runtime package dependencies. Node and .NET bindings retain their separately verified engine versions.

Validation retained for this release:

  • All 589 Python tests and seven focused tests pass against the final local wheel. The release-preparation CI and both registry workflows pass.
  • Fresh public Python and Rust installations pass 130 focused synthesis cases / 221 pages. All 130 CI PDFs and preview case sets match across Windows and Linux. All 390 public Rust PDF/native/finalized-preview files match public Python output.
  • The evidence archive includes input fixtures, the registered font and its license, PDFs, previews and standalone Python/Rust reproduction tools. Both commands were replayed from the extracted bundle. See the verification record and checksums.

The complete pinned corpus for source commit 8ef96b0, before the version bump, retains 1,617 PASS, 26 FAIL and 19 REFERENCE-DISPUTED. All 1,662 PDFs and fixture raster fingerprints are unchanged from the previous source candidate 9ec4f71; there are no new failures or lost passes. The unchanged upstream gate still fails. This candidate's wheel reports 2.5.15; it is source-build evidence, not a full corpus run of the final 2.5.16 registry wheel.

Download the source corpus evidence, structured comparison, and checksums. The published 2.5.14 corpus report remains unchanged, and remaining failures stay open.

Two existing fixed-template limits remain: synthetic small caps changes binding-slot names, so positive small-cap checks use ordinary and reflow output; finalized native previews can omit synthetic-bold strokes on fixed slots even when the emitted PDF displays them correctly in PDFium. Use reflow for small-cap bindings and an independent PDF viewer for fixed-slot synthetic bold. Position control does not add general font-variant-position or OpenType substitution. These checks do not establish complete CSS Fonts or new PDF standards conformance; the dedicated PDF/VT validator remains unconfigured and skipped.

See the CSS examples and scope, implementation #58, and release preparation #59.