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


Кодирование шрифта


 

Каждый словарь шрифта содержит описание символов в соответствии с некоторой кодовой таблицей, в частности это может быть ASCII. Таким образом каждый символ имеет свой цифровой код -- число от 0 до 255. Кодовая таблица не является постоянной, ее можно изменять из приложения.

Коды символов можно использовать двумя способами:

- их можно с помощью оператора put вставлять в строку;

- или непосредственно использовать в строке в виде восьмеричных чисел.

Многие шрифты имеют символы не входящие в стандартную кодировку и кроме того, часто такие символы отсутствуют на клавиатуре. Чтобы посмотреть как кодируются символы того или иного шрифта, напишем программу, которая распечатывает кодовую таблицу любого заданного шрифта.

/Helvetica findfont 12 scalefont setfont

/cod 3 string def

/char 1 string def

/newline

{currentpoint 13 sub

exch pop LM

exch moveto }def

/prtnum        % в стеке код

{cod cvs show}def

/prtchar       %в стеке код

{char 3 - 1 0 roll put

char show}def

/prtall

{dup prtnum () show

prtchar newline} def

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

/LM 72 def

LM 450 moveto

12 1 60 {prtall} for

/LM 144 def

LM 144 moveto

6 1 100 {prtall} for

showpage

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

и у.

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

Операторы translate, rotate и scale для модификации координат пространства пользователя изменяет соответствующие элементы этой матрицы.

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




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



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