pdftract/crates
jedarden 172cdadd04 feat(pdftract-4x0y): implement font binding and text positioning operators
Implement Tf, Td, TD, Tm, T* operators for Phase 3.1 text state.

- Add TSTAR_ZERO_LEADING, FONT_RESOURCE_NOT_FOUND, FONT_SIZE_ZERO_OR_NEGATIVE diagnostics
- Add move_text, move_text_set_leading, set_text_matrix, next_line, set_font methods to GraphicsState
- Refactor execute_with_do to use gstate.text_matrix instead of local TextMatrix
- Implement Tf with ResourceStack font resolution and size clamping
- Implement Td/TD/Tm/T* operators with correct matrix semantics
- Add acceptance criteria tests for all operators

Per PDF spec:
- Td: text_line_matrix = translate(tx, ty) * text_line_matrix
- TD: same as Td, plus sets leading = -ty
- Tm: overwrites both text_matrix and text_line_matrix (does not accumulate)
- T*: equivalent to Td 0 -leading
- Tf: resolves font name from ResourceStack, clamps size <= 0 to 1.0

Closes: pdftract-4x0y
Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
2026-05-24 17:44:34 -04:00
..
pdftract-cer-diff docs(pdftract-aawrz): add LICENSE-MIT and LICENSE-APACHE files 2026-05-23 10:36:28 -04:00
pdftract-cli feat(pdftract-5pbkp): implement inspect subcommand with clap parsing and axum server 2026-05-24 17:13:05 -04:00
pdftract-core feat(pdftract-4x0y): implement font binding and text positioning operators 2026-05-24 17:44:34 -04:00
pdftract-libpdftract feat(pdftract-3s2i): implement Phase 5.5.2 validation filter 2026-05-24 04:57:17 -04:00
pdftract-py feat(pdftract-2nu0s): implement Python SDK contract conformance 2026-05-24 08:55:11 -04:00