Releases: 4thel00z/pdfboss
Releases · 4thel00z/pdfboss
Release list
pdfboss 0.3.0
Full Changelog: v0.2.1...v0.3.0
v0.2.1
0.2.1 (2026-07-16)
Performance Improvements
- core: add an FxHash-based FastMap; use for Dict, caches, and xref (e8adb40)
- render: memoize glyph outlines per gid (7c13df6)
- render: drop per-curve alloc and finish-clone in the path flattener (16950ce)
- render: route glyph and font-load maps through the fast hasher (a9ead58)
- render: cache flattened glyph outlines, not just parsed ones (7a2654e)
v0.2.0
0.2.0 (2026-07-15)
Features
- cli: add --fonts tier flag to render command (a4034ea)
- content: parse Type3 d0/d1 glyph-metric operators (2c2d194)
- encoding: standard-14 AFM advance width tables (6d5775d)
- py: add fonts= tier parameter to Page.render (6a1319c)
- python: discover pdfboss-fonts for fonts=full; font_dir override (be518f3)
- python: pdfboss-fonts data package with the OFL substitute faces (d2d02be)
- python: pdfboss[full] extra + pdfboss-fonts release pipeline (b60f704)
- render: add GlyphPainting tier and RenderOptions gate (eef8b17)
- render: advance glyphs by the PDF /Widths, program advance as fallback (9711bfd)
- render: bundle OFL substitute faces behind the substitute-fonts feature (0518969)
- render: decrypt and segment Type1 FontFile programs (c176f34)
- render: honor built-in StandardEncoding for embedded Type1 fonts (23473d3)
- render: honor Type3 d0/d1 colored vs uncolored glyphs (bb98088)
- render: interpret CFF Type2 charstrings into outlines (7aa88e4)
- render: interpret Type1 charstrings into outlines (dbae39c)
- render: map simple TrueType glyphs via /Encoding and /Differences (e626893)
- render: paint embedded CFF fonts, gated by the AllEmbedded tier (f1410a2)
- render: paint embedded Type1 fonts, gated by the AllEmbedded tier (601744d)
- render: paint Type3 glyphs by re-entering the executor, gated (7849b1c)
- render: parse the CFF container (INDEX/DICT/charset) (9c1b047)
- render: parse the post table for glyph-name lookup (dcf77d7)
- render: parse Type1 FontMatrix, Encoding, Subrs, CharStrings (59f1833)
- render: parse Type3 font dicts (CharProcs, FontMatrix, widths) (bb22596)
- render: substitute non-embedded fonts at Full, AFM-14 advances (4b03a79)
- render: substitute-source option, provider trait, face request (65d4a1d)
Bug Fixes
- encoding: reject non-Core-14 siblings in standard-14 width lookup (e8e8056)
- render: bound callothersubr passthrough; flex open-guard; 255 test (117f27e)
- render: cap aggregate CID /W expansion; correct tier-test comment (46bfe3b)
- render: consume a single eexec separator; leniency tests (31334e4)
- render: paint bare-encoding standard-14; correct NOTICE; Symbol prefix; CLI feature (53e09af)
- render: saturate /Differences code increment and document load_simple tiers (f4aa144)
- render: scope substitution to simple fonts; preserve Type3/Type0 (985368c)
Documentation
- render: design spec for full glyph painting (6fb3476)
pdfboss-fonts: v0.2.0
v0.1.0
0.1.0 (2026-07-14)
Features
- core: decrypt AES (AESV2 and AESV3) Standard-handler files (c8529ee)
- core: decrypt Standard-handler RC4 files (empty user password) (253be12)
- initial pdfboss release — clean-room PDF toolkit in Rust (42a46db)
- render: paint embedded TrueType glyph outlines (161aaad)
- render: TrueType glyf outline parser (ec2f9b0)
Performance Improvements
- core: allocation-free lexing of well-formed numbers and names (675fa81)
- core: apply the TIFF predictor in place on owned data (a589a2d)
- core: cache decoded object streams and parse their header once (1cfdabd)
- core: lazy page-tree loading with cheap page_count (99e8f4e)
- core: use the zlib-rs FlateDecode backend (14b03df)
- enable thin LTO and codegen-units=1 for release builds (30b8f69)
- render: active-edge table + row-extent-bounded fill (ab89290)
- render: share clip mask behind Rc (clone-on-write) (d99f5d1)
- text: decode glyphs without a per-glyph String allocation (cfc4bcc)