Repository navigation
1.22.0 — Right-to-left text, symbolic fonts, tracked titles and font metadata
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,uniXXXXand numberedgNN/cidNNnames resolved against the embedded program — so symbol bullets, arrows and math operators read as the glyphs they are. A code the/Differencesarray 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
TJoffsets, so a spaced-out title reads as words rather than one letter per word (#548). - Add
bold_source(whereis_boldcame from) andfixed_pitchto text items, andbold_weight_thresholdto the positioned-text options; withbold_from_weightadjacent runs merge by the bold verdict;is_bold_fontrecognises Demi, Semibold, Ultra, Heavy and Black faces and the foundry abbreviations (#547). - Widen the zero-area
/BBoxof Form XObjects at load so their text is extracted and the page renders; Rust gainswiden_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.