mirror of
https://github.com/storytold/pdfcraft.git
synced 2026-11-11 16:36:13 -06:00
* fix(a11y): bookmarks from structure keep the words of glyph-by-glyph headings Chromium (Skia) draws text one glyph at a time, each moved into place with its own Td. The marked text of a heading added a space at every Td, TD, T* and Tm, so New Bookmarks from Structure titled them "C h a p t e r T w o", and the real spaces between words were lost. On a 20-page tagged guide printed by Chromium, 25 of 61 titles came out spaced. mcid_texts now follows the text matrix (and the CTM, q/Q, Tc, Tw, Tz, TL) and decides word breaks from where the glyphs are: a glyph that starts on another line, more than 0.2 em after the previous glyph of the same marked content, or back over more than an em, starts a new word. Kerning and glyph-by-glyph placement no longer split words. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(a11y): headings set with a negative font size keep their words The em that decides word breaks was the font size times |Tz|, negative with a negative font size: every glyph then started a new word, and a heading in one Tj read "C h a p t e r O n e". The em is now |size x Tz|, and "ahead" follows the way glyphs advance in text space, backwards when the size or Tz is negative, so a TJ word space still splits words there as on main. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> * fix(a11y): keep wrapped headings separate under horizontal scaling Co-Authored-By: OpenAI Codex <noreply@openai.com> --------- Co-authored-by: Claude Opus 5.5 <noreply@anthropic.com> Co-authored-by: OpenAI Codex <noreply@openai.com>