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

Например, с их помощью легко можно заблокировать полное исчезнове¬
ние полей. Для этого достаточно написать фрагмент программы, который
бы не позволял приравнивать горизонтальные координаты дополнитель¬
ных точек и крайних точек символа.

В некоторых операциях требуется указание одной из трех опорных то¬
чек, которые могут указывать на любую из точек контура в слое 1 или на
промежуточные точки в слое 0. Номера опорных точек определяются в об¬
ласти графического состояния интерпретатора языка разметки и могут
быть изменены специальными командами.

Измерение расстояний и перемещение точек

Измерение расстояний между точками и перемещение точек происхо¬
дит в строго фиксированных направлениях, которые определяются век¬
торами: projection_vector для измерения расстояний и freedom_vector для
перемещения точек (см.рис. 6.23):

Направления этих векторов определяются специальными командами.

Расстояние между точками может быть разным: белым, серым и чер¬
ным. Отличия между ними заключаются в том, что при округлении значе¬
ний каждого вида расстояния используются разные методы.

Вектор направления
перемещения

Величина перемещения
Вектор направления
измерения

Измеренное расстояние

18

Рис. 6.23. Принцип измерения расстояний между точками в ТтиеТуре-шрифтах

Белое расстояние используется для измерения белых областей и оп¬
ределяет дистанцию между ближними краями точек:

Белое расстояние

№

Рис. 6.24а. Белое расстояние между
точками

- 166 -

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

Черное расстояние измеряет дистанцию между внешними краями
точек:

Черное расстояние

I

Рис. 6.246. Черное расстояние между
точками

Серое расстояние используется в ситуациях, сочетающих белое и чер¬
ное расстояния, и определяет дистанцию между серединами точек:

Серое расстояние

i

i

<

>

•

•

т

я

i

•

Рис. 6.24в. Серое расстояние между
точками

Перемещение точек может быть относительным или абсолютным. От¬
носительное перемещение задается от одной из трех опорных точек, а аб¬
солютное — относительно начала координат.

Обычно оба метода комбинируются, что позволяет достичь максималь¬
ной гибкости.

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

Изменение контура в зависимости от размера символа

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

Если при помощи описательных команд не удается точно определить
форму некоторых элементов символов, применяется командная размет¬
ка. При этом однозначно программируется положение точек, которое они
должны занимать в момент, когда размер символа (в растровых точках)
находится в заданном диапазоне.

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

- 167 -