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

Обфускация шрифта в EPUB: нужна ли она и как не сломать книгу

Обфускация шрифта в EPUB: нужна ли она и как не сломать книгу

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

Если такого требования нет, безопаснее начать с обычного встраивания шрифта и проверить книгу на целевых устройствах. В спецификации EPUB 3.4 W3C обфускация отмечена как устаревшая, хотя пока остаётся допустимой; документ также предупреждает о зависимости алгоритма от SHA-1 и возможных проблемах совместимости. Ниже — способ принять решение, собрать EPUB и отделить ошибки книги от ограничений конкретной читалки.

Что именно делает обфускация в EPUB

Механизм OCF меняет первые 1040 байт файла шрифта с помощью XOR-операции и ключа, полученного из уникального идентификатора публикации. Программа для чтения EPUB использует идентификатор и запись в META-INF/encryption.xml, чтобы восстановить данные перед показом текста. Это обратимая маскировка, а не криптографическая защита: она рассчитана на то, чтобы затруднить тривиальное копирование файла, а не остановить намеренного извлекателя. Источник: EPUB 3.4, раздел об устаревших возможностях.

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

Почему не стоит включать её по привычке

На 24 сентября 2026 года актуальная рекомендация W3C — EPUB 3.4 — относит font obfuscation к устаревшим, но пока допустимым возможностям. Рабочая группа объясняет осторожность зависимостью алгоритма от SHA-1: в спецификации указано, что NIST рекомендует сворачивать применение SHA-1 к концу 2030 года, а группа не планирует поддерживать обфускацию для новых публикаций после этого срока. Это направление развития стандарта, а не утверждение, что все существующие книги перестанут открываться в конкретную дату.

Есть и прикладная цена. EPUB-читалка должна распознать алгоритм, найти идентификатор книги, обработать encryption.xml и восстановить шрифт в правильном порядке. Некоторые приложения игнорируют встроенную гарнитуру, заменяют её настройкой пользователя или по-разному обрабатывают устаревшие механизмы. Тогда страница выглядит не так, как задумал автор, хотя исходный TTF исправен. Спецификация отдельно предупреждает, что обфускация может создавать проблемы совместимости и чтение не обязано поддерживаться одинаково всеми системами.

Наконец, цепочка сборки становится сложнее. Изменение package identifier после обфускации меняет ключ: прежний encryption.xml уже не описывает корректно преобразованный файл. Если добавить запись, но не преобразовать шрифт, часть программ попробует восстановить обычный файл и получит повреждённые данные. Если преобразовать, но забыть запись, ресурс тоже может оказаться нечитаемым.

Включайте обфускацию только по требованию платформы или согласованному издательскому процессу. Если требование не названо, не добавляйте `encryption.xml` и проверьте обычное встраивание.

Сначала проверьте лицензию и требования сервиса

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

Затем проверьте правила площадки публикации: принимает ли она встроенные TTF, OTF, WOFF или WOFF2, требует ли особой обработки и проверяет ли encryption.xml. Не выводите поддержку формата только из того, что расширение файла указано в EPUB. W3C перечисляет TTF, OpenType, WOFF и WOFF2 среди основных типов ресурсов, но прямо оговаривает: включение в список не означает, что каждое устройство поддерживает все возможности. Используйте корректный MIME-тип и актуальные требования канала. Сверяйтесь с таблицей основных типов ресурсов EPUB 3.4.

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

Базовая сборка EPUB со встроенным шрифтом

Ниже — общий порядок для EPUB 3, а не рецепт для каждого редактора. Путь и имена файлов в примере условны; важно, чтобы CSS, package document и фактическая структура ZIP ссылались на один и тот же ресурс.

1. Экспортируйте и отдельно проверьте файл

Сохраните финальный TTF или OTF после проверки начертаний, кодировок, внутренних имён и требуемых символов. Откройте файл в независимом просмотрщике шрифтов или тестовой странице, затем временно установите его в систему и наберите несколько характерных фраз. Проверьте кириллицу, ё, длинное тире, кавычки-ёлочки, цифры, знак рубля и имена, реально встречающиеся в рукописи. Так вы отделите проблему файла от ошибки упаковки EPUB.

