Расхождения с оракулом Лебедева

Документ сгенерирован тестом OracleSnapshotTests из снимка lebedev.md и списка причин в самом тесте. Править руками нечего: причины живут в коде, где их видит тест, а здесь — их читаемая проекция. Перегенерация: TYPOGRAPHER_UPDATE_ORACLE=1 dotnet test tests/Typographer.Tests.

Наш набор правил — пресет Lebedev. Неразрывный пробел показан как _, узкий неразрывный — как ~.

Вход Наш вывод Вывод оракула Почему расходимся
Он сказал: "это важно, и т. д." - и ушёл в 1941-1945 гг. Он_сказал: «это_важно, и_т.д.»— и_ушёл в_1941-1945_гг. Он_сказал: «это важно, и_т.д.»— и_ушёл в_1941-1945_гг. порог короткого слова у нас три буквы (как в JS-typograf), у оракула две: «это» мы привязываем, он нет
Тире - вот так. И дефис-минус. Тире_— вот_так. И_дефис-минус. Тире_— вот так. И_дефис-минус. тот же порог короткого слова: «вот» мы привязываем, оракул нет
Диапазон 1941-1945 и 10-15 штук Диапазон 1941-1945_и_10-15_штук Диапазон 1941-1945 и_10-15 штук тот же порог короткого слова плюс привязка числа к следующему слову: «10-15 штук»
Минус -5 градусов и 5-й дом Минус -5_градусов и_5-й_дом Минус −5 градусов и_5-й дом минус мы не ставим намеренно: дефис и минус в тексте неразличимы без знания замысла автора, а гарантия 4 запрещает менять смысл записи по догадке
Температура 25 C и угол 90 град. Температура 25_°C_и_угол 90_град. Температура 25_C и_угол 90_град. знак градуса мы дописываем сами (ГОСТ 8.417) и отбиваем от числа неразрывным пробелом (ГОСТ 9.6); оракул не делает ни того, ни другого
Дробь 1/2, 3/4 и 1/4 Дробь ½, ¾ и_¼ Дробь 1/2, 3/4 и_1/4 common/number/fraction собирает вульгарные дроби, оракул оставляет косую черту
Неравенства 5 <= 6, 7 >= 3, 8 != 9 Неравенства 5 ≤ 6, 7 ≥ 3, 8 ≠ 9 Неравенства_5 <= 6, 7 >= 3, 8 != 9 common/number/mathSigns собирает знаки сравнения, оракул оставляет их набором из двух символов
Разряды 1000000 и 1 000 000 рублей Разряды 1_000_000_и_1_000_000_рублей Разряды 1000000 и_1_000_000 рублей разряды мы разбиваем сами (common/number/digitGrouping в пресете) и уже стоящие пробелы между разрядами делаем неразрывными (ГОСТ 9.5), оракул не делает ни того, ни другого
Копирайт (c) 2026, торговая марка (tm), знак (r) Копирайт © 2026, торговая марка ™, знак ® Копирайт ©2026, торговая марка (tm), знак <sup class="reg">®</sup> мы собираем в один символ и «(tm)», и «(r)»; оракул «(tm)» не трогает, а «(r)» оборачивает в тег — разметки из текста мы не делаем (гарантия 4)
Стрелки -> и <- в тексте Стрелки → и← в_тексте Стрелки -> и <- в_тексте common/symbols/arrow собирает стрелки, оракул оставляет их набором из двух символов
Многоточие... и ещё .... Многоточие… и_ещё_.... Многоточие... и_ещё .... многоточие — один знак, а не три точки (Мильчин); оракул точки оставляет
Двойная пунктуация!! и ?? и ?! Двойная пунктуация!! и?? и?! Двойная пунктуация!! и ?? и ?! пробел перед знаком вопроса мы удаляем всегда, оракул — только перед одиночным
"Вложенные "кавычки" внутри" и 'одинарные' «Вложенные „кавычки“ внутри» и_'одинарные' «Вложенные „кавычки“ внутри» и ’одинарные’ одиночные кавычки мы не трогаем: оракул подменяет обе правой, и открывающая с закрывающей становятся неразличимы
Апостроф д'Артаньян и 5" дюймов Апостроф д’Артаньян и_5" дюймов Апостроф д’Артаньян и_5″ дюймов штрих после числа мы не ставим: тот же символ в тексте чаще кавычка, чем дюйм
Инициалы А. С. Пушкин и Пушкин А. С. Инициалы_А._С._Пушкин и_Пушкин_А._С. Инициалы А._С. Пушкин и_Пушкин_А._С. инициалы привязываются к фамилии (Мильчин), оракул связывает только инициалы между собой
Улица ул. Ленина, д. 5, кв. 12 Улица_ул. Ленина, д._5, кв._12 Улица ул. Ленина, д._5, кв._12 сокращение привязывается и к слову слева — «Улица ул.»; у оракула привязка только вправо
Город г. Москва и с. Никольское Город_г._Москва и_с._Никольское Город г. Москва и_с. Никольское «г. Москва» и «с. Никольское» мы не разрываем (Мильчин), оракул разрывает
Номер № 5 и параграф § 3 Номер №~5_и_параграф §~3 Номер №_5_и_параграф §_3 после № и § мы ставим УЗКИЙ неразрывный пробел (ГОСТ Р 7.0.110), оракул — обычный неразрывный
Дата 2026-09-09 и 09.09.2026 Дата 09.09.2026_и_09.09.2026 Дата <nobr class="phone">2026-09-09</nobr> и_09.09.2026 ISO-дату мы переписываем в русский формат, оракул оборачивает её в тег: разметки из текста мы не делаем (гарантия 4)
Понедельник, 9 сентября 2026 года Понедельник, 9_сентября 2026_года Понедельник, 9_сентября 2026 года «2026 года» мы не разрываем, оракул разрывает
Время 10:30 и 10 ч. 30 мин. Время 10:30_и_10_ч.30_мин. Время_10:30 и_10_ч.30_мин. <nobr class="phone">+7</nobr> тот же порог короткого слова: «Время» к времени мы не привязываем, а «и» привязываем к левому соседу
Телефон +7 (999) 123-45-67 Телефон +7_999_123-45-67 Телефон(999)_123-45-67 телефон мы переписываем неразрывными пробелами, оракул оборачивает в тег: разметки из текста мы не делаем (гарантия 4)
Ударение а́ и ё вместо е Ударение а́ и_ё_вместо_е Ударение а́_и_ё_вместо_е «а́» с комбинирующим ударением коротким словом не считается: в нём есть небуквенный символ

Совпадают полностью 13 строк из 36.