Как конвертировать TTF в TTC: объединение шрифтов в коллекцию

Конвертация TTF to TTC требуется, когда несколько начертаний одного шрифта нужно упаковать в единый файл TrueType Collection — например, для установки в систему одним файлом или для экономии места за счёт общих таблиц глифов. В отличие от простой смены расширения, здесь выполняется реальная перестройка структуры файла: заголовок ttcf, таблица смещений и ссылки на отдельные шрифты внутри контейнера.

Обычный конвертер форматов изображений или документов с этой задачей не справится — нужны инструменты, понимающие внутреннее устройство шрифтов. Ниже разберём рабочие способы: онлайн-сервисы, FontForge и скрипт на Python с библиотекой fontTools, а также обратную операцию — извлечение TTF из коллекции.

Чем TTC отличается от TTF

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

Типичный пример — системные шрифты Windows: msgothic.ttc или msyh.ttc объединяют несколько начертаний в одном файле. macOS тоже активно использует формат TTC для системных гарнитур.

  • 📦 TTF — один шрифт, один файл, расширение .ttf
  • 🗂 TTC — коллекция из двух и более шрифтов, расширение .ttc
  • 🔗 Внутри TTC шрифты могут делить общие таблицы, что уменьшает размер
  • 🖥 Windows и macOS устанавливают TTC штатно, двойным кликом

Когда нужна конвертация в TTC

Чаще всего задача возникает у дизайнеров и разработчиков, которые готовят семейство шрифтов к распространению. Вместо пяти отдельных файлов Regular, Bold, Italic, Bold Italic и Light удобнее отдать один TTC — пользователь установит всё семейство одним действием.

Вторая ситуация — оптимизация. Если начертания построены на одном наборе глифов, коллекция заметно компактнее. Третий сценарий — требования конкретной платформы или ПО, которое принимает шрифты только в виде коллекции.

⚠️ Внимание: перед объединением убедитесь, что лицензия на шрифты разрешает модификацию и перепаковку. У коммерческих гарнитур такие действия часто запрещены условиями лицензионного соглашения.

Способ 1: онлайн-конвертеры

Самый быстрый вариант — сервисы вроде Transfonter, Convertio или OnlineFontConverter. Загружаете один или несколько TTF, выбираете целевой формат TTC и скачиваете результат. Для разовой задачи этого достаточно, установка программ не потребуется.

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

📊 Какой способ конвертации TTF в TTC вам удобнее?
Онлайн-сервис
FontForge
Скрипт на Python
Ещё не решил

Способ 2: FontForge

FontForge — свободный редактор шрифтов, который умеет генерировать коллекции напрямую. Откройте все нужные TTF в программе, затем в любом из окон выберите File → Generate TTC... и отметьте шрифты, которые войдут в коллекцию. Порядок файлов в списке определит порядок начертаний внутри TTC.

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

☑️ Подготовка к сборке TTC в FontForge

Выполнено: 0 / 5

Способ 3: Python и fontTools

Для пакетной обработки удобнее всего библиотека fontTools. Она устанавливается командой pip install fonttools и позволяет собрать коллекцию буквально несколькими строками кода.

from fontTools.ttLib import TTFont, TTCollection

fonts = ["Regular.ttf", "Bold.ttf", "Italic.ttf"]

collection = TTCollection()

collection.fonts = [TTFont(f) for f in fonts]

collection.save("MyFamily.ttc")

Результат — готовый файл MyFamily.ttc, который сразу можно устанавливать в систему. Скрипт легко доработать: обход папки с шрифтами, сортировка по имени, проверка ошибок чтения. Для регулярной сборки семейств это самый надёжный вариант.

Обратная задача: извлечь TTF из TTC

Иногда нужно наоборот — распаковать коллекцию на отдельные файлы. Та же fontTools решает и эту задачу: открываете TTC как TTCollection и сохраняете каждый вложенный шрифт в собственный файл. В FontForge коллекция при открытии предлагает выбрать конкретный шрифт, который затем сохраняется через File → Generate Fonts.

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

⚠️ Внимание: перед любыми операциями сохраните копии исходных файлов. Пересборка шрифта может изменить внутренние таблицы, и откатиться к исходному состоянию без резервной копии не получится.

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

СпособУстановка ПОПакетная обработкаКонтроль качества
Онлайн-конвертерНе нужнаОграниченаМинимальный
FontForgeТребуетсяРучнаяВысокий
Python + fontToolsPython и библиотекаПолнаяВысокий
Коммерческие редакторыТребуетсяЗависит от программыВысокий

Для разовой задачи с одним-двумя файлами проще всего онлайн-сервис. Если работа со шрифтами регулярная, стоит освоить fontTools: вложение окупается уже на втором семействе.

Почему TTC может не устанавливаться в систему

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

Проверка результата после конвертации

После сборки обязательно проверьте файл до распространения. Откройте TTC двойным кликом: системный просмотрщик шрифтов должен показать все начертания из коллекции. Установите файл и проверьте, что семейство корректно отображается в текстовом редакторе и графической программе.

Дополнительно полезно прогнать файл через валидатор — например, FontValidator или проверку средствами fontTools (fonttools ttLib позволяет инспектировать таблицы). Ошибки в таблицах name или head могут проявиться только на отдельных системах, поэтому лучше поймать их заранее.

  • ✅ Откройте TTC и убедитесь, что видны все начертания
  • 🖨 Проверьте печать и рендеринг в целевом приложении
  • 🔍 Прогоните файл через валидатор шрифтов
  • 💾 Сохраните исходные TTF в архиве

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

Можно ли конвертировать один TTF в TTC?

Технически да — коллекция из одного шрифта валидна. Но практического смысла в этом нет: ни экономии места, ни удобства установки такой файл не даёт.

Можно ли смешивать TTF и OTF в одной коллекции?

Формат TTC поддерживает шрифты с кривыми TrueType. Файлы OTF на основе PostScript-контуров (CFF) объединяются в коллекции формата OTC, и не всякое ПО их корректно читает. Смешивать типы контуров в одном контейнере не стоит.

Почему TTC меньше суммы отдельных TTF?

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

Откроется ли TTC на Android или Linux?

На Linux поддержка TTC есть в fontconfig и основных приложениях. На Android системные механизмы подмены шрифтов ограничены и зависят от оболочки производителя — гарантировать работу конкретного TTC без проверки на устройстве нельзя.

Что делать, если конвертер выдаёт ошибку на исходном TTF?

Вероятная причина — повреждённый или нестандартный исходный файл. Откройте его в FontForge: программа покажет ошибки структуры и часто может пересохранить шрифт в корректном виде, после чего конвертация пройдёт успешно.