2. Положите шрифт внутрь контейнера

Создайте понятное расположение, например EPUB/Fonts/Avtor.ttf, рядом с каталогом стилей. В реальной книге сохраняйте регистр имени и расширения: некоторые инструменты терпимы к различиям, но пути в EPUB должны быть согласованными. Не ссылайтесь на временный путь на компьютере, файл в облаке или внешнюю ссылку, если нужна автономная книга.

3. Добавьте ресурс в manifest

В package document внесите отдельный item для шрифта с уникальным id, относительным href и media-type, который соответствует его формату. Например, для TTF можно использовать font/ttf, для OpenType — font/otf, для WOFF2 — font/woff2. В таблице EPUB 3.4 WOFF2 указан как основной тип, добавленный в EPUB 3.2; всё равно проверьте поддерживаемые типы на своей площадке. Шрифт должен попасть в manifest, даже если его подключает CSS, а не XHTML напрямую.

4. Подключите ресурс в CSS и оставьте запасной вариант

Опишите отдельное семейство через @font-face, указав относительный путь к файлу, вес и стиль. Затем назначьте его только тем элементам, которым нужна авторская гарнитура, например основному тексту или коротким заголовкам. В CSS укажите системное семейство в качестве запасного варианта. Если устройство отвергнет встроенный шрифт, книга всё ещё должна оставаться читаемой, пусть внешний вид и изменится.

Пример логики: @font-face объявляет семейство Avtor; свойство src указывает на ../Fonts/Avtor.ttf; правило для body задаёт font-family: Avtor, serif. Точный путь зависит от места CSS-файла. Если он лежит в EPUB/Styles/book.css, путь ../Fonts/Avtor.ttf приведёт в EPUB/Fonts, тогда как путь Fonts/Avtor.ttf будет искаться в другой папке. После изменения названия каталога или файла проверьте путь заново, а не только предварительный просмотр редактора.

5. Оставьте текст настоящим текстом

Не переводите главы в изображения только для того, чтобы сохранить вид букв. Живой текст можно менять по размеру, выделять, искать и читать вспомогательными средствами. Даже если пользовательская читалка заменит авторский шрифт, структурированный XHTML с CSS сохранит содержание. Для декоративной гарнитуры разумно ограничить её заголовками или короткими вставками, а длинный основной текст оставить удобным для чтения и настройки.

Когда обфускация всё-таки нужна

Если дистрибьютор явно требует обфускацию, следуйте его инструкции и выясните, какую версию алгоритма и EPUB он ожидает. Не собирайте её вручную по найденному фрагменту кода: ошибка порядка операций может испортить файл, а ошибка идентификатора книги сделает ключ неверным. Используйте поддерживаемый инструмент экспорта, который синхронно создаёт файл шрифта и encryption.xml.

Сохраните окончательный package identifier до финальной обработки. После запуска обфускации не меняйте identifier и не заменяйте файл в ZIP без повторной сборки пары «шрифт + запись». Если редактор книги автоматически пересоздаёт идентификатор при сохранении, отключите такое поведение или выполняйте обработку на самом последнем этапе. По спецификации обфускация выполняется до помещения ресурса в OCF ZIP-контейнер; ваш инструмент должен соблюдать описанный в W3C порядок, а не побуждать вас вручную перекраивать бинарный файл.

Учтите, что просьба «защитить файл» слишком расплывчата. Уточните, ожидает ли сервис OCF font obfuscation, полноценное DRM в своей системе или просто встроенную лицензионную информацию. Это разные механизмы. EPUB-обфусцирование может удовлетворять конкретное требование к контейнеру, но само по себе не мешает извлечь файл из книги.

Как проверить книгу до передачи

Откройте итоговый .epub как ZIP-архив и убедитесь, что шрифт лежит по указанному пути, package document добавляет его в manifest, а CSS ссылается на тот же файл. В EPUB без обфускации отсутствие encryption.xml — нормальный вариант. Если обфускация включена, проверьте, что для файла есть запись с правильным идентификатором алгоритма и что EPUB-валидатор не сообщает о несогласованности путей или структуры.

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

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

