Skip to content

Releases: 4thel00z/pdfboss

pdfboss 0.3.0

Choose a tag to compare

@4thel00z 4thel00z released this 16 Jul 20:43

Full Changelog: v0.2.1...v0.3.0

v0.2.1

Choose a tag to compare

@4thel00z 4thel00z released this 16 Jul 07:03

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

Choose a tag to compare

@github-actions github-actions released this 15 Jul 20:02
761b577

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

Choose a tag to compare

@github-actions github-actions released this 15 Jul 20:02
761b577

0.2.0 (2026-07-15)

Features

  • python: pdfboss-fonts data package with the OFL substitute faces (d2d02be)
  • python: pdfboss[full] extra + pdfboss-fonts release pipeline (b60f704)

v0.1.0

Choose a tag to compare

@github-actions github-actions released this 14 Jul 19:45
5905953

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)

Documentation

  • note AES encryption support in the performance spec (c3a98a6)
  • note embedded-TrueType glyph painting support (2c19230)
  • note RC4 encryption support in the performance spec (19bb5d3)
  • record performance results and deferred work in the spec (4d4e1ee)