Вместо русских букв в PDF квадраты
Квадрат — это специальный знак «символа нет», который шрифт рисует, когда его просят изобразить букву, которой у него нет. Отсюда два вывода. Первый: дело в шрифте, а не в кодировке файла и не в вашей программе. Второй: чинить придётся на стороне того, кто документ создал, потому что в вашей копии буквы физически отсутствуют. Проверьте, видит ли квадраты автор, — с этого начинается любой разговор.
Коротко о цифрах
- Что такое квадрат
- знак-заглушка, который шрифт рисует вместо отсутствующего символа
- Почему в стандартных шрифтах нет кириллицы
- их кодировка описывает латиницу, знаки препинания и валюты
- Встроенное подмножество
- содержит только знаки, встретившиеся в тексте при экспорте
- Как делаем мы
- встраиваем кириллический Roboto подмножеством, с собственного домена
- Чего нельзя сделать снаружи
- добавить недостающие знаки в чужой готовый файл
Откуда берутся квадраты
Стандартные шрифты, которые формат разрешает не встраивать, описаны в западной кодировке: в ней есть латиница, знаки препинания и валюты, а кириллицы нет вообще. Программа, которой велели нарисовать русский текст таким шрифтом, попадает мимо всех известных ей знаков и подставляет заглушку — тот самый прямоугольник.
Второй сценарий — встроенное подмножество. При создании PDF шрифт часто сохраняют не целиком, а только теми знаками, которые встретились в тексте. Если потом файл дописывали в другой программе, добавленные буквы в подмножество не попадают, и на месте нового русского слова появляется ряд квадратов при вполне живом соседнем абзаце.
Как отличить от подмены шрифта
- Квадраты: буквы вообще не видно, на её месте пустой прямоугольник или ромб с вопросом. Знака нет в шрифте.
- Подмена: буквы видны, но начертание чужое, а строки переносятся не там. Знак есть, шрифт другой.
- Квадраты у всех, включая автора, — проблема в самом файле. Квадраты только у вас — вероятнее, у вас нет шрифта, который не встроили.
- Квадраты в одном абзаце при нормальном соседнем — верный признак дописанного текста поверх урезанного подмножества.
Что делать с квадратами
- Спросите отправителя, видит ли он квадраты у себя. Ответ делит задачу пополам: файл или ваша система.
- Если квадраты только у вас, установите недостающий шрифт или откройте документ в браузере — его движок подставляет свои шрифты иначе.
- Если квадраты у всех, документ нужно собрать заново из исходника, включив встраивание шрифтов при экспорте.
- Когда исходника нет, а вид документа важнее текста, попросите автора прислать страницы изображениями — квадраты не появятся, потому что рисовать буквы уже не потребуется.
Как эту ошибку обходим мы
Наши инструменты, которые дописывают текст в чужой PDF, — водяной знак, нумерация страниц, подпись, сведение — никогда не рисуют кириллицу стандартным шрифтом. Вместо него встраивается кириллический набор Roboto, причём подмножеством, чтобы файл не рос на сотни килобайт. Попытка нарисовать русскую букву стандартным шрифтом заканчивается не квадратами, а прямым отказом, и это правильнее: молча испорченный документ хуже честной ошибки.
Шрифты для этого лежат на нашем же домене. Когда-то они загружались из внешнего хранилища, политика безопасности страницы такой запрос блокировала, инструмент откатывался на стандартный шрифт — и любая русская надпись роняла операцию. С тех пор внешних зависимостей у встраивания нет.
Частые вопросы
Помогает ли смена шрифта в программе просмотра?
Нет. Просмотрщик показывает те знаки, которые описаны в файле, и настройка его интерфейса на это не влияет. Недостающие буквы появятся, только если их запишут в документ заново при создании.
Почему квадраты видны в одном абзаце и не видны в другом?
Абзацы нарисованы разными шрифтами или разными подмножествами одного шрифта. В одно подмножество нужные буквы попали при экспорте, во второе — нет, потому что текст добавили позже другой программой.
Спасёт ли перевод страниц в картинки?
Только если вы делаете это на машине, где документ отображается правильно. Растеризация фиксирует то, что видит ваша программа: если у вас квадраты, в картинке будут ровно те же квадраты.
Что выбрать при экспорте, чтобы такого не было?
Включите встраивание шрифтов и не полагайтесь на стандартный набор. Файл станет тяжелее на несколько сотен килобайт, зато будет одинаково выглядеть на любой машине, где его откроют.