Как выровнять вырезки букв из шаблона по базовой линии

Если вырезать каждую букву по плотному контуру чернил и затем центрировать её в одинаковом прямоугольнике, строка часто начинает «прыгать»: короткие знаки поднимаются, а буквы с выносными элементами опускаются. Надёжнее сохранять для каждой вырезки одну и ту же точку привязки — базовую линию исходной ячейки — и менять только положение на холсте, не масштабируя сам рисунок.
Почему вырезки по контуру дают неровную строку
Плотная обрезка полезна, когда нужно удалить лишнюю бумагу, но она стирает координатный контекст. У буквы «н» чернильный контур обычно занимает сравнительно компактную область, а у «р» нижний выносной элемент добавляет площадь ниже строки. Если обе фигуры автоматически центрировать по их ограничивающим рамкам, их общая линия основания перестанет совпадать.
Ограничивающая рамка описывает только границы пикселей с чернилами. Она не сообщает, где у буквы находится базовая линия, насколько высока строчная зона и какие части должны выступать вверх или вниз. Поэтому геометрически ровные рамки могут дать типографически неровный ряд, а визуально крупные буквы начнут казаться смещёнными.
Базовая линия в этом процессе — координата, к которой привязаны основания обычных букв строки. Это не центр клетки и не нижний край самого тёмного пятна. Нижние элементы вроде хвоста «у» могут уходить ниже, а верхние элементы и точки — выше; привязка остаётся общей.
Что подготовить до нарезки
Для уверенной привязки нужны исходное изображение шаблона, координаты ячеек после всех поворотов и коррекций, а также положение базовой линии для каждого ряда. Если шаблон ещё можно изменить, добавьте тонкую направляющую в области основания знаков и отметьте её на полях, чтобы линия не проходила через сами штрихи.
Если шаблон уже заполнен, найдите опорные буквы с хорошо различимым основанием: например, строчные «н», «м» или «о». Сравните их нижние точки в нескольких ячейках одного ряда. Используйте повторяющийся уровень, а не крайнюю точку отдельной буквы: у округлых форм контур может немного выходить за общую линию, и это оптическая поправка рисунка, а не ошибка координат.
До разметки решите, какого размера будет холст каждой вырезки и где на нём находится базовая линия. Холст может быть шире или выше самого глифа; это запас для выносных элементов и будущего размещения. Важное условие — одинаковая система координат для всего набора, а не одинаковая площадь чернил.
Пошаговый способ сохранить базовую линию
1. Зафиксируйте геометрию всего листа
Сначала примените к изображению поворот, отражение, коррекцию перспективы и обрезку листа. Только после этого вычисляйте ячейки и базовую линию. Если изменить изображение после измерений, сохранённые координаты будут указывать на прежнее расположение пикселей.
Когда лист выровнен, проверьте несколько ячеек слева, в центре и справа. Их границы и направляющая должны следовать одному преобразованию. Для листа, снятого под углом, базовая линия тоже должна быть преобразована вместе с сеткой, а не проведена заново горизонтально поверх уже выправленных ячеек.
2. Определите базовую линию отдельно от чернильного контура
Запишите вертикальную координату линии в системе изображения или ячейки. Если все ряды шаблона одинаковы, можно хранить одно значение относительно ячейки. Если у строк есть разные зоны для прописных, строчных или знаков с диакритикой, сохраняйте параметры каждого ряда отдельно.
Для слегка изогнутого или деформированного листа координата может меняться по ширине. Не выпрямляйте такую линию одной константой, если сетка после коррекции остаётся кривой: измерьте её по нескольким опорным местам и привяжите локальную линию к соответствующим участкам ряда. При заметной деформации сначала исправьте изображение, затем пересчитайте и сетку, и базовую линию.
3. Создайте вырезку с постоянным холстом
Вырезайте ячейку по её геометрическим границам, оставляя вокруг рисунка достаточно свободного пространства. Затем перенесите содержимое на холст стандартного размера так, чтобы базовая линия исходной ячейки всегда попадала на одну и ту же горизонтальную координату. Меняется положение изображения на холсте, а не его ширина или высота.
Для примера представьте ячейку с «н» и соседнюю с «р». На холсте одинакового размера обе буквы должны встретиться с общей линией в точке основания. У «р» нижний хвост займёт пространство под линией; у «н» это пространство останется пустым. Если центрировать оба контура по их прямоугольникам, эта разница исчезнет неправильно: основания разойдутся.
4. Сохраните верхние и нижние выносы
До пакетной обработки проверьте самые высокие и самые низкие знаки. Точка над «ё», верхний элемент прописной или нижний выносной штрих не должны обрезаться ради общего размера холста. Если глиф не помещается, увеличьте единый холст для всего ряда или пересмотрите границы ячейки; индивидуальное уменьшение проблемной буквы нарушит общий масштаб.
Если часть штриха касается края ячейки, сначала убедитесь, что это действительно буква, а не линия сетки или соседняя пометка. Не сдвигайте базовую линию только ради одного такого случая. Сохраняйте исходник и отметьте спорную вырезку для ручной проверки, чтобы не внести незаметную ошибку во весь алфавит.
5. Проверьте набор в строке
Соберите тестовую строку с формами разной высоты и с разными выносами: «молоко», «рукопись», «у моря», «ёж». Добавьте прописные, если они входят в набор. Смотрите прежде всего на общий уровень оснований, а затем — на то, не пропали ли точки, хвосты и верхние элементы.
Если одна буква визуально кажется ниже, сравните её координату базовой линии в исходной ячейке и на итоговом холсте. Не корректируйте её только потому, что пятно чернил несимметрично. Иногда причина — наклон самого штриха; иногда — ошибочная привязка ячейки; иногда — намеренная форма. Эти ситуации требуют разных решений.
Как хранить координаты и проверять результат
Сохраняйте для каждого знака идентификатор ячейки, прямоугольник вырезки, координату базовой линии и величину переноса на холст. Тогда можно пересобрать ряд без повторного поиска знаков и увидеть, какая операция сдвинула конкретную букву. Для контроля достаточно простой ведомости, где одна строка соответствует одной вырезке.
- Идентификатор — Ряд, столбец и ожидаемый знак — Не перепутать порядок букв
- Границы ячейки — Координаты левого, верхнего, правого и нижнего края — Повторить вырезку из исходника
- Базовая линия — Координата в исходном изображении — Привязать основание к общей линии
- Перенос на холст — Смещение по горизонтали и вертикали — Воспроизвести размещение без масштабирования
- Проверка — «Готово», «обрезан штрих», «нужен просмотр» — Найти исключения до сборки шрифта
Таблица не обязана храниться вручную: подойдёт метаданный файл рядом с изображениями, если он сохраняет те же поля и порядок. Главное — не оставлять координаты только в памяти редактора или в названии файла, которое потом невозможно сопоставить с исходной ячейкой.
Уровни шрифта и базовая линия связаны, но не взаимозаменяемы с рамкой изображения. В OpenType, например, метрики sTypoAscender и sTypoDescender задают вертикальные параметры строки для шрифта в целом; это не означает, что отдельные чернильные контуры надо центрировать в собственных прямоугольниках. Подробности приведены в спецификации таблицы OS/2. На этапе оцифровки сохраняйте привязку каждого знака, а общие метрики настраивайте отдельно при сборке.
Чеклист перед пакетной обработкой
- Применить все повороты и геометрические исправления до измерения ячеек.
- Проверить положение направляющей в начале, середине и конце каждого ряда.
- Задать общий размер холста и единый уровень базовой линии.
- Переносить вырезку на холст без индивидуального масштабирования.
- Проверить буквы с диакритикой, верхними и нижними выносами.
- Сверить итоговую строку с исходными ячейками и сохранить спорные случаи.
Частые ошибки при выравнивании вырезок
Центрировать каждое чернильное пятно по рамке. Тогда буква с нижним выносом получит другое основание, чем знак без него. Выравнивайте от общей линии ячейки, а контур оставляйте в исходном масштабе.
Менять размер только «неудобных» знаков. Индивидуальное уменьшение длинной или высокой буквы делает её визуально слабее соседних. Сначала увеличьте общий холст или исправьте границы ячейки, затем проверьте строку снова.
Считать нижний пиксель каждой буквы базовой линией. У округлых форм и рукописных наклонов край чернил не обязан совпадать с теоретической линией. Определяйте координату по направляющей или по нескольким буквам одного ряда.
Пересчитывать координаты после поворота без пересборки разметки. Метаданные изображения, разворот сканера и коррекция перспективы меняют систему координат. После каждой такой операции пересоздавайте карту ячеек и привязку линии.
Проверять только одну строку. Ошибка может появиться локально: в середине деформированного листа или в ряду другого размера. Просматривайте контрольные буквы из каждого ряда и края, центр и противоположный край листа.
Часто задаваемые вопросы
Нужно ли центрировать буквы по чернильному контуру?
Нет, если важно сохранить общую строку. Центрирование по пятну меняет положение букв с разными выносными элементами. Используйте одинаковую базовую линию ячейки и фиксированный холст; оптические поправки делайте отдельно после просмотра набора.
Можно ли выровнять базовую линию, если в шаблоне нет направляющей?
Можно восстановить её по нескольким буквам одного ряда, у которых основание читается отчётливо. Сопоставьте «н», «м» или «о» в разных ячейках и найдите повторяющийся уровень. Проверьте результат на буквах с нижними элементами, не используя их край как опорную линию.
Нужно ли масштабировать буквы до одинаковой высоты?
Нет, одинаковая высота чернильной рамки не является целью вырезки. Сохраните исходный масштаб рисунка и общий холст, привязывая символы к базовой линии. Отношения высот строчных, прописных и диакритики настраиваются позже как часть проектирования шрифта.
Что делать, если базовая линия слегка наклонена на скане?
Сначала выправьте страницу и сетку единым преобразованием, затем пересчитайте координаты. Если после коррекции остаётся изгиб, задайте локальную линию по нескольким точкам ряда. Не выравнивайте каждую букву независимо: это скрывает деформацию исходника и ломает согласованность набора.
Одинаковый размер PNG гарантирует ровную строку?
Нет. Файлы одинакового размера могут содержать контуры, поставленные на разной высоте внутри холста. Ровную строку обеспечивает общая точка привязки и единая координата базовой линии, а не только одинаковые пиксельные размеры файлов.
Как проверить буквы с нижними выносами?
Поставьте в одну тестовую строку буквы без выносных элементов и знаки с ними, например «н», «р» и «у». Сверьте их основания с общей линией, затем убедитесь, что нижние части не обрезаны. Не поднимайте буквы с выносом ради визуального центра чернильной рамки.
Когда допустима ручная оптическая поправка?
После того как все вырезки геометрически привязаны к одной линии и просмотрены в строке. Ручная поправка подходит для конкретного оптического дисбаланса, но должна быть записана отдельно от координат шаблона. Так можно вернуться к исходному расположению и отличить дизайн-решение от ошибки нарезки.
Итог
Чтобы буквы не прыгали по строке, вырезайте их в координатах выровненного шаблона, храните базовую линию отдельно от границ чернил и размещайте изображения на холсте общего размера без индивидуального масштабирования. Когда набор символов и образцы уже готовы, создайте шрифт на Fontgenerator, а результат проверьте в нескольких словах и строках.