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


Кодирование шрифта - часть 2


Чтобы изменить масштаб шрифта по х и по у, нужно задать соответственно значения чисел m и n в матрице

[m 0 0 n 0 0 ]

Так строки

/Helvetica findfont 6 scalefont

/Helvetica findfont [6 0 0 6 0 0] makefont

выполняют ровно одно и тоже: создают шрифт Helvetica размером 6 пунктов. Действие оператора makefont однако значительтно шире, чем у scalefont. Он позволяет как угодно сжимать и растягивать текст. Следующая прграмма из “Голубой книги” показывает технику работы с makefont.

/basefont /Helvetica findfont def

/LM 72 def

/newline

{currentpoint 13 sub

 exch pop LM

 exch moveto} def

% основная программа

LM 400 moveto

% обычная печать

basefont [12 0 0 12 0 0] makefont setfont

(Пример нормальной печати) show newline

% растянутый.

basefont [17 0 0 12 0 0] makefont setfont

(Растянутый шрифт) show newline

% сжатый

basefont [7 0 0 12 0 0] makefont setfont

(Сжатый шрифт) show newline

% наклонный

basefont [12 0 6.93 12 0 0] makefont

setfont

(Italic) show

showpage

 

<рис. файл p4_4.ps>

 

Программа печатает четыре строки, каждый раз преобразуя текущий шрифт, с помощью различных матриц шрифта. Во второй и третьей строке изменялся масштаб по горизонтали (Вы можете поэксперементировать, задавая различный масштаб и по вертикали, но не забудьте поменять константу в процедуре newline, чтобы строки не наползали одна на другую). Интересна последняя строка. Третье число в матрице 6.93 представляет собой результат умножения у на tg 30 градусов. Таким образом задан наклон шрифта.

Вы можете поэкспериментировать с матрицами преобразования, чтобы лучше почувствовать, что происходит с шрифтом.

Все эти преобразования пространства пользователя можно выполнить также с помощью операторов scale и setmatrix. Однако  в отличие от makefont их действие распространяется на все, что печатается на текущей странице. Если нужно сжать, растянуть или наклонить текст, то следует пользоваться только makefont.

 

Занятие пятое

 

До сих пор мы обходились без указания на различия в версиях различных языка PostScript, но сейчас это необходимо сделать. Начнём с небольшого экскурса в историю языка.




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