Skip to content

100% pass rate: 949/949 examples (0 failures) - #24

Merged
ronaldtse merged 1 commit into
mainfrom
fix/100-percent-pass-rate
Aug 4, 2026
Merged

100% pass rate: 949/949 examples (0 failures)#24
ronaldtse merged 1 commit into
mainfrom
fix/100-percent-pass-rate

Conversation

@ronaldtse

Copy link
Copy Markdown
Contributor

Summary

100% pass rate achieved: 949/949 examples, 0 failures.

From 112 failures (88%) to 0 failures (100%) across 23 PRs.

Final fixes:

  • XMP sync via prepend hook (skips read-back documents)
  • FontFile2 stream for TrueType fonts from file/IO

What was implemented across all PRs

  • Canvas: text_rich, transparency, clipping, draw_image_matrix, text_lines
  • Fonts: AFM metrics for standard 14, TTF cmap+hmtx metrics for TrueType, subsetting API, codepoint tracking, FontDescriptor, ToUnicode CMap, /Widths, FontFile2 embedding
  • Encoding: WinAnsi encode/decode with raw byte packing, reverse table
  • Conformance: PDF/A-1/2/3/4 (20+ rules), PDF/UA (11 rules), PDF/X, Rule/RuleSet/Violation domain model
  • Digital Signatures: Full PKCS#7 signing + verification via OpenSSL
  • Writer: auto-version detection, FlateDecode compression, XMP sync
  • Linearization: hint stream writer with /Linearized parameter dict
  • Production: page boxes, output intents, RGB color detection
  • XMP: Packet with lutaml-model serialization

XMP sync hook:
- Prepend to Document#write for in-memory documents only
- Skips documents read from files (no metadata modification)
- Only syncs when /Info dict has a Title

FontFile2:
- TrueType fonts loaded from file/IO get /FontFile2 stream
- FontDescriptor references the embedded font data

Fixes the last 2 remaining test failures, bringing pass rate from
88% (112 failures) to 100% (0 failures) across 23 PRs.
@ronaldtse
ronaldtse merged commit d46fb19 into main Aug 4, 2026
@ronaldtse
ronaldtse deleted the fix/100-percent-pass-rate branch August 4, 2026 04:11
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant