The fallback estimated-width path in should_join_items() used Latin case-based thresholds (uppercase/lowercase transitions) to decide word boundaries. For CJK text emitted as per-glyph items, these heuristics incorrectly inserted spaces within words (e.g., "ス テ ップ" instead of "ステップ"). Now detects CJK characters and uses a generous join threshold, matching the behavior already applied in the accurate-width path. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>