Шрифты. Разработка и использование

интерпретирующего типа, основанный на системе стеков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 -