Принтеры могут выполнять различные команды, поступающие от компьютера в виде специальных кодов: выбор типа и размера шрифта, длины строки, цвета печати, протяжка бумаги, установка интервала, число строк на странице и т.д. Особенности команд, исполняемых принтерами, учитывают разработчики программ для ПК. Прежде чем использовать многие из прикладных программ, например, редактор Word, пользователь ПК должен настроить на определенную конфигурацию оборудование компьютера. Часто эта настройка сводится к указанию марки используемого принтера или подключению драйвера печати конкретного устройства (Windows).
Единой системы кодирования команд для всех принтеров нет. Однако разработки принтеров постепенно сходятся к следующим системам кодов или стандартам.
? Стандарт фирмы Epson. Стандарт для точечно-матричных принтеров был принят в принтерах первых IBM PC. Стандарт разработан японской фирмой Epson и его основные команды имеются в большинстве японских принтеров. Со временем в стандарт было добавлено множество дополнений и его поддерживают большинство принтеров.
? Стандарт ISO. Разработан Международной организацией по стандартизации (ISO), этот стандарт является по существу расширенным стандартом Epson. Среди его возможностей можно отметить поворот шрифта и передачу программе дополнительной информации, например, о ширине шрифта.
? Стандарт PCL. Стандарт PCL (Printer Control Language – язык управления принтером) разработан для принтеров LaserJet фирмы Hewlett-Packard. Язык представляет собой систему простых кодов, похожих на применяемые в строчных принтерах. Обычно принтеры LaserJet работают как текстовые страничные принтеры, которые допускают графику на части страницы (или на всей странице в новых моделях).
Принтеры LaserJet настолько доминируют на рынке лазерных принтеров для ПК, что многие программы не поддерживают больше никаких других стандартов. Многие производители, выпускающие клоны этих принтеров и даже совершенно другие лазерные принтеры. По мере модернизации принтеров развивался и язык PCL, поэтому сейчас имеются три уровня (версии) языка.
В лазерных принтерах применяются два способа записи текста. В обоих способах принтер имеет словарь для каждого символа любого используемого шрифта. Когда требуется записать букву А, принтер отыскивает форму этого символа, а затем печатает его. В простейшем случае в словаре хранится фактическое изображение символа (его двоичная карта – bitmap). Шрифты такого типа называются шрифтами типа двоичной карты. Во втором, более совершенном способе, форма каждого символа хранится как математическая формула, которая применяется для формирования символа. Такой способ обеспечивает получение масштабируемых шрифтов (они также называются контурными шрифтами). При первом способе возможна печать символов только тех размеров, для которых имеются двоичные карты. Второй способ допускает печать символов практически любого размера.
Во все принтеры встроено некоторое число шрифтов, например, 10 шрифтов в точечно-матричном принтере и 10-40 в лазерном принтере. Такие встроенные шрифты называются шрифтами принтера. В лазерные принтеры можно добавить шрифты, вставляя соответствующие кассеты (картриджи). Такие шрифты называются кассетными шрифтами. Наконец, данные для еще большего числа шрифтов можно загрузить из компьютера во внутреннюю память принтера. Это программируемые шрифты (soft fonts), которые исчезают при выключении принтера.
Принтер может хранить столько программируемых шрифтов, сколько их помещается в его память. Память требуется также для формирования графических изображений, поэтому ее доступный объем ограничен. Программируемый шрифт типа двоичной карты требует много памяти. При запросе печати документа, требующего нескольких программируемых шрифтов памяти принтера может не хватить.
Масштабируемые шрифты занимают намного меньше места в памяти принтера. Но в этом случае принтер должен иметь свой процессор для формирования каждого символа. По существу, такие принтеры превращаются в специализированные компьютеры. Однако масштабируемые шрифты можно применять и для лазерных принтеров, которые не поддерживают их. Для этого сам компьютер (а не принтер) создает двоичную карту по формуле контура символа, а затем такая двоичная карта передается в принтер как программируемый шрифт.
Программа может интерполировать двоичные карты с получением изображений промежуточных размеров. Этот прием усовершенствован в масштабируемых шрифтах TrueType для Windows 95. Они формируют высококачественные изображения двоичных карт практически любого размера для экрана и принтера. Так как двоичные карты экрана и принтера имеют один и тот же источник, Вы видите на экране именно то, что печатается (отсюда появилось название TrueType – истинная печать).
Программа, посылая текст на принтер, выполняет больше действий, чем простой вывод одного символа за другим. Она периодически проверяет правильность границ и транспортировку бумаги, переключает шрифты и стиль, например, жирный шрифт и курсив, и может выводить графические изображения. Программа осуществляет такое управление, посылая в принтер специальные коды. К сожалению, за исключением простейших документов, единая система кодов, пригодная для каждого принтера, отсутствует. Принтеры становятся даже менее стандартизованными из-за появления лазерных принтеров, для которых требуются не только простые коды, но и специальные языки (например, PostScript) для получения качественной графики и символов разного размера.
Разработчики решают сложные задачи, создавая программы, работающие с разнообразными принтерами. В идеальном случае программа должна использовать все средства и возможности, имеющиеся в каждом принтере. Однако на практике усилия разработчиков сосредотачиваются на возможностях, являющихся общими для принтеров определенного типа.
Драйверы принтеров. Даже когда принтеры обладают какой-либо возможностью, способ управления ею может значительно отличаться. Программа для выполнения одних и тех же действий должна посылать в принтер различные коды. Чтобы преодолеть эти отличия, изготовитель поставляет обычно несколько драйверов принтера, которые поставляются с ПУ. Драйвер принтера преобразует команды, полученные от программы, в команды, которые может понять конкретный принтер.
