Шрифты. Разработка и использование
Приведем пример типичного заголовка Туре 1-шрифта:
/Fontinfo 9 diet dup begin
/FullName (Times New Roman) readonly def
/FamilyName (Times) readonly def
/version (001.1 ) readonly def
/Weight (Normal) readonly def
/Notice ((c) Copyright Monotype, 1990) readonly def
/ItalicAngle 0 def
/isFixedPitch false def
/UnderlinePosition -100 def
/UnderlineThickness 50 def
end readonly def
/FontName /TimesNewRoman def
/PaintType 0 def
/FontType 1 def
/FontMatrix [ 0.001 0 0 0.001 0 0 ] readonly def
/FontBBox {-63 -231 1148 882 } readonly def
Кодовая таблица шрифта определяет связь между именами и кода¬
ми символов. В Туре 1-шрифтах все символы имеют уникальные имена,
которые однозначно их идентифицируют. Кодовая таблица позволяет ус¬
тановить некоторое соответствие между кодами символов, с которыми
работают программы, использующие шрифт, и именами символов. По¬
скольку кодовая таблица находится в открытой части шрифта, ее можно
изменять, тем самым меняя кодировку, в которой работает шрифт. Для
того чтобы, уменьшить размер большинства шрифтовых файлов фирма
Adobe ввела несколько стандартных кодовых таблиц, которые указыва¬
ются по именам. Это таблицы StandardEncoding, ISOLatinlEncoding,
Expert, ExpertSubset и Symbol. В том случае, если кодовая таблица шриф¬
та не совпадает ни с одной из стандартных (например, в русских шриф¬
тах), она приводится полностью.
Кодовая таблица представляет собой набор пар вида: <код> <имя>.
Код — это 8-разрядный код символа (от 0 до 255), а имя - это строка, не
имеющая пробелов. В формате Туре 1 в именах символов различаются про¬
писные и строчные буквы.
Хотя кодовая таблица Туре 1-шрифтов позволяет использовать только
8-битные значения для кодов, то есть с ее помощью можно определить не
более 256 разных символов, Туре 1-шрифт может содержать любое их ко¬
личество. В кодовой таблице символы, не попадающие в 256-знаковую об¬
ласть никак не отражаются, но они присутствуют в шрифте под своими
именами, отличающимися от других. Изменяя кодовую таблицу (напом¬
ним, что это можно делать, не затрагивая остальной шрифт), можно полу¬
чить доступ ко всем символам.
- 146 -
Глава 6. Форматы цифровых шрифтов
• Уникальный идентификатор шрифта - 24-разрядное число (от 0 до
16777215). Идентификатор должен определять один и только один
шрифт. В случае использования двух шрифтов с одинаковыми иден¬
тификаторами возможно возникновение серьезных ошибок. Иден¬
тификаторы в диапазоне 4000000 — 4999999 могут использоваться
для внутренних целей любой организации. Для других шрифтов (на¬
пример, ориентированных на продажу) необходима регистрация
идентификаторов в фирме Adobe.
Закрытая часть — это основная часть любого Туре 1-шрифта, в кото¬
рой содержатся описания символов и информация об их разметке. Зак¬
рытая часть шрифта определяется его создателями, шифруется при помо¬
щи особого алгоритма и не может быть изменена после загрузки шрифта
в принтер. Вообще говоря, шифрование этой части потеряло всякий смысл
после того, как в 1990 году был опубликован алгоритм дешифровки, но для
обеспечения совместимости со старыми устройствами шрифты продол¬
жают зашифровывать. Кроме того, шифрование закрытой части Туре 1-
шрифтов немного ограничивает возможности тех, кто нелегально пытает¬
ся их изменить и выдать за свои. Теоретически, сам акт дешифровки может
в некоторых случаях считаться нарушением авторских прав.
В закрытой части есть области, зашифрованные дважды, — это описания
подпрограмм и символов. При этом для дополнительной экономии места при¬
меняется специальный метод кодирования числовых значений и команд.
Зашифрованная часть начинается после слова еехес и, так же, как и от¬
крытая, состоит из четырех областей.
• Область глобальной разметки, в которой содержатся описания па¬
раметров шрифта, которые используются для улучшения качества
растеризации. Вот краткое описание некоторых из них.
BlueValues Массив пар чисел (до 7 пар в возрастающем поряд¬
ке), определяющих зоны выравнивания сверху
(кроме первой пары, которая определяет зону вы¬
равнивания базовой линии снизу).
OtherBlues Массив пар чисел (до 5 пар в возрастающем поряд¬
ке), определяющих зоны выравнивания снизу, на¬
пример для нижних выносных элементов.
FamilyBlues Массив, определяющий зоны выравнивания
сверху для всех шрифтов гарнитуры. По построе¬
нию он аналогичен массиву BlueValues. В том слу¬
чае, когда в тексте соседствуют символы разных
начертаний одного семейства, используются зна¬
чения из этого массива, что гарантирует отсутствие
скачков между начертаниями.
- 147 -