v1.22.0
atlasia-ma/MoulSotv1.22.0Sep 20, 2026by abimaelmartell
Upgrading?
AI Summary
Adds support for right-to-left text, symbolic fonts, and tracked display text while introducing new metadata fields for text items. It also fixes parsing issues with degenerate Form XObjects and improves font weight detection.
Key Highlights
- Implements Unicode Bidirectional Algorithm for Hebrew/Arabic
- Supports Symbol and ZapfDingbats built-in encodings
- Adds bold_source and fixed_pitch fields to TextItem
- Handles tracked display text (letter spacing) correctly
- Fixes extraction from Form XObjects with zero-area bounding boxes
Breaking Changes
- TextItem literals require new fields (bold_source, fixed_pitch)
New Features
- RTL text support
- Symbol font decoding
- Tracked text handling
- Bold source detection
- Degenerate Form XObject handling
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
rasbt/LLMs-from-scratch★ 107,057
Implement a ChatGPT-like LLM in PyTorch from scratch, step by step
lyogavin/airllm★ 40,167
AirLLM 2.8T LLM inference with single 4GB GPU
NirDiamant/RAG_Techniques★ 29,959
This repository showcases various advanced techniques for Retrieval-Augmented Generation (RAG) systems. Each technique has a detailed notebook tutorial.
microsoft/OmniParser★ 25,539
A simple screen parsing tool towards pure vision based GUI agent
karpathy/nn-zero-to-hero★ 24,907
Neural Networks: Zero to Hero