PCL и программные шрифты: как шрифт попадал в принтер

PCL-принтер использует тот шрифт, который выбран в задании печати или уже доступен в самом устройстве. В эпоху лазерных принтеров шрифт можно было передать в оперативную память принтера как soft font: вместе с описанием гарнитуры отправлялись данные символов, затем набор выбирали по идентификатору и параметрам. Поэтому надпись могла выглядеть иначе, если драйвер не загрузил файл, выбрал другой шрифт или очистил временный набор при сбросе.
От кассеты к памяти принтера
Картридж со шрифтами — физический носитель или расширение памяти с заранее записанными гарнитурами. В PCL 5 существовал и другой путь: компьютер передавал шрифт в память устройства. Такой шрифт назывался soft font, то есть программным или загружаемым. Внутренние гарнитуры ПЗУ и soft fonts могли сосуществовать.
В руководстве HP по PCL 5 описаны механизмы работы с внутренними, картриджными и загружаемыми наборами. Загрузка означала не просто «скопировать файл куда-то»: поток PCL задавал идентификатор, заголовок гарнитуры и определения символов. Принтер сохранял данные в RAM и использовал их при обработке страниц. Это переносило часть работы по формированию шрифта с компьютера на устройство.
Подход позволял передать устройству шрифт и размер вместо изображения каждой буквы. Масштабируемый шрифт принтер строил в нужном размере; у растрового были заранее заданы битовые рисунки и разрешение. Возможности моделей различались, поэтому общий язык не гарантировал поддержку всех типов.
Что содержал загружаемый шрифт
Soft font состоит из данных, которые нужны принтеру, чтобы узнать гарнитуру и нарисовать её знаки. Заголовок описывает общие свойства набора; определение каждого знака связывает код символа, метрики и данные очертания. В руководстве PCL 5 перечислены растровые, масштабируемые Intellifont и TrueType-варианты. У каждой категории были собственные форматы заголовков и символов, а принтер конкретной модели мог поддерживать лишь часть вариантов.
Растровая гарнитура хранит пиксельную маску символа. Она быстро печатается, но исходный рисунок рассчитан на определённое разрешение и размер; при увеличении мелкие штрихи могут выглядеть грубее. Масштабируемая гарнитура хранит описание контура, которое устройство растрирует под нужный размер. PCL 5 принимал, в частности, контуры Intellifont и TrueType, но наличие такого формата в стандарте не означает, что его понимал каждый принтер.
Заголовок и таблица символов решали разные задачи. Заголовок сообщал принтеру о семействе, стиле, ширине, размере проектной области и других характеристиках. Данные символов определяли форму и продвижение курсора после печати. Для текста это важно: символ должен не только иметь контур, но и перемещать следующую букву на правильное расстояние. Поэтому ошибка в метриках может дать неверный интервал даже тогда, когда сами контуры выглядят правильно.
Важна и кодировка. PCL использовал понятие symbol set — набора, который связывал коды с печатными знаками. В старых средах код «65» мог означать латинскую A в одном наборе, а в другом — иной знак. У TrueType soft font возможен режим, где коды соотносятся с Unicode, но это не означает, что любое приложение автоматически отправит Unicode-текст как поток PCL. Драйвер должен согласовать символный набор и передаваемые коды.
Путь от документа до отпечатка
Полезно представить работу в виде цепочки. Приложение создаёт страницу, драйвер преобразует её в команды PCL, принтер принимает команды и ресурсы, а затем строит растр для печатного механизма. На этапе драйвера решается, можно ли выбрать гарнитуру из устройства, отправить soft font или передать текст иначе. На этапе принтера проверяется, есть ли нужный шрифт, подходит ли его кодовый набор и не занята ли память.
Один и тот же установленный в Windows или macOS TTF не обязательно становится шрифтом принтера при установке. Операционная система знает файл, но принтер понимает только то, что принесли драйвер и язык устройства. Драйвер может преобразовать совместимую гарнитуру в данные для PCL и загрузить её, подменить её встроенным аналогом, либо включить текст в иной формат задания. Выбор зависит от приложения, настроек драйвера, модели принтера и режима печати.
Отсюда характерная неисправность: на экране выбран авторский шрифт, а бумага показывает похожую, но не ту гарнитуру. Это не обязательно сбой установки файла. Возможно, задание ушло в PCL, где нужный soft font не был передан, либо принтер выбрал внутренний шрифт по характеристикам. Если в документе также меняются переносы или ширина строки, проверьте не только контур, но и метрики выбранной замены.
Ещё один сценарий — шрифт печатается в пробном задании, но исчезает после сброса принтера. Это может быть ожидаемо: в PCL 5 soft font по умолчанию загружался как временный. Он занимал пользовательскую память и мог быть удалён при сбросе или после выполнения некоторых операций с панели. Руководство HP уточняет, что даже объявление набора постоянным не переживало выключение питания на описанных в документе устройствах; конкретные исключения нужно проверять по документации модели.
Идентификатор: ссылка на набор внутри задания
Для управления загружаемому шрифту назначали числовой Font ID. Следующие команды могли выбрать, удалить или переопределить данные, связанные с этим номером. Если новый заголовок загружали под ID, который уже занимал другой шрифт, старый набор заменялся. Поэтому ID — не имя файла и не уникальный глобальный номер гарнитуры, а адрес ресурса в текущей памяти принтера.
Если задание содержит символы «выбери ID 7», но сам набор не был загружен или уже удалён, принтеру нечего выбирать под этим адресом. Устройство может перейти к другому подходящему шрифту или применить настройки по умолчанию. В много-пользовательской среде HP рекомендовала выбирать soft fonts по характеристикам, а не по ID; однако простое задание, контролируемое одним приложением, может использовать ID как временную ссылку внутри потока.
Почему язык задания имеет значение
PCL — язык команд принтера; PostScript — другой язык описания страницы. Устройство с поддержкой обоих режимов может переключаться между ними, а драйвер выбирает, какой поток отправить. Сам факт установки принтера в системе не сообщает пользователю, какой именно язык выбран в конкретном задании. Если задание сформировано как PostScript, инструкция PCL для загрузки soft font в него не попадёт. Если драйвер переключился на PCL, поведение шрифта будет зависеть от того, как в PCL представлены текст и гарнитура.
Важен и источник набора. Внутренний шрифт может быть доступен постоянно, soft font — только в памяти, картридж — пока он установлен и распознаётся. Если драйвер печатает на другом принтере или использует другой PDL, таблица доступных гарнитур меняется. Поэтому документ с незаменённым шрифтом нужно проверять на той же модели и через тот же путь печати, который будет использоваться в работе.
Как диагностировать подмену шрифта
Начните с короткой контрольной страницы, где есть типичные строчные и прописные буквы, цифры, знаки препинания, русские буквы и сочетания, которые вызывают проблему. Сохраните её в документе и отдельно запишите ожидаемый результат: семейство, насыщенность, размер, интервалы, доступность знаков. Важно сравнить не только визуально похожие заголовки, но и строку с кириллицей, потому что другой symbol set может менять состав доступных кодов.
Дальше печатайте по одному изменению за раз. Сначала отправьте страницу в обычном режиме, затем включите в настройках драйвера параметр, отвечающий за замену шрифтов или использование шрифтов принтера, если он есть. Названия различаются по производителям. Не ищите один универсальный переключатель: инструкция к драйверу конкретной модели важнее общей статьи о PCL.
Если есть режим печати в файл, сохраните задание и проверьте, содержит ли оно явную загрузку шрифта или только выбор имени и характеристик. Наличие команд загрузки ещё не доказывает, что принтер принял ресурс: проверьте ответ устройства, журнал задания либо распечатку списка шрифтов, если модель умеет её создавать.
Затем проверьте состояние самого устройства. Снимите список внутренних гарнитур и доступных расширений, посмотрите, отображается ли загружаемый набор после тестовой печати, и выясните, очищается ли он при сбросе, смене языка или выключении. В HP PCL 5 Technical Reference эти случаи описаны для семейства LaserJet, но сама документация предупреждает: поведение и поддержка зависят от модели. Для другой марки используйте её руководство, а не переносите выводы HP без проверки.
Наконец, отделите проблему рисунка от проблемы кода. Если все русские буквы заменились одним символом или пропали, проверьте соответствие кодов и symbol set; это другой класс ошибки, чем неверное начертание. Если буквы правильные, но отличаются по ширине или переносам, сравните метрики и выбранное семейство. Если шрифт просто пропадает после перезапуска, исследуйте временное хранение и процедуру загрузки.
Чек-лист перед повторной печатью
- Убедитесь, что выбрана правильная очередь и драйвер для модели, а язык задания совпадает с возможностями устройства.
- Проверьте, включена ли настройка, которая разрешает драйверу передавать нужный шрифт, а не подменять его принтерным.
- Сверьте поддерживаемый тип шрифта: растровый, Intellifont, TrueType или другой вариант из руководства конкретного принтера.
- Проверьте, что ID загрузки не повторяется и не ссылается на устаревший набор из памяти устройства.
- Убедитесь, что кодовый набор содержит русские знаки и соответствует кодам, которые отправляет задание.
- Повторите тест после сброса и после выключения, чтобы отличить разовую загрузку от сохранённого ресурса.
- Сравните контрольную страницу по контурам, ширине, интервалам и переносам, а не только по названию шрифта в приложении.
Частые ошибки
**Считать, что файл установлен на компьютере — значит он есть в принтере.** Установка делает файл доступным системе; загрузка soft font — отдельная операция внутри задания. Между ними должен быть драйвер или утилита, которая подготовит формат, поддерживаемый принтером.
**Считать, что любой PCL-принтер принимает любые шрифты PCL.** Стандарт описывает несколько типов, а устройство может поддерживать не все. Проверяйте таблицу возможностей модели и документацию к прошивке.
**Ожидать, что soft font переживёт перезапуск.** Временный шрифт может быть очищен сбросом. Даже постоянные ресурсы у отдельных устройств удаляются при выключении, поэтому сохранность нельзя предполагать без проверки.
**Повторно использовать Font ID, не зная о старом ресурсе.** Новый шрифт под тем же номером заменяет прежний. В общем потоке команд это даёт подмену, которая выглядит случайной, хотя причина — совпавший адрес.
**Диагностировать любую подмену как проблему контура.** Подмена гарнитуры, неверный symbol set и отсутствие конкретной буквы дают разные симптомы. Сначала определите, что изменилось: форма, ширина, кодировка или наличие самого текста.
FAQ
Soft font — это то же самое, что картридж со шрифтами?
Нет. Картридж — физический источник гарнитур, а soft font передаётся с компьютера в память принтера. Устройство может поддерживать оба варианта одновременно, но установка и время жизни ресурсов у них различаются.
Нужно ли загружать TTF-файл прямо в принтер?
Обычно файл нужно подготовить в формате, который понимает язык и прошивка устройства. Руководство HP описывает данные PCL для bitmap, Intellifont и TrueType, но не каждый принтер принимает каждый тип. Не отправляйте произвольный TTF как бинарный файл, если документация принтера не подтверждает такой сценарий.
Почему шрифт есть в редакторе, но не появляется в отпечатке?
Приложение может видеть файл, но драйвер мог заменить его на доступную гарнитуру или не включить его в задание. Проверьте очередь, PDL, настройки шрифтов и наличие загрузки в файле задания, затем повторите печать контрольной страницы.
Можно ли сохранить загружаемый шрифт в принтере постоянно?
Это зависит от устройства и его способа хранения. В описанной HP схеме временные шрифты удаляются при сбросе, постоянные защищены от такого сброса, но могут исчезать при отключении питания. Найдите соответствующие команды и ограничения в руководстве своей модели.
Почему исчезают только русские буквы?
Вероятная причина может быть в наборе символов или кодах, отправленных драйвером: наличие латинской части не гарантирует, что soft font содержит нужную кириллицу. Сверьте таблицу символов шрифта, выбранный symbol set и кодировку задания; затем проверьте результат на странице с русским текстом.
Чем soft font отличается от встроенного шрифта принтера?
Встроенный шрифт уже доступен в ПЗУ или памяти устройства; soft font поступает с хоста и занимает пользовательскую память. Встроенный набор удобен для гарантированной доступности, но выбор зависит от модели. Загружаемый даёт драйверу дополнительный ресурс, если устройство умеет его принять.
Что означает одинаковый ID у двух шрифтов?
ID — номер, по которому PCL-команды управляют ресурсом в памяти. Если новый шрифт загружается под уже занятым номером, он может заменить прежний. Используйте уникальный номер в рамках задания и убедитесь, что выбор ссылается на тот же ID.
Где проверить, поддерживает ли принтер конкретный формат?
В руководстве пользователя, PCL Comparison Guide или технической документации изготовителя для точной модели и версии прошивки. Общая поддержка PCL ещё не подтверждает поддержку bitmap, Intellifont, TrueType и конкретного символьного набора.
Вывод
Загружаемый PCL-шрифт — это ресурс печатного устройства, а не простое продолжение списка шрифтов компьютера. Для стабильного вывода должны совпасть язык задания, формат гарнитуры, идентификатор, набор символов и правила хранения в памяти. Если создаёте собственный набор, сначала проверьте его на короткой странице, а затем сравните печать на целевой модели. Для создания авторского рукописного шрифта можно подготовить исходный алфавит в Fontgenerator, а готовый файл тестировать через фактический драйвер и принтер.
Источники
- HP PCL 5 Printer Language Technical Reference Manual — разделы о font management, soft fonts и supported font formats.
- Microsoft OpenType specification: таблица PCLT — назначение метаданных PCLT в OpenType.