17639ed62d
Разбор inline-маркеров (\X, [x], `, **, ~~, *, _, \t) был продублирован в inline_scan() и scan_join_stream(). Вынесен в общий inline_marker(): возвращает 1 если токен обработан, 0 если обычный символ/пробел (его кладёт вызывающий). attr = emph_to_attr(ls, base); для join base=ATTR_TEXT, что тождественно прежнему styles_map[ls]. В scan_join маркеры пропускаются при soft_break (синтетический пробел склейки кладёт ветка пробела). scan_join_stream 3794→2329, inline_scan 1842→700, inline_marker +1436. _CODE 22246→21376. Рендер идентичный (проверено в MAME). Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>