Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
167
Добавлен:
22.03.2015
Размер:
5.01 Mб
Скачать

Пример контурной подпрограммы:

dup 9 RD {

24 vlineto -8 hlineto -64 -24 33 55 hvcurveto return } NP

Область описания символов - основная область Type 1

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

Правила построения контуров и разметки мы обсудим ниже, а здесь приведем пример описания символа B:

/B RD { 21 675 hsbw

96 112 vstem 512 120 vstem 0 24 hstem 384 40 hstem

672 40 hstem 688 24 hstem 712 vmoveto 6 callsubr -489 vlineto 5 callsubr 360 hlineto

192 80 84111 hvcurveto 0 103 -84 50-7224 rrcurveto 29 4 callsubr 72 27 52 49 0 74 rrcurveto 130 127 60 -181 vhcurveto closepath -84 -40 rmoveto 80 hlineto 132 68 -56 -97 hvcurveto

-86 -72 -49 -112 vhcurveto -96 hlineto closepath

-40 vmoveto 99 hlineto 30 4 callsubr 112 0 94 -48 -1 -107 rrcurveto -83 -66 -66 -112vhcurveto -52 hlineto -34 0 -24 11 -16 13 rrcurveto closepath

endchar } ND

Описание символов в формате Type 1

Для описания символов в формате Type 1 используется специальный язык, который так и называется - язык программирования Type 1. Используя команды этого языка (а их более 20), можно формировать символы любой сложности, вызывать глобальные и локальные подпрограммы, производить разметку символов и даже выполнять промежуточные вычисления.

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

Например, следующий текст на языке Type 1:

21 675 hsbw 0 712 rmoveto -24 vlineto 10 hlineto 69 27 -26 -61 hvcurveto

после кодирования будет выглядеть так:

- 158 -

AO F9 37 OD F9 5C 04 73 07 95 06 C6A6 71 4E 1F.

После кодирования описания символов еще и шифруются:

2A 40 1E A8 39 56 8E 4D 33 80 FO 6B 33 90 A5 F9,

так что без специальных программ разобраться в них совершенно невозможно. B дальнейшем мы будем приводить примеры в исходной записи.

Команды языка Type 1 можно разделить на несколько групп.

Команды построения контура

rlineto, hlineto, vlineto, rmoveto, hmoveto, vmoveto, rrcurveto, vhcurveto, hvcurveto, hsbw, sbw, seac, setcurrentpoint, closepath

Команды разметки

hstem, vstem, hstem3, vstem3, dotsection

Команды управления

callsubr, callothersubr, endchar, return

Арифметические команды и команды управления стеком div, pop

Описание каждого символа начинается с команд hsbw или sbw, которые определяют величину левого поля и ширину символа. Описание символа заканчиваются командой endchar. Описание подпрограммы - командой return.

Координатная система символов. Все символы в Type 1

шрифтах представляются в единой координатной сетке. Преобразование символов в соответствии с координатной системой выводного устройства производится через матрицу, заданную в заголовке шрифта (FontMatrix) (Рисунок 6.8). При этом после трансформирования через матрицу получается шрифт кеглем в 1 пункт.

Матрица состоит из 6 чисел: [a b с d tx ty].

Расчет итоговых координат производится следующим образом:

x' = ax + cу + tx y'=bx + dy + ty

Обычно в Type 1 шрифтах используется сетка в 1000 единиц (то есть 1000 единиц координатного пространства символа соответствуют 1 пункту, а прописные буквы имеют высоту примерно 700 единиц), при этом коэффициенты матрицы а и d равны 0.001.

При помощи FontMatrix можно создавать наклонные (не курсивные!) начертания без изменения самого шрифта. Для этого коэффициенту с нужно присвоить значение, равное синусу угла наклона. На-

- 159 -

пример, матрица для координатной сетки 1000 с наклоном в 12° впра-

во будет выглядеть так: [0.001 0 0.2 0.001 00].

Рисунок 6.8 Схема преобразования символа

Коэффициенты b, tx и ty обычно не используются в Type 1 шрифтах.

Представление контуров символов. Как уже говорилось, в

формате Type 1 контуры символов формируются из участков прямых линий (назовем их векторами) и участков кривых Безье третьего по-

рядка (Рисунок 6.9).

Рисунок 6.9 Образец контура символа в формате Type 1

Для большей компактности горизонтальные и вертикальные векторы, а также кривые, определяемые вертикальными и горизонтальными контрольными векторами, описываются отдельными командами. Все команды описания контуров оперируют относительными координатами.

Отдельные контуры, образующие символ (например, в символе B таких контуров три) соединяются скрытыми векторами (команды rmoveto, hmoveto и vmoveto). Все контуры замыкаются при помощи команды closepath.

- 160 -

Рисунок 6.10 Правило заполнения контуров в формате Type 1

B формате Type 1 существует следующее правило заполнения контуров: все контуры, направленные против часовой стрелки заполняются, а идущие в противоположном направлении - нет (Рисунок 6.10). Правило формулируется так: при обходе контура по его направлению заполняется область, лежащая слева.

Первая команда описания (hsbw или sbw) определяет положение полей символа (Рисунок 6.11). B ней задается левое поле символа (то есть расстояние от левой границы до самой левой точки контура) и ширина символа (расстояние между линиями полей):

Отличие между командами hsbw и sbw состоит в том, что первая из них определяет только горизонтальные метрики символа, а вторая - и вертикальные компоненты полей и ширины (например, для японских иероглифов).

- 161 -

Соседние файлы в папке Шрифты. Разработка и использование
  • #
    22.03.20156.15 Кб13.DS_Store
  • #
    22.03.2015256 б24Как Стать Графическим Дизайнером Самостоятельно За Полгода.webloc
  • #
    22.03.2015255 б17Советы Начинающим Дизайнерам » Как стать графическим дизайнером.webloc
  • #