Если шрифт не отображается: короткая диагностика

  • Сначала подтвердите, что исходный файл открывается сам по себе и содержит нужные символы.
  • Сверьте пути с расположением CSS и package document; проверьте регистр, расширение и точное имя ресурса.
  • Убедитесь, что media-type соответствует реальному формату, а файл перечислен в manifest.
  • Проверьте синтаксис @font-face, имя семейства, стиль и вес; легко перепутать Regular, Bold и Italic.
  • Если файл обфусцирован, проверьте идентификатор EPUB и согласованную запись в encryption.xml; не смешивайте обработанный и исходный файл.
  • Повторите проверку в другой читалке и отключите пользовательскую подмену шрифта, если приложение позволяет.
  • После исправления соберите EPUB заново и очистите кэш тестовой программы.

Типичные ошибки

  • Считать XOR-обфускацию DRM или обещанием защиты от извлечения.
  • Добавить encryption.xml к обычному TTF либо обфусцировать TTF без соответствующей записи.
  • Изменить package identifier после обработки и оставить прежний ключ.
  • Ссылаться на шрифт только в CSS, забыв добавить ресурс в manifest.
  • Считать, что core media type гарантирует поддержку шрифта каждым ридером.
  • Использовать собственную гарнитуру для всего текста и убрать запасное семейство, не проверив настройки читателей.
  • Считать наличие лицензионной таблицы или обфускации достаточным разрешением на распространение.

Контрольный список перед публикацией

  • Лицензия разрешает нужный сценарий встраивания и распространения.
  • Требование площадки к встроенным шрифтам и обфускации получено явно.
  • Файл открывается отдельно и содержит все нужные знаки.
  • Пути в ZIP, manifest и CSS совпадают; MIME-тип соответствует формату.
  • Для обычного встраивания нет лишней записи encryption.xml; при обязательной обфускации ресурс и запись создаёт корректный инструмент.
  • Книга прошла EPUB-валидатор и визуальный просмотр в целевых читалках.
  • Есть запасное семейство, поэтому при подмене шрифта текст остаётся читаемым.

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

Обфускация EPUB — это шифрование?

Нет. Стандарт описывает обратимое изменение начальной части файла, которое читалка отменяет по данным книги. Это средство затруднить прямое извлечение, а не механизм конфиденциальности или полноценное DRM.

Можно ли просто положить файл шрифта в ZIP?

Файл надо включить в EPUB как ресурс: указать его в manifest package document и подключить из CSS. Наличие файла в архиве само по себе не назначает его тексту и не гарантирует, что программа чтения найдёт его.

Какой формат выбрать для EPUB?

Проверьте требования площадки и целевых приложений. EPUB 3.4 перечисляет TTF, OpenType, WOFF и WOFF2 как основные типы шрифтовых ресурсов, но реальную работу нужно подтвердить на выбранных ридерах. Не конвертируйте файл только ради расширения, если нет проблемы совместимости.

Нужно ли обфусцировать самодельный шрифт?

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

Сохранит ли читатель выбранный шрифт при настройке другого?

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

Появился ли у EPUB крайний срок для старых книг?

Нет: предупреждение EPUB 3.4 о SHA-1 описывает направление поддержки для будущих публикаций, но говорит, что программы чтения должны продолжать обслуживать уже существующие книги с обфускацией. Следуйте текущим требованиям сервиса и проверяйте готовую книгу на целевых устройствах.

Итог

Для большинства авторских проектов начните с корректного обычного встраивания, запасного шрифта и проверки EPUB на устройствах, где его будут читать. Обфускацию применяйте только по явному требованию, сохраняя package identifier и поручая обработку инструменту, который формирует согласованный контейнер. А файл шрифта сначала подготовьте отдельно: когда нужна тестовая кириллица или собственная гарнитура по почерку, её можно создать в Fontgenerator и проверить до включения в книгу.