Шрифты. Разработка и использование
Например, с их помощью легко можно заблокировать полное исчезнове¬
ние полей. Для этого достаточно написать фрагмент программы, который
бы не позволял приравнивать горизонтальные координаты дополнитель¬
ных точек и крайних точек символа.
В некоторых операциях требуется указание одной из трех опорных то¬
чек, которые могут указывать на любую из точек контура в слое 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 -