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

может содержать значения, кратные 32 битам при 32-битной реализации
TrueType-машины (Windows NT) и 16 битам при 16-битной реализации
(Windows 3.1).

Данные и команды чередуются в потоке команд. Специальные коман¬
ды (и только они!) могут выбирать значения из потока и переносить их на
стек. Все остальные команды работают только со значениями, находящи¬
мися на стеке.

Команды языка разделяются на следующие группы:

• переносящие значения на стек;

• управляющие областью данных;

• управляющие таблицей значений;

• изменяющие текущее графическое состояние;

• управляющие контурами;

• общего назначения.

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

Основная область, в которой хранятся все постоянные и промежуточ¬
ные параметры, необходимые для разметки символов, — эго таблица зна¬
чений, сокращенно СѴТ. Для доступа к полям СѴТ существуют специаль¬
ные команды, при помощи которых можно читать значения или изменять
их. С СѴТ связана особая программа, которая запускается всякий раз при
изменении основных параметров шрифта: кегля набора или какого-либо
из чисел матрицы трансформации, например угла наклона. Обычно эта
программа используется для модификации значений в СѴТ.

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

Для хранения промежуточных значений применяется другая таблица,
которая называется областью данных (storage area). С ее помощью можно
создавать переменные и небольшие массивы данных.

Последняя глобальная область — это область графического состояния
(graphic state). Она содержит переменные, фиксирующие текущее состо¬
яние интерпретатора языка, например, способ округления значений или
направление вектора измерения расстояний. Все переменные имеют зна¬
чения по умолчанию. Для изменения этих значений обычно используется
шрифтовая программа или СѴТ-программа.

Обозначение точек

Программа разметки, написанная на языке TrueType, связывается с кон¬
турами символов, которые описываются отдельно, при помощи указания

- 164 -

Глава 6. Форматы цифровых шрифтов

номеров точек. Нумеруются все точки, определяющие контур (on-line и
off-line), как это показано на рис. 6.21:

Рис. 6.21. Нумерация точек,
определяющих контур в TrueType
шрифтах

Команды языка могут использовать любые точки, реально описываю¬
щие контур, и набор точек, используемых только в качестве промежуточ¬
ных. Для разделения этих точек символ представляется состоящим из двух
слоев: слой 1 (Z1), содержащий реальные точки, и слой О (Z0), состоящий
из промежуточных точек. Оба слоя могут применяться во всех операциях
языка.

Кроме этого, интерпретатор добавляет к описанию контура символа две
дополнительные точки, определяющие поля символа (см. рис. 6.22):

Рис. 6.22. Дополнительные точки,
определяющие поля символа в
TrueType-шрифтах

Дополнительные точки

Эти точки могут использоваться наравне с другими в программе раз¬
метки и позволяют точно определять поля символа в растровых единицах.

- 165 -