Семь уроков по PostScript


PostScript-шрифты - часть 2


вернет в стек словарь для шрифта Helvetica с кеглем 14 пунктов. Наконец, оператор setfont  переводит словарь шрифта из стека в текущий шрифт, который и будет использован для печати текста. Чтобы что-либо напечатать, нужно установить местоположение текущей точки, поместить в стек заключенную в круглые скобки строку и вызвать оператор show. Этот оператор "печатает" строку из стека на текущей странице, начиная с текущей точки. По мере печати текущая точка перемещается в конец строки.

 

Изменение размера шрифта при печати

Следующий пример показывает, как во время печати текста можно менять шрифт. Определим процедуру устанавливающую шрифт нужного размера.

/newsize % в стеке размер

{ scalefont setfont} def

/ getfont

{ Helvetica findfont} def

getfont 8 newsize

72 250 moveto (example) show

getfont 10 newsize

72 275 moveto (example) show

getfont 12 newsize

72 300 moveto (example) show

showpage

Эта программа напечатает три раза слово example шрифтом разного размера. Процедуры newsize и getfont можно объединить, если учесть порядок следования аргументов в стеке. (Понятно, что в нем хранится не сам словарь шрифта непосредственно, а ссылка на него).

/scaleHelv  %в стеке размер

{/ Helvetica findfont

exch scalefont %  кегель в стеке

setfont } def

Теперь запись строки программы станет еще компактней:

6 scaleHelv

 

Графика и текст

 

В PostScript не существует различия между графикой и текстом. Символ текста рассматривается как один из графических объектов, размещаемых на текущей странице. Поэтому для совмещения на ней текста и графики не требуется никаких специальных действий.

Графические операторы PostScript выполняют свои действия в пространстве пользователя, или, иначе говоря, в пользовательской системе координат. Как уже говорилось, это пространство независимо от какого-либо физического устройства и результат работы операторов PostScript при печати автоматически преобразуется в систему координат устройства. Однако иногда бывает удобно изменить действующую по умолчанию систему координат. Можно, например, перенести в другое место начало координат, изменить ориентацию осей и масштабы по ним.

Перенесение начала координат. Для этой цели служит оператор translate. Он берет из стека два числа, и перемещает пространство пользователя в точку с этими новыми координатами. Например строка:

150 180 translate

переместит их начало координат в точку  (150, 180). После этого все позиции на текущей странице будут отмеряться от этой точки.

Пример.

Треугольник. Переместить 3 раза.

 

/treangl

0 0 moveto

90 0 lineto

x y lineto

closepath fill} def

treangl

200 250 translate

treangl

200 250 translate

treangl

showpage

 

Обратите внимание, что второй перенос системы координат осуществляется уже относительно новой системы координат, а не относительно исходной.

 




- Начало -  - Назад -  - Вперед -



Книжный магазин