Commit graph

1 commit

Author SHA1 Message Date
jedarden
eb442cd16b feat(pdftract-15qr): implement Type 3 glyph content stream rasterizer
Add Type 3 glyph rasterizer for Phase 2.5 shape recognition (Level 4 fallback).

- Add type3_rasterizer.rs module with:
  - Bitmap32x32: 32x32 grayscale bitmap (0=black ink, 255=white paper)
  - PathCommand enum and CurrentPath for path construction
  - RasterizerContext for content stream execution
  - Supported operators: m l c v y re h n S s f F f* B B* b b* q Q cm Do
  - Stack depth limit: 20 levels
  - Simple scanline rasterization for rectangles

- Add raster_cache field to Type3Font:
  - DashMap-based thread-safe cache for rasterized bitmaps
  - get_cached_bitmap(), cache_bitmap(), raster_cache() methods

- Public API: rasterize_type3_glyph(font, glyph_name) -> Option<[u8; 1024]>

Acceptance criteria:
- PASS: 32x32 square rasterizes to half-filled bitmap
- PASS: Form XObject recursion limited to 20 levels
- PASS: Unknown glyph returns None without panic
- WARN: FontBBox fallback not yet implemented (requires /FontBBox access)

Tests: All 13 type3_rasterizer tests pass (218 total font module tests pass)

Closes: pdftract-15qr
2026-05-24 03:19:40 -04:00