Multi-character words from separate Tj operators (CID/Identity-H fonts) were being joined without spaces when positioned back-to-back (gap≈0). Detect multi-char items touching at near-zero gap and insert spaces, while preserving single-char per-glyph joining for running headers. Also strip null bytes and control characters in expand_ligatures() to clean Latin-1 fallback artifacts. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>