Все статьи
24 сентября 2026 г.8 мин чтения

Как собрать регрессионный набор для смешанного текста на кириллице и латинице

Как собрать регрессионный набор для смешанного текста на кириллице и латинице

Короткий регрессионный набор для смешанного текста — это несколько заранее выбранных строк, которые повторно проверяют после каждой сборки шрифта. Он показывает, не выпала ли латинская буква или диакритика, не изменился ли ритм на стыке алфавитов и не стала ли строка хуже читаться в реальном контексте. Такой набор не заменяет полный тест языкового охвата: его задача — быстро и воспроизводимо ловить знакомые дефекты.

Почему тестировать нужно именно смешанные строки

Отдельные образцы кириллицы и латиницы подтверждают, что обе группы букв в целом присутствуют, но не показывают, как они встречаются в одном слове или фразе. В реальном интерфейсе русский текст может включать латинскую модель устройства, адрес электронной почты, валютный код, название тарифа или короткую команду. В таких местах меняются высота строчных, ширина букв, насыщенность и форма цифр; глаз замечает скачок быстрее, чем в двух раздельных алфавитных строках.

Смешение бывает намеренным: «Пакет Pro», «код A7», «офис B» или техническое имя `HttpClient`. Оно бывает и неожиданным: в слово попала буква из другого алфавита, либо система вывела недостающий знак резервным шрифтом. Эти случаи требуют разных решений. Сначала выясняют, какие символы действительно нужны продукту, затем проверяют их начертание, интервалы и отображение в используемом приложении.

Регрессионный набор полезен после каждой содержательной правки: замены исходного рисунка, изменения метрик, повторного экспорта или добавления новых символов. Если сравнивать одни и те же строки при одинаковых условиях, легко увидеть побочный эффект: например, новый акцент не обрезан, но из-за него соседняя латинская буква стала выглядеть слишком тесно.

Зафиксируйте задачу и состав текста

Перед составлением примеров запишите, где будет использоваться шрифт и кто читает текст. Для русскоязычного каталога достаточно частых латинских названий моделей; для интерфейса с английской локалью нужны реальные подписи и команды на английском; для международной базы фамилий могут понадобиться конкретные диакритические знаки. Не заявляйте поддержку языка только по наличию базового набора A–Z: нужные буквы определяет продуктовый сценарий.

Соберите короткий перечень источников текста: строки интерфейса, названия товаров, имена, артикулы, технические обозначения и локализованные подписи. Оставьте только реальные случаи. Если пользователь видит “Model X2” и “Состояние: READY”, обе формы полезнее, чем случайная длинная фраза, в которой все символы можно проверить только по алфавиту.

Соберите набор из пяти типов строк

1. Обычная фраза с латинским названием

Проверьте естественный ритм языка и место вставки. Например: «Настройка Pro доступна в разделе Мои проекты». Нужен вариант с названием в начале или в середине фразы, а не только изолированное слово: соседние кириллические буквы и пробелы меняют впечатление от пропорций. Если латинские вставки всегда набраны другим начертанием, зафиксируйте это как отдельное правило, а не как случайное решение в каждом макете.

2. Строка с кодом, цифрами и разделителем

Добавьте пример, похожий на содержимое интерфейса: «Канал A-12 · версия 2.4». Это помогает заметить, насколько согласованы цифры, латинские прописные, дефис, точка и знак-разделитель. Не превращайте строку в упражнение по всей пунктуации: включайте только те знаки, которые действительно соседствуют с латиницей в продукте.

3. Строка с нужными диакритическими знаками

Если сценарий содержит имена или термины на европейских языках, выпишите именно требуемые буквы из данных продукта. Например, тестовый пакет для польских фамилий может содержать Ł, ł и ą; для французских — é, è, ç. Выбирайте пары верхнего и нижнего регистра, только если обе реально встречаются. Сохраните оригинальное написание; не подменяйте редкий символ похожей базовой латинской буквой ради удобства набора.

Список таких букв лучше хранить отдельно от строк. Тогда видно, какой знак проверяет каждый пример, и легче обновить тест при расширении продукта. Когда данные поступают из разных систем, дополнительно фиксируйте исходный текст и кодовые точки спорных символов: визуально одинаковые символы могут быть представлены разными последовательностями, что влияет на поиск причины сбоя.

4. Пара намеренно похожих букв

В русских словах латинские `a`, `e`, `o`, `p`, `c`, `x` могут быть похожи на кириллические `а`, `е`, `о`, `р`, `с`, `х`. Пара “руcский” (с латинской c) и “русский” (с кириллической с) помогает проверить, что вы контролируете состав строки, а не угадываете его глазами. Используйте такие пары в редакторской проверке и тестовых данных, но не превращайте их в образец обычной орфографии. Unicode описывает Script и Script_Extensions для классификации символов, однако типографская задача всё равно требует смотреть на реальные слова и контекст, а не полагаться на цветовое деление алфавита в редакторе. Unicode Standard Annex #24 описывает свойства Script и Script_Extensions.

5. Самая длинная реальная вставка

Найдите строку, где рядом стоят кириллическое пояснение и длинное латинское имя: например, “Синхронизация через TeamWorkspace”. Она проверяет не только глифы, но и то, не распадается ли надпись на два визуально несвязанных куска. Не выбирайте экстремально длинный псевдотекст: нужен случай, который действительно встречается и может переполнить реальный контейнер.

Как проверить причину, если одна буква выглядит чужой

Сначала сравните исходную строку посимвольно с эталоном: проверьте регистр, похожие буквы и диакритику. Затем убедитесь, что в тестируемом экземпляре шрифта есть нужные символы. В файле OpenType таблица `cmap` связывает входные символы с глифами; документация fontTools описывает её как Character to Glyph Index Mapping. Если отображение неожиданное, проверяйте именно сборку и её карту символов, а не исправляйте текст заменой буквы на внешне похожую.

