Справочник правил

Файл СГЕНЕРИРОВАН тестом RulesDocumentTests из реестра правил, XML-комментариев ядра и тестовых данных. Руками не править: правка потеряется при перегенерации, а тест в CI упадёт.

Пример подобран автоматически — это первый из тестовых входов, на котором правило, включённое в одиночку, что-то меняет. Неразрывный пробел показан подчёркиванием _, перевод строки — знаком ⏎.

Всего правил: 107. В пресете Default: 76. В пресете Lebedev: 73. В пресете Typograf: 80. В пресете Gost: 75. В пресете Minimal: 3.

Фаза Prepare (4)

Правило Что делает Пресеты Пример
common/html/quot Сущность прямой кавычки декодируется в символ до расстановки кавычек. Default, Lebedev, Typograf, Gost "цитата" и " → "цитата" и "
common/nbsp/replaceNbsp Замена неразрывного пробела на обычный ДО типографирования. Вне Default: неразрывный пробел во входе поставлен руками и означает «здесь рвать нельзя», а правило это решение стирает. Работает только вместе с правилами фазы Bind — без них текст останется вовсе без неразрывных пробелов. — слово_- слово → слово - слово
common/other/delBOM Удаление метки порядка байт в начале документа. Default, Lebedev, Typograf, Gost текст с BOM → текст с BOM
common/space/replaceTab Замена табуляции на четыре пробела. Вне Default. — "цитата" → "цитата"

Фаза Protect (1)

Правило Что делает Пресеты Пример
common/html/processingAttrs Типографирование значений атрибутов. НЕ РЕАЛИЗУЕТСЯ: гарантия 3 обещает атрибуты байт в байт, а реализация требует разбора значений внутри тега и повторного запуска всего конвейера на каждом из них. — —

Фаза Scan (60)

Правило Что делает Пресеты Пример
common/number/digitGrouping Разбиение длинных чисел по разрядам. Вне Default. Lebedev, Typograf Разряды 1000000 рублей и 25-ый дом в 2026году. → Разряды 1_000_000 рублей и 25-ый дом в 2026году.
common/number/fraction Простые дроби одной восьмой доли: половина, четверть и три четверти. Default, Lebedev, Typograf, Gost 8 != 9, 5 <= 6, 10 x 5 и 1/2 → 8 != 9, 5 <= 6, 10 x 5 и ½
common/number/mathSigns Знаки сравнения и «плюс-минус» из двухсимвольной записи. Default, Lebedev, Typograf, Gost 8 != 9, 5 <= 6, 10 x 5 и 1/2 → 8 ≠ 9, 5 ≤ 6, 10 x 5 и 1/2
common/number/times Знак умножения вместо латинской буквы между числами. Default, Lebedev, Typograf, Gost 8 != 9, 5 <= 6, 10 x 5 и 1/2 → 8 != 9, 5 <= 6, 10×5 и 1/2
common/punctuation/apostrophe Расстановка правильного апострофа. Default, Lebedev, Typograf, Gost д'Артаньян, O'Neil, Кот-д'Ивуар → д’Артаньян, O’Neil, Кот-д’Ивуар
common/punctuation/delDoublePunctuation Удаление двойной пунктуации: «слово,,ещё» становится «слово,ещё». Default, Lebedev, Typograf, Gost раз,,два и три,.четыре и пять,;шесть → раз,два и три,.четыре и пять,;шесть
common/punctuation/hellip Замена трёх точек на многоточие. Default, Lebedev, Typograf, Gost, Minimal раз,...два → раз,…два
common/punctuation/quote Расстановка кавычек правильного вида. Default, Lebedev, Typograf, Gost, Minimal "цитата" → «цитата»
common/punctuation/quoteLink Вынос кавычек за пределы ссылки. НЕ РЕАЛИЗУЕТСЯ: правило перемещает текст через границу тега, а гарантия 3 спецификации обещает разметку байт в байт. Имя зарегистрировано ради паритета с JS-typograf, чтобы RuleId@) его узнавал, а справочник правил был полным. — —
common/space/afterColon Пробел после двоеточия. Default, Lebedev, Typograf, Gost текст:ещё и раз;два → текст: ещё и раз;два
common/space/afterComma Пробел после запятой. Default, Lebedev, Typograf, Gost он сказал,"да" → он сказал, "да"
common/space/afterExclamationMark Пробел после восклицательного знака. Default, Lebedev, Typograf, Gost Ура!Победа и Как?Так и знак №№ 5 → Ура! Победа и Как?Так и знак №№ 5
common/space/afterQuestionMark Пробел после вопросительного знака. Default, Lebedev, Typograf, Gost Ура!Победа и Как?Так и знак №№ 5 → Ура!Победа и Как? Так и знак №№ 5
common/space/afterSemicolon Пробел после точки с запятой. Default, Lebedev, Typograf, Gost текст:ещё и раз;два → текст:ещё и раз; два
common/space/beforeBracket Пробел перед открывающей скобкой. Default, Lebedev, Typograf, Gost слово(текст) и [ ещё ] → слово (текст) и [ ещё ]
common/space/bracket Удаление лишних пробелов внутри круглых скобок. Default, Lebedev, Typograf, Gost он ( в скобках ) и стрелка -> и обратно <- → он (в скобках) и стрелка -> и обратно <-
common/space/delBeforeDot Удаление пробела перед точкой. Default, Lebedev, Typograf, Gost текст. .. → текст...
common/space/delBeforePercent Удаление пробела перед знаком процента, промилле и продецимилле. Default, Typograf 10 км/ч, 100 %, 25 °C, № 5, § 3 → 10 км/ч, 100%, 25 °C, № 5, § 3
common/space/delBeforePunctuation Удаление пробелов перед знаками пунктуации. Default, Lebedev, Typograf, Gost Ура ! ! ! и Что?... и Ох!... → Ура!!! и Что?... и Ох!...
common/space/delBetweenExclamationMarks Удаление пробелов между восклицательными знаками. Default, Lebedev, Typograf, Gost Ура ! ! ! и Что?... и Ох!... → Ура !!! и Что?... и Ох!...
common/space/delLeadingBlanks Удаление пробелов в начале строки. Вне Default. — → ``
common/space/delRepeatN Удаление повторяющихся переводов строки. Вне Default. — ⏎⏎⏎ → ⏎⏎
common/space/delRepeatSpace Удаление повторяющихся пробелов. Default, Lebedev, Typograf, Gost текст - 5 → текст - 5
common/space/delTrailingBlanks Удаление пробелов в конце строки. Вне Default. — → ``
common/space/insertFinalNewline Перевод строки в конце текста. Вне Default. — → ⏎
common/space/squareBracket Удаление лишних пробелов внутри квадратных скобок. Default, Lebedev, Typograf, Gost слово(текст) и [ ещё ] → слово(текст) и [ещё]
common/space/trimLeft Удаление пробелов и переводов строк в начале текста. Вне Default. — → ``
common/space/trimRight Удаление пробелов и переводов строк в конце текста. Вне Default. — → ``
common/symbols/arrow Стрелки из дефиса и угловой скобки. Default, Lebedev, Typograf, Gost он ( в скобках ) и стрелка -> и обратно <- → он ( в скобках ) и стрелка → и обратно ←
common/symbols/cf Добавление знака градуса к «C» и «F». Default, Lebedev, Typograf, Gost Проценты 50 % и 100%, градусы 25 C. → Проценты 50 % и 100%, градусы 25 °C.
common/symbols/copy Знаки копирайта, торговой марки и регистрации из скобочной записи. Default, Lebedev, Typograf, Gost (c) 2026, (tm) и (r) → © 2026, ™ и ®
en-GB/dash/main Дефис с пробелами становится коротким тире с отбивкой. — текст - 5 → текст – 5
en-US/dash/main Дефис с пробелами становится длинным тире без отбивки. — текст - 5 → текст— 5
ru/dash/centuries Тире в диапазоне веков. Default, Lebedev, Typograf, Gost XIX-XX вв. и 80-90-е гг. → XIX—XX вв. и 80-90-е гг.
ru/dash/daysMonth Тире между днями одного месяца. Default, Lebedev, Typograf, Gost 10:00-11:00 и 5-10 января → 10:00-11:00 и 5—10 января
ru/dash/de Дефис перед частицей «де». Вне Default: частица омонимична предлогу в иностранных фамилиях («Шарль де Голль»), и без словаря фамилий правило ошибается. — —
ru/dash/decade Тире в десятилетиях. Default, Lebedev, Typograf, Gost XIX-XX вв. и 80-90-е гг. → XIX-XX вв. и 80—90-е гг.
ru/dash/directSpeech Тире в прямой речи. Default, Lebedev, Typograf, Gost Привет<br />- Пока → Привет<br />— Пока
ru/dash/izpod Дефис в «из-под». Default, Lebedev, Typograf, Gost кое что из под стола → кое что из-под стола
ru/dash/izza Дефис в «из-за». Default, Lebedev, Typograf, Gost —
ru/dash/ka Дефис перед «ка» и «кась». Default, Lebedev, Typograf, Gost —
ru/dash/kakto Дефис в «как-то». Вне Default по той же причине, что и To: «как то» бывает союзом с местоимением — «как то: раз, два». Typograf что то, как то, кое что и все таки → что то, как-то, кое что и все таки
ru/dash/koe Дефис после «кое» и «кой». Default, Lebedev, Typograf, Gost кое что из под стола → кое-что из под стола
ru/dash/main Замена дефиса на тире. Default, Lebedev, Typograf, Gost, Minimal слово_- слово → слово_— слово
ru/dash/month Тире между месяцами. Default, Lebedev, Typograf, Gost январь-февраль, понедельник-среда → январь—февраль, понедельник-среда
ru/dash/surname Защита дефиса в двойных фамилиях: «Салтыков-Щедрин» не становится тире. Default, Lebedev, Typograf, Gost —
ru/dash/taki Дефис перед «таки». Default, Lebedev, Typograf, Gost что то, как то, кое что и все таки → что то, как то, кое что и все-таки
ru/dash/time Тире в интервалах времени. Default, Lebedev, Typograf, Gost 10:00-11:00 и 5-10 января → 10:00—11:00 и 5-10 января
ru/dash/to Дефис перед «то», «либо», «нибудь». Вне Default: «то» омонимично указательному местоимению, и «Я знал, что то было ошибкой» правило испортило бы, сменив смысл фразы. Typograf что то, как то, кое что и все таки → что-то, как-то, кое что и все таки
ru/dash/weekday Тире между днями недели. Default, Lebedev, Typograf, Gost январь-февраль, понедельник-среда → январь-февраль, понедельник—среда
ru/dash/years Замена дефиса на тире в годах. Default, Typograf, Gost - Привет, - сказал он. 1941-1945 → - Привет, - сказал он. 1941—1945
ru/number/comma Десятичная запятая вместо точки. Default, Lebedev, Typograf, Gost 3.14 и 25-ый дом в 2026году → 3,14 и 25-ый дом в 2026году
ru/number/ordinals Краткая форма порядковых числительных. Default, Lebedev, Typograf, Gost 3.14 и 25-ый дом в 2026году → 3.14 и 25-й дом в 2026году
ru/punctuation/ano Расстановка запятых перед «а» и «но». Вне Default: правило само расставляет знаки, то есть меняет текст, а не оформление. Включается по имени или через пресет Typograf. Typograf Пушкин А. → Пушкин, А.
ru/punctuation/exclamation Удвоенный восклицательный знак сводится к одному. Default, Typograf, Gost де Голль и NN 5 и Что?.. Ура!!! → де Голль и NN 5 и Что?.. Ура!
ru/punctuation/exclamationQuestion Восклицательный знак с вопросительным ставятся в принятом порядке. Default, Lebedev, Typograf, Gost Что!? Ура!... Текст?..Как → Что?! Ура!... Текст?..Как
ru/punctuation/hellipQuestion Многоточие после знака конца предложения сокращается до двух точек. Default, Lebedev, Typograf, Gost Вопрос?… и ответ!… и просто… → Вопрос?.. и ответ!.. и просто…
ru/space/afterHellip Пробел после многоточия и его сочетаний со знаком конца предложения. Default, Lebedev, Typograf, Gost раз,...два → раз,... два
ru/space/year Пробел между числом и словом «год». Default, Lebedev, Typograf, Gost 3.14 и 25-ый дом в 2026году → 3.14 и 25-ый дом в 2026 году
ru/symbols/NN Сдвоенный знак номера сводится к одному. Default, Lebedev, Typograf, Gost Ура!Победа и Как?Так и знак №№ 5 → Ура!Победа и Как?Так и знак № 5

Фаза Bind (33)

Правило Что делает Пресеты Пример
common/nbsp/afterNumber Неразрывный пробел между числом и следующим за ним словом. Default, Lebedev, Gost №5 и §3 и ¶3 и 600 dpi → №5_и §3_и ¶3_и 600_dpi
common/nbsp/afterParagraphMark Неразрывный пробел после знака абзаца. Default, Lebedev, Typograf, Gost №5 и §3 и ¶3 и 600 dpi → №5 и §3 и ¶_3 и 600 dpi
common/nbsp/afterSectionMark Узкий неразрывный пробел после знака параграфа. Default, Lebedev, Typograf, Gost №5 и §3 и ¶3 и 600 dpi → №5 и §_3 и ¶3 и 600 dpi
common/nbsp/afterShortWord Неразрывный пробел после короткого слова. Default, Lebedev, Typograf, Gost текст с BOM → текст с_BOM
common/nbsp/afterShortWordByList Неразрывный пробел после предлога или союза из словаря. Default, Lebedev, Typograf, Gost так ли это, он же, если бы через дорогу → так ли это, он же, если_бы через_дорогу
common/nbsp/beforeShortLastNumber Неразрывный пробел перед числом не длиннее двух цифр в конце предложения. Default, Lebedev, Typograf, Gost ул. Ленина, д. 5, кв. 7 и стр. 15, см. рис. 3 → ул. Ленина, д. 5, кв. 7 и стр. 15, см. рис._3
common/nbsp/beforeShortLastWord Неразрывный пробел перед последним коротким словом предложения. Конец предложения распознаётся по точке ВНУТРИ токена, поэтому правило срабатывает и перед сокращением: «Улица ул. Ленина». Отличить точку сокращения от точки конца предложения без разбора смысла нельзя — за сокращением часто стоит имя собственное с прописной буквы, — а лишний неразрывный пробел безвреден и не противоречит Мильчину, который требует не отрывать сокращение от слова. Default, Lebedev, Typograf, Gost Пушкин А. → Пушкин_А.
common/nbsp/dpi Неразрывный пробел перед «dpi», «lpi» и «ppi». Default, Lebedev, Typograf, Gost №5 и §3 и ¶3 и 600 dpi → №5 и §3 и ¶3 и 600_dpi
common/nbsp/nowrap Снятие неразрывных пробелов внутри тегов nobr и nowrap. Default, Lebedev, Typograf, Gost <nobr>в_доме</nobr> и в доме → <nobr>в доме</nobr> и в доме
common/other/repeatWord Удаление повтора слова. Вне Default: правило стирает слово, то есть меняет текст, а не оформление. — 1990 г.г. и XIX в. в. и P.S. и 100 м2 → 1990 г.г. и XIX в. и P.S. и 100 м2
ru/date/fromISO Дата вида ГГГГ-ММ-ДД приводится к виду ДД.ММ.ГГГГ. Default, Lebedev, Typograf, Gost Дата 2026-09-10, 9 Сентября 2026, 2 мая, Понедельник → Дата 10.09.2026, 9 Сентября 2026, 2 мая, Понедельник
ru/date/weekday Название месяца и дня недели пишется со строчной буквы. Default, Lebedev, Typograf, Gost Дата 2026-09-10, 9 Сентября 2026, 2 мая, Понедельник → Дата 2026-09-10, 9 сентября 2026, 2 мая, понедельник
ru/money/currency Символ валюты переносится за число: «$100» становится «100 $». — $100 и 50 руб. и повтор повтор слова и зАмок → 100_$ и 50 руб. и повтор повтор слова и зАмок
ru/money/ruble «1 руб.» становится «1 ₽». — $100 и 50 руб. и повтор повтор слова и зАмок → $100 и 50_₽ и повтор повтор слова и зАмок
ru/nbsp/abbr Неразрывный пробел в сокращениях, например «т. д.». Default, Lebedev, Typograf, Gost 1990 г.г. и XIX в. в. и P.S. и 100 м2 → 1990 г.г. и XIX в._в._и P.S. и 100 м2
ru/nbsp/addr Неразрывный пробел после адресных сокращений: «г.», «ул.», «д.», «кв.». Default, Typograf, Gost А. С. Пушкин.</p> → А. С._Пушкин.</p>
ru/nbsp/afterNumberSign Узкий неразрывный пробел после знака номера. Default, Lebedev, Typograf, Gost №5 и §3 и ¶3 и 600 dpi → №_5 и §3 и ¶3 и 600 dpi
ru/nbsp/beforeParticle Неразрывный пробел перед частицами «ли», «ль», «же», «бы», «б». Default, Lebedev, Typograf, Gost <b>А</b>- б → <b>А</b>-_б
ru/nbsp/centuries «в. в.» приводится к «вв.» с неразрывным пробелом перед ним. Default, Lebedev, Typograf, Gost 1990 г.г. и XIX в. в. и P.S. и 100 м2 → 1990 г.г. и XIX_вв. и P.S. и 100 м2
ru/nbsp/dayMonth Неразрывный пробел между числом и названием месяца. Default, Lebedev, Typograf, Gost 10:00-11:00 и 5-10 января → 10:00-11:00 и 5-10_января
ru/nbsp/initials Привязка инициалов к фамилии. Default, Lebedev, Typograf, Gost Пушкин А. → Пушкин_А.
ru/nbsp/m «м2» и «м3» с квадратным и кубическим знаком и неразрывным пробелом. Default, Lebedev, Typograf, Gost 1990 г.г. и XIX в. в. и P.S. и 100 м2 → 1990 г.г. и XIX в. в. и P.S. и 100_м²
ru/nbsp/mln Неразрывный пробел перед «тыс.», «млн», «млрд» и «трлн». Default, Lebedev, Typograf, Gost ООО Ромашка купило 10 млн на 5 тыс. руб. в 2012 г. → ООО Ромашка купило 10_млн на 5_тыс. руб. в 2012 г.
ru/nbsp/ooo Неразрывный пробел после «ООО», «ОАО», «ЗАО», «НИИ» и им подобных. Default, Lebedev, Typograf, Gost ООО Ромашка купило 10 млн на 5 тыс. руб. в 2012 г. → ООО_Ромашка купило 10 млн на 5 тыс. руб. в 2012 г.
ru/nbsp/page Неразрывный пробел после «стр.», «гл.», «рис.», «илл.». Default, Lebedev, Typograf, Gost А. С. Пушкин.</p> → А. С._Пушкин.</p>
ru/nbsp/ps Неразрывный пробел внутри «P. S.» и «P. P. S.». Default, Lebedev, Typograf, Gost 1990 г.г. и XIX в. в. и P.S. и 100 м2 → 1990 г.г. и XIX в. в. и P._S. и 100 м2
ru/nbsp/rubleKopek Неразрывный пробел перед «руб.», «коп.» и их однобуквенными формами. Default, Lebedev, Typograf, Gost $100 и 50 руб. и повтор повтор слова и зАмок → $100 и 50_руб. и повтор повтор слова и зАмок
ru/nbsp/see Неразрывный пробел после «см.» и «им.». Default, Lebedev, Typograf, Gost ул. Ленина, д. 5, кв. 7 и стр. 15, см. рис. 3 → ул. Ленина, д. 5, кв. 7 и стр. 15, см._рис. 3
ru/nbsp/year Неразрывный пробел между годом и сокращением «г.» или «гг.». Default, Lebedev, Typograf, Gost А.С. Пушкин писал в 3 г. IV в. до н. э. → А.С. Пушкин писал в 3_г. IV в. до н. э.
ru/nbsp/years «г.г.» приводится к «гг.» с неразрывным пробелом перед ним. Default, Lebedev, Typograf, Gost 1990 г.г. и XIX в. в. и P.S. и 100 м2 → 1990_гг. и XIX в. в. и P.S. и 100 м2
ru/other/accent Ударение: единственная прописная буква внутри слова становится строчной со знаком ударения. Вне Default: правило меняет запись слова. — $100 и 50 руб. и повтор повтор слова и зАмок → $100 и 50 руб. и повтор повтор слова и за́мок
ru/other/phone-number Телефонный номер приводится к виду «+7 999 123-45-67» с неразрывными пробелами. Default, Lebedev, Typograf, Gost Телефон +7 (999) 123-45-67 и артикул 89991234567890 → Телефон +7_999_123-45-67 и артикул 89991234567890
ru/typo/switchingKeyboardLayout Замена латинских букв на русские при ошибке раскладки. По умолчанию выключено. Правило зарегистрировано (участвует в RuleSet, проходит RuleId@)), но пока НЕ ДЕЙСТВУЕТ: ни одна фаза конвейера его не читает, включение через RuleId[]) ничего не меняет в выводе. Реализация ждёт следующей версии. Typograf —

Фаза Layout (7)

Правило Что делает Пресеты Пример
common/html/e-mail Адрес электронной почты становится ссылкой. Вне Default по той же причине, что и Url. — <a href="#">http://a.ru</a> и m@e.com → <a href="#">http://a.ru</a> и <a href="mailto:m@e.com">m@e.com</a>
common/html/nbr Перевод строки размечается тегом переноса. То же, что UseBr: включено любое из двух — тег ставится. Вне Default; гарантия 5 на него не распространяется — прогон по собственному выводу вкладывает теги повторно. — ⏎⏎⏎ → <br />⏎<br />⏎<br />⏎
common/html/p Абзацы оборачиваются тегом абзаца. То же, что UseP: включено любое из двух — теги ставятся. Вне Default. — → <p> </p>
common/html/url Веб-адрес в тексте становится ссылкой. Вне Default: правило делает тег из текста, а гарантия 4 обещает, что правила Default так не поступают. — Ссылка https://a.ru/?x=1&amp;y=2 в тексте → Ссылка <a href="https://a.ru/?x=1&amp;y=2">https://a.ru/?x=1&amp;y=2</a> в тексте
ru/optalign/bracket Открывающая скобка выносится за левый край набора. — (c) 2026, (tm) и (r) → <span class="typograf-oa-n-lbracket">(</span>c) 2026,<span class="typograf-oa-sp-lbracket"> </span><span class="typograf-oa-lbracket">(</span>tm) и<span class="typograf-oa-sp-lbracket"> </span><span class="typograf-oa-lbracket">(</span>r)
ru/optalign/comma Запятая выносится за правый край набора. — (c) 2026, (tm) и (r) → (c) 2026<span class="typograf-oa-comma">,</span><span class="typograf-oa-comma-sp"> </span>(tm) и (r)
ru/optalign/quote Открывающая кавычка выносится за левый край набора. — «закон "О стандартизации"» → <span class="typograf-oa-n-lquote">«</span>закон "О стандартизации"»

Фаза Emit (2)

Правило Что делает Пресеты Пример
common/html/escape Экранирование разметки: документ выходит текстом. Вне Default, единственное исключение из гарантии 3, и неподвижной точки не имеет — на втором прогоне «&» станет «&amp;», поэтому гарантия 5 на него тоже не распространяется. — "цитата" → &quot;цитата&quot;
common/html/stripTags Удаление тегов. НЕ РЕАЛИЗУЕТСЯ: это санитайзинг, а не типографика, и он противоречит гарантии 3, которая обещает разметку байт в байт. Имя зарегистрировано ради паритета с JS-typograf, чтобы RuleId@) его узнавал, а справочник правил был полным. — —