Как проверяется шрифт · Ipak

> Что и зачем проверяется в рабочем шрифте Ipak Davlat перед выпуском: автоматические проверки, четыре направления проверки, тест подстановки на реальных словах и замер вместо оценки на глаз.

[Oʻzbekcha](https://ipak.xronocode.com/jarayon/eight-rounds/index.md) · [English](https://ipak.xronocode.com/en/jarayon/eight-rounds/index.md) · [Русский](https://ipak.xronocode.com/ru/jarayon/eight-rounds/index.md) · [Español](https://ipak.xronocode.com/es/jarayon/eight-rounds/index.md) · [Português](https://ipak.xronocode.com/pt/jarayon/eight-rounds/index.md) · [中文](https://ipak.xronocode.com/zh/jarayon/eight-rounds/index.md)

[Процесс]

# Как проверяется шрифт

Что и зачем проверяется в рабочем шрифте Ipak Davlat перед выпуском: автоматические проверки, четыре направления проверки, тест подстановки на реальных словах и замер вместо оценки на глаз.

Ipak Davlat — рабочий шрифт библиотеки Ipak. Он построен на открытом шрифте Overpass, к которому добавлен узбекский слой: знаки ʻ и ʼ, кернинг кириллицы с Ў Қ Ғ Ҳ, буквы Ö Ğ Ş Ç, варианты для табличек. Прежде чем выложить шрифт, его проверяют. Ниже — что именно проверяется, зачем и как.

## Правило выпуска

Шрифт выпускается, только когда две независимые проверки подряд не нашли ничего, что нужно исправлять. Если после проверки что-то поправили, следующая начинается с нуля.

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

## Автоматические проверки

Сначала шрифт проходят программы. Они не оценивают красоту, зато не пропускают технических ошибок.

**Font Bakery** — открытый набор проверок шрифта: имена и метрики в файле, наличие нужных знаков, корректность таблиц. У Ipak Davlat замечания, которые остались, относятся к основе Overpass, а не к узбекскому слою.

**OTS (OpenType Sanitizer)** — проверка, через которую браузеры Chrome и Firefox пропускают веб-шрифты перед загрузкой. Если OTS отвергнет файл, сайт его просто не покажет. Ipak Davlat проходит её без замечаний.

## Четыре направления проверки

Программы не скажут, читается ли табличка с другого конца зала. Поэтому шрифт смотрят люди, каждый со своей задачей.

| Направление | Что смотрит |
| --- | --- |
| Типографика | отступы между буквами, кернинг, знаки ʻ ʼ в сочетаниях, ровность набора |
| Узбекский язык | правильные символы, орфография примеров, подстановка знаков, буквы Ö Ğ Ş Ç и кириллица |
| Вывески и навигация | читаемость прописными, издалека и мелким кеглем; стрелки, цифры, макеты табличек |
| Техника и лицензия | сборка, автоматические проверки, имена в файле, соблюдение лицензии основы, точность текста на странице шрифта |

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

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

![Макет табло аэропорта, набранный Ipak Davlat](https://ipak.xronocode.com/images/p/eight-rounds/mockup-davlat-wayfinding.png)

*Макет табло аэропорта, набранный Ipak Davlat: стрелки, цифры и средняя точка проверяются в составе таблички, а не по отдельности Ipak; шрифт — SIL OFL 1.1 · CC BY 4.0 · Ipak*

## Что находит такая проверка

Примеры замечаний, которые проверка находила в Ipak Davlat:

**Средняя точка без места.** В основе «·» была помечена как надстрочный знак и садилась на предыдущую букву: «5·10» читалось как «510». Подробно — в статье «Вывеска издалека».

**I и l, O и 0.** На табличке их не различить издалека. Появились l с хвостиком и набор с перечёркнутым нулём.

**Подстановка в чужих языках.** Английское King's превращалось в Kingʻs. Для английского, немецкого, французского, русского и ряда других языков подстановку выключили, а для 's в конце слова сделали исключение.

**Неразмеченный текст на сайте.** Если язык страницы не указан, браузер берёт язык интерфейса, и подстановка не срабатывает. Образцы на портале размечены как узбекские.

**Стрелки разной ширины и высоты.** Стрелки нарисованы заново из одного контура, с общим центром.

Самые коварные ошибки появляются не в основе, а в собственных исправлениях. Пример — правило для ng. В узбекском ng — одна буква, и после неё в конце слова знак ʻ не нужен: ‘tong’ не должно становиться ‘tongʻ. Первое исключение для этого случая оказалось слишком широким и сломало qoʻngʻiroq, changʻi и toʻngʻich — слова, ради которых подстановка и существует. Другой пример: l с хвостиком сначала заменила сам рисунок l, и вместе с ней хвост получили ĺ ļ ľ и лигатура fl, которые от этого слиплись с соседями. Теперь хвостатая l — отдельный знак.

**Справка.** Регрессия — ошибка, которая появляется в уже работавшем месте после исправления другого. Регрессионный тест — набор примеров, которые прогоняют после каждой правки, чтобы старое не сломалось незаметно.

## Тест на реальных словах

Чтобы такие ошибки не возвращались, подстановка проверяется тестом. В нём записаны слова так, как их набирают с обычной клавиатуры, язык текста и то, что должен показать шрифт. Например, qo'ng'iroq должно стать qoʻngʻiroq, ‘tong’ — остаться ‘tong’, а английское King's в тексте, размеченном как английский, не меняется. Тест набирает каждое слово движком HarfBuzz — тем же, что работает в браузерах, — в обоих начертаниях и сравнивает выбранные знаки с ожидаемыми.

Правило простое: каждое найденное замечание о подстановке становится новой строкой теста, и тест запускается после каждой сборки.

![Слева — текст, набранный обычной клавиатурой. Справа — что показывает Ipak Davlat Bold с подстановкой знаков](https://ipak.xronocode.com/images/p/eight-rounds/calt-real-words.png)

*Слева — текст, набранный обычной клавиатурой. Справа — что показывает Ipak Davlat Bold с подстановкой знаков Ipak; рендер HarfBuzz из IpakDavlat-Regular.ttf и IpakDavlat-Bold.ttf v0.1; шрифт — SIL OFL 1.1 · CC BY 4.0 · Ipak*

Тест закрепляет и известное ограничение. Заимствование на -g в кавычках, например 'pedagog', получает ʻ на конце: по набранным символам его не отличить от узбекского bogʻ. Отличить их можно только по словарю, а шрифт словаря не знает. Тест следит, чтобы это поведение не менялось незаметно.

## Замер вместо оценки на глаз

Спорные места решаются цифрами. При проверке было замечание: знак ʻ почти касается G, около 1 % кегля. Если бы это подтвердилось, шрифт нельзя было бы выпускать.

Пару измерили. Буквы отрисовали в растр крупно, 2000 единиц на кегль, и посчитали кратчайшее расстояние между контурами G и знака. Вышло 145 единиц в Regular и 119 в Bold, то есть 7,3 % и 6,0 % кегля. Независимый замер другим способом дал близкие числа: 7,8 % и 7,0 %. Порог, который предлагался в самом замечании, выполнен с запасом. Знак стоит близко к G намеренно: он должен читаться частью буквы Gʻ, а не отдельной кавычкой.

Замечание отклонили, а вместе с решением записали числа и способ замера.

![Знак ʻ рядом с G в Ipak Davlat Bold. Красная линия — кратчайшее расстояние между контурами, около 6 % кегля](https://ipak.xronocode.com/images/p/eight-rounds/g-okina-gap.png)

*Знак ʻ рядом с G в Ipak Davlat Bold. Красная линия — кратчайшее расстояние между контурами, около 6 % кегля Ipak; рендер HarfBuzz из IpakDavlat-Bold.ttf v0.1; шрифт — SIL OFL 1.1 · CC BY 4.0 · Ipak*

**Справка.** Отклонить замечание — не то же самое, что отмахнуться. Отказ допустим, только если его можно проверить: указаны метод, числа и независимое подтверждение.

## Правила, которые из этого следуют

**Пока шрифт проверяют, файл не меняют.** Все проверяющие смотрят одну и ту же сборку. Правки вносятся после.

**Каждая правка подстановки — со строкой в тесте.**

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

**Пожелания отдельно от правок.** То, что не мешает выпуску, ждёт следующей версии.

## Итог

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

## Источники

Инструменты проверки: Font Bakery, OpenType Sanitizer (OTS), HarfBuzz; описание фичи calt — спецификация OpenType; основа шрифта — Overpass. Замеры и тест — собственные, на сборке Ipak Davlat v0.1, октябрь 2026 года.

Ссылки:

Font Bakery — проверка шрифтов. [https://github.com/fonttools/fontbakery](https://github.com/fonttools/fontbakery)

OpenType Sanitizer (OTS). [https://github.com/khaledhosny/ots](https://github.com/khaledhosny/ots)

HarfBuzz — движок набора текста. [https://harfbuzz.github.io/](https://harfbuzz.github.io/)

OpenType: фича calt (Contextual Alternates). [https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae#tag-calt](https://learn.microsoft.com/en-us/typography/opentype/spec/features_ae#tag-calt)

Overpass — открытая основа Ipak Davlat. [https://github.com/RedHatOfficial/Overpass](https://github.com/RedHatOfficial/Overpass)

---
Страница: https://ipak.xronocode.com/ru/jarayon/eight-rounds/ · SIL Open Font License 1.1 · avenex@xronocode.com
