Открыть сервисСервис

Удаление глифов в шрифтах и текстовых редакторах

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

Что такое глиф и чем он отличается от символа

Символ — абстрактная единица текста (например, буква «А»), а глиф — её конкретное графическое воплощение. Один символ может иметь несколько глифов: обычное начертание, курсив, капитель, малые прописные, альтернативная форма. В Unicode закодированы символы, а не глифы; отображение символла как глифа определяет шрифт и используемые OpenType-функции.

Каждый шрифт содержит набор глифов, каждый из которых имеет собственный идентификатор — GID (Glyph ID). В шрифтах формата TrueType и OpenType глифы хранятся в таблицах glyf и CFF/CFF2 соответственно. Таблица cmap связывает кодовые точки Unicode с GID.

Причины удаления глифов

Основные сценарии, при которых возникает необходимость убрать глиф:

  • Оптимизация веб-шрифтов. Полный шрифт может содержать тысячи глифов, включая редкие символы, лигатуры, стилизованные наборы. Для веба формируют подмножество (subset) только нужных глифов, что сокращает размер файла в десятки раз.
  • Исправление вёрстки. В тексте могут оказаться нежелательные символы — невидимые управляющие знаки, дублирующие глифы, символы из другой кодовой страницы, отображаемые как квадраты (tofu).
  • Подготовка к печати и публикации. Лишние глифы увеличивают время рендеринга и могут вызывать конфликты при экспорте в PDF.

Удаление глифа из текстового документа

В текстовых редакторах

В Microsoft Word, LibreOffice Writer и Google Docs удаление глифа — это обычное редактирование символа. Сложность возникает с невидимыми символами: неразрывными пробелами, мягкими переносами, управляющими кодами. В Word их отображают кнопкой «Показать все знаки» (¶). В LibreOffice — через меню «Вид» → «Форматирование» → «Невидимые знаки».

Для массового удаления используют функцию «Найти и заменить» с включённым регулярными выражениями или поиском по специальным кодам. Например, в LibreOffice Writer можно найти \n (перенос строки) или невидимые символы Unicode по диапазону кодов.

В графических редакторах

В Adobe Illustrator, CorelDRAW и подобных программах глиф может присутствовать как объект в кривых. Удаление выполняется стандартным инструментом Delete. Для удаления всех объектов, содержащих определённый глиф, используют поиск по символу или скрипты.

Удаление глифа из шрифта

Инструменты подмножеств

Для формирования подмножества шрифта (subsetting) используют:

ИнструментТипОсобенности
FontTools (Python)Библиотека, CLIpyftsubset — стандарт де-факто, работает с TTF/OTF/WOFF2
FontForgeGUI + CLIОткрытый редактор шрифтов с функцией удаления глифов
GlyphsmacOS GUIКоммерческий редактор для профессиональной разработки шрифтов
FontLabGUIПрофессиональный редактор шрифтов
online-font-toolsВеб-сервисыБыстрое подмножество без установки ПО

Пример команды подмножества через FontTools:

`` pyftsubset MyFont.ttf --unicodes="U+0020-007E,U+0410-044F" --output-file=subset.ttf ``

Команда оставляет только латиницу и кириллицу, удаляя все остальные глифы.

Ручное удаление в FontForge

В FontForge удаление глифа выполняется так: открыть шрифт, найти нужный глиф в окне шрифта, выбрать его, вызвать контекстное меню и выбрать «Clear» (очистить) или «Delete» (удалить). Очистка оставляет пустой глиф с сохранённым GID, удаление убирает его из набора и сдвигает последующие GID.

Автоматическое удаление неиспользуемых глифов

FontForge и FontTools умеют удалять глифы, на которые нет ссылок из таблицы cmap и из lookup-таблиц OpenType (лигатур, контекстных подстановок). Это позволяет очистить шрифт от «мёртвого» кода после редактирования.

Типичные проблемы при удалении глифов

  • Слом шрифтовых функций. Удаление глифа, участвующего в лигатурах или контекстных подстановках, ломает цепочки замен. Перед удалением проверяют GSUB/GPOS-таблицы.
  • Смещение GID. В старых форматах (TrueType) порядок глифов важен для некоторых приложений. Удаление из середины набора может сместить индексы.
  • Пустые глифы. Иногда вместо удаления глифа оставляют пустое начертание — символ отображается как пробел. Так поступают, когда нужно скрыть символ, сохранив структуру шрифта.
  • Конфликт с кернингом. Таблицы кернинга ссылаются на GID; после удаления глифов их необходимо перестроить.

Удаление глифов при вёрстке и программировании

В веб-разработке подмножество шрифта выполняют на этапе сборки: инструменты fonttools, glyphhanger, unicode-range в CSS позволяют отдавать пользователю только нужные глифы. В CSS свойство unicode-range задаёт, какие диапазоны символов загружать из конкретного файла шрифта, что косвенно исключает ненужные глифы из загрузки.

В LaTeX удаление глифа из текста выполняется стандартными средствами редактирования; для подавления отображения символа используют \phantom{}, \hbox{} или пакеты вроде showkeys.

Интересные факты

  • В шрифте DejaVu Sans более 6000 глифов; подмножество для латиницы и кириллицы содержит около 500.
  • Стандарт OpenType позволяет хранить до 65 535 глифов в одном шрифте.
  • Некоторые символы Unicode не имеют визуального глифа в большинстве шрифтов — они отображаются как пустые прямоугольники (tofu), что и является визуальным проявлением отсутствия глифа.

Источники

  • Microsoft Typography documentation
  • FontForge documentation
  • OpenType specification, Microsoft
  • Unicode Standard, Chapter 2: General Structure
  • FontTools documentation (python-fonttools)
Заметили ошибку или не согласны с информацией в статье? Напишите нам support@bfometr.ru