v1.22.0
multimodal-art-projection/YuEv1.22.0Sep 20, 2026by abimaelmartell
Upgrading?
AI Summary
A feature release introducing Right-to-Left text support, symbolic font decoding, and enhanced font metadata tracking.
Key Highlights
- Implemented full Right-to-Left text support using the Unicode Bidirectional Algorithm.
- Added support for Symbol and ZapfDingbats built-in encodings.
- Added `bold_source` and `fixed_pitch` to text items for better font classification.
- Fixed tracked display text to remain whole when letter spacing is used.
Breaking Changes
- Rust literals for `TextItem` must now include the new fields `bold_source` and `fixed_pitch`.
New Features
- Right-to-Left text processing and presentation form normalization.
- Symbol and ZapfDingbats font encoding support.
- New font metadata fields (`bold_source`, `fixed_pitch`, `bold_weight_threshold`).
- Function `widen_degenerate_form_bboxes_mem` for Rust.
Full Release Notes
Changes since 1.21.0: - Read right-to-left lines back through the Unicode Bidirectional Algorithm: Hebrew and Arabic text stored in visual order comes out in reading order even when the line holds numbers, Latin phrases or punctuation; glyph-by-glyph positioned words cluster into words by the line's own gaps; presentation forms normalize to their letters once the text is in reading order (#552). - Decode simple fonts through their `/BaseEncoding`, the Symbol and ZapfDingbats built-in encodings and their glyph names — Adobe Glyph List, `uniXXXX` and numbered `gNN`/`cidNN` names resolved against the embedded program — so symbol bullets, arrows and math operators read as the glyphs they are. A code the `/Differences` array names but cannot map reads as nothing, and a Type3 font's glyph-procedure names are never taken for glyph indexes (#553). - Keep tracked display text whole when its letter spacing is written as `TJ` offsets, so a spaced-out title reads as words rather than one letter per word (#548). - Add `bold_source` (where `is_bold` came from) and `fixed_pitch` to text items, and `bold_weight_threshold` to the positioned-text options; with `bold_from_weight` adjacent runs merge by the bold verdict; `is_bold_font` recognises Demi, Semibold, Ultra, Heavy and Black faces and the foundry abbreviations (#547). - Widen the zero-area `/BBox` of Form XObjects at load so their text is extracted and the page renders; Rust gains `widen_degenerate_form_bboxes_mem(bytes)` for the repaired document (#550). - Judge a CID-keyed font page's text decoded before calling it vector text, and bound Form XObject content inflation (#551). - Regression fixtures for the boxes of text drawn with a reflected matrix (#549). `bold_from_weight` and `bold_weight_threshold` stay opt-in; the default `is_bold` now also reads the weight names above as bold. **Rust migration:** `TextItem` literals need the new `bold_source` and `fixed_pitch` fields. Release preparation: #556. [Full changelog](https://github.com/firecrawl/pdf-inspector/compare/v1.21.0...v1.22.0)
Related Repositories
public-apis/public-apis★ 491,211
A collective list of free APIs
NousResearch/hermes-agent★ 256,077
The agent that grows with you
yt-dlp/yt-dlp★ 200,249
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,555
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,699
AutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.