Дальше смотрите, как строка ведёт себя в целевой среде: установлен ли выбранный файл, применилось ли нужное начертание и не сработал ли fallback для отдельного знака. Сравните целиком слово и соседние элементы. Если странно выглядит только один глиф во всех приложениях, вероятна проблема рисунка или экспорта; если расхождение есть только в одном браузере или редакторе, отдельно проверьте загрузку шрифта, CSS, язык текста и настройки программы. Для пар вроде русской и латинской `c` сравнение нужно делать при увеличении и в обычном размере, чтобы не перепутать различие алфавита с разницей метрик.

Повторяйте сравнение при одинаковых условиях

Сохраните эталонный текст без ручного перепечатывания, файл и версию шрифта, размер, приложение, устройство и способ вывода. Для печати отметьте размер и режим принтера; для браузера — страницу и правила подключения файла. Сделайте снимок строк до внесения правки, а после экспортируйте новую сборку с теми же настройками. Сравнивайте пары «до / после» рядом, не полагаясь на память.

Разделяйте два результата. Проверка покрытия отвечает на вопрос «есть ли каждый нужный символ в файле и отрисовался ли он?». Проверка качества отвечает на вопросы «похож ли он на остальную систему?», «не нарушает ли слово ритм?» и «остается ли строка читаемой в целевом размере?». Если глиф отсутствует, визуальное впечатление в конкретном редакторе может быть обманчивым из-за замены резервным шрифтом. Проверьте карту символов и факт применения файла до того, как менять интервалы.

Частые ошибки при составлении теста

  • Собирать только алфавитные строки: они не показывают реальный стык кириллицы, латиницы, цифр и пробелов.
  • Включать все символы мира: слишком большой случайный набор трудно проверять; начните с данных своего сценария и отдельно отметьте требуемый охват.
  • Перепечатывать тест вручную перед каждой проверкой: опечатка меняет сам тест. Храните неизменный файл или строку-эталон.
  • Считать отображение символа доказательством, что его рисует целевой шрифт: сначала исключите fallback и проверьте конкретную сборку.
  • Судить о форме только по увеличенному образцу: проверяйте и крупно, и в том размере, где строку увидит читатель.
  • Исправлять неверный символ косметической заменой: сначала установите, какая буква действительно нужна в исходном языке.

Чек-лист перед выпуском новой сборки

  • Выбраны реальные фразы с латинскими вставками из продукта.
  • Отмечены нужные прописные, строчные, диакритические знаки, цифры и соседние разделители.
  • Тест включает обычный переход между алфавитами и хотя бы один сложный случай.
  • Эталонный текст сохранён вместе с версией файла и параметрами отображения.
  • Покрытие проверено отдельно от внешнего вида; fallback исключён.
  • Новая и предыдущая сборки сравнены в том же размере и приложении.
  • Если символ выглядит неверно, записаны исходная строка, место дефекта и шаг воспроизведения.

Частые вопросы

Сколько строк нужно оставить в регрессионном наборе?

Столько, чтобы каждая строка проверяла отдельный риск, а повторяющиеся примеры не дублировали друг друга. Для небольшого продукта начните с нескольких коротких строк по типам выше; расширяйте набор по фактическим локалям, именам и дефектам. Полнота языкового охвата проверяется отдельно.

Можно ли проверить латиницу одной фразой pangram?

Панграмма удобна как общий образец, но обычно не отражает реальные диакритические знаки, регистр, названия и переходы конкретного продукта. Используйте её как дополнительную строку, а основную часть набора составьте из настоящих подписей и значимых для пользователя примеров.

Как понять, что символ показан резервным шрифтом?

Сравните вид в целевом приложении с соседними буквами, проверьте, загружен ли файл и содержит ли его карта символов нужную кодовую точку. В вебе можно временно отключить резервное семейство для диагностики, а в настольной программе посмотреть выбранный шрифт и свойства текста. Сам по себе аккуратный вид символа ещё не доказывает, что его нарисовал ваш шрифт.

Нужно ли включать в набор смешанные буквы вроде латинской c в русском слове?

Да, если ваша задача включает выявление ошибочных подмен или тестирование данных, пришедших из нескольких источников. Храните такие примеры как специально помеченные диагностические строки. Не используйте их как обычные образцы русского набора: правильное написание слова остаётся кириллическим.

Что сравнивать при обновлении рисунка одной буквы?

Проверьте строку с этой буквой в её типичном окружении, пару верхнего и нижнего регистра при необходимости, а также строку на стыке латиницы и кириллицы. Убедитесь, что не изменились ширина, положение диакритики, соседние интервалы и поведение в нужном размере. Запишите замечание, чтобы следующая правка повторяла тот же сценарий.

Нужен ли отдельный набор для каждого языка?

Если продукт поддерживает несколько языков с разными знаками или правилами, храните отдельные примеры там, где они добавляют проверку. Общие строки могут использоваться совместно, а локальные — покрывать специфичные буквы и слова. Не объединяйте всё в один большой образец, который сложно поддерживать и разбирать.

Вывод

Регрессионный набор для смешанной кириллицы и латиницы строится вокруг настоящих сценариев: названий, кодов, локализованных слов и сложных сочетаний. Несколько коротких эталонных строк позволяют быстро сравнить сборки, но не заменяют полный анализ языкового охвата. Создайте или обновите рукописный шрифт в Fontgenerator, затем сохраните подходящие строки рядом с версией файла и используйте их при каждой следующей правке.