v1.22.0
mukul975/cve-mcp-serverv1.22.0Sep 20, 2026by abimaelmartell
Upgrading?
AI Summary
This release adds support for right-to-left languages, symbolic fonts, and enhanced font metadata. It also improves the handling of tracked text and degenerate bounding boxes.
Key Highlights
- Implements Unicode Bidirectional Algorithm for Hebrew and Arabic text.
- Decodes Symbol and ZapfDingbats built-in encodings for math operators and bullets.
- Adds `bold_source` and `fixed_pitch` fields to text items.
- Handles letter spacing in tracked display text to keep words whole.
Breaking Changes
- Rust migration: `TextItem` literals now require the new `bold_source` and `fixed_pitch` fields.
New Features
- Added `bold_source` and `fixed_pitch` to text items.
- Added `bold_weight_threshold` to positioned-text options.
- Rust function `widen_degenerate_form_bboxes_mem` added for document repair.
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,192
A collective list of free APIs
NousResearch/hermes-agent★ 256,049
The agent that grows with you
yt-dlp/yt-dlp★ 200,221
A feature-rich command-line audio/video downloader
microsoft/markitdown★ 191,543
Python tool for converting files and office documents to Markdown.
Significant-Gravitas/AutoGPT★ 187,700
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.