Шрифты. Разработка и использование
интерпретирующего типа, основанный на системе стеков1 и словарей2 и ис¬
пользующий обратную польскую запись3. Отсутствие явно выраженной
структуризации языка и возможность одинаково обозначать и использовать
переменные и процедуры делает практически невозможным понимание от¬
дельного фрагмента postscript-программы — предварительно нужно просмот¬
реть (и разобрать) весь предшествующий текст. Язык построен на минималь¬
ном количестве операций, и в то же время обладает неограниченной
возможностью создания новых операций. Использование неструктурирован¬
ной записи, с одной стороны, предельно облегчает построение интерпрета¬
тора и (при некотором навыке) построение своих программ, с другой —
делает крайне сложной задачей отладку или корректировку PostScript-про¬
граммы.
С точки зрения функциональных особенностей, PostScript — язык, создан¬
ный специально для программирования графики. Основой описания графи¬
ки в языке является путь (англ. Path) — совокупность точек, прямых линий,
дуг окружности и кривых Безье4. Путь в PostScript является воображаемой
линией контура (то есть невидим сам по себе) ; путь может быть обведен ли¬
нией (stroke), залит цветом (fill), использован в качестве границы изображе¬
ния (clip). Созданное с помощью путей изображение может быть отмасшта-
бировано, повернуто на произвольный угол или перемещено в другое место
без потери точности. Помимо путей, PostScript поддерживает описание полу¬
тоновых (растровых) изображений, как элементов страницы.
С точки зрения пользователя, PostScript является входным языком боль¬
шинства современных устройств вывода информации высокого разреше¬
ния. PostScript — универсальный формат для описания документа, который
может быть создан в любой программе подготовки текстов и изображений
(если только она имеет команду «print»), при наличии в составе опера¬
ционной системы драйвера печати PostScript. Записанный в форме
PostScript-файла документ может быть выведен на любом устройстве,
поддерживающемстандарт языка PostScript. Во всяком случае, фирма
Adobe декларирует такую переносимость для всех сертифицированных
1 Стек в программировании — структура для хранения данных, основанная на принципе
«последним пришел — первым вышел», т. е. порядок считывания информации из стека об-
ратен порядку записи в него.
2 Словарь в языке PostScript — таблица соответствия имен их значениям, хранящаяся в па¬
мяти интерпретатора.
3 Обратная польская запись — система записи алгебраических выражений, в которой знак
операции ставится не между операндами, а после пары операндов. Так, в польской нотации
«2 + 3» пишется, как «2 3 + ».
4 Кривая Безье — кубическая парабола, заданная своими крайними точками и направлени¬
ями касательных с весовыми коэффициентами в крайних точках в декартовой (прямоуголь¬
ной) системе координат.
- 86 -
Глава 4. Компьютерные шрифты
ей типов устройств вывода. В действительности, PostScript-описания стра¬
ниц формируются многими программами с учетом таких особенностей
устройства вывода, как формат, ориентация бумаги и разрешение выво¬
да. В ряде случаев несоответствие этих параметров реальному устройству
может приводить к неожиданным последствиям.
Растрирование в PostScript-технологии
Растровые и векторные изображения
Одно и то же изображение на бумаге, экране или фотопленке можно
создать разными способами. Возьмем, для примера, описание на языке
Adobe PostScript:
newpath 10 20 moveto 50 80 lineto closepath stroke
newpath 120 80 314.15926 0 360 arc closepath stroke
эквивалентное на простом человеческом языке следующему:
— провести прямую из точки х= 10, у = 20 в точкух = 50, у=80;
— построить окружность с центром в точке х = 70, у=80 радиусом 50;
Как поступит человек, получив такую инструкцию? Возьмет карандаш,
линейку, циркуль, лист бумаги и начнет проводить в выбранном масштабе
требуемые линии. Такой способ создания изображения называют вектор¬
ным, так как он основан на непосредственном построении геометричес¬
ких примитивов — отрезков прямых (векторов), дуг окружностей, куби¬
ческих парабол и других подобных элементов. Описания, основанные на
геометрических примитивах, называют векторными описаниями, а соот¬
ветствующие им изображения — векторными изображениями.
Векторные описания имеют три основных преимущества — компакт¬
ность (малый размер описания), простоту редактирования (каждый эле¬
мент изображения может редактироваться отдельно, для значительного
изменения размеров или формы объекта достаточно малой корректиров¬
ки параметров его описания или нескольких простых команд) и легкость
масштабирования (изменение масштаба при построении изображения по
векторному описанию никак не сказывается на качестве построенного
изображения).
К сожалению, для большинства техническихустройств такое «непосред¬
ственное» исполнение команд векторного описания изображений являет¬
ся слишком сложным — для этого необходимо обеспечивать точное переме¬
щение бумаги (или другого носителя) и пера (или другого «рисующего»
- 87 -