Шрифты. Разработка и использование
Кодирование шрифтов
При печати определенным шрифтом возникает задача поиска соответ¬
ствия между кодом, которым представлен символ в компьютерном тексте,
и символом цифрового шрифта. Эту задачу решает система кодирования
шрифтовой машины. Как и любая шрифтовая машина, система кодирова¬
ния состоит из двух частей: одна из них имеет отношение непосредствен¬
но к шрифту, другая — к программе воспроизведения символов (растери-
затору). Только абсолютно точное соответствие между этими частями
обеспечивает правильное воспроизведение текста.
Взаимодействие между системами кодирования шрифта и растеризато-
ра происходит при указании кодировки, применяемой в текущий момент.
Имеется несколько методов определения кодировок, но, как правило, она
выбирается по умолчанию, исходя из общепринятых установок. Обычно
текущая кодировка устанавливается на уровне операционной системы и ис¬
пользуется растеризатором при воспроизведении текста. Например, рус¬
скому языку в системе MS DOS соответствует кодировка 866 (см. Приложе¬
ние 2) по классификации фирмы Microsoft (она также известна как
альтернативная кодировка), в системе Windows — 1026 (так называемый
стандарт WinANSI-Russian), а в Solaris 2.1 — это стандарт ISO 8859-5. В том
случае, если растеризатор не сможет воспроизводить символы шрифта в
соответствии с требованиями кодировки, текст будет воспроизводиться не¬
правильно.
В большинстве шрифтовых стандартов применяются специальные ме¬
тоды, которые должны обеспечивать независимость шрифта от установ¬
ленной системы кодировки. В основном используется два метода, которые
можно условно определить как декларативный (применяемый в формате
Туре 1) и жесткий (применяемый в формате TrueType).
В обоих случаях всем символам присваиваются определенные иден¬
тификаторы, жестко связанные с внешним видом символов. В формате
Туре 1 для этого используются текстовые имена символов, а в формате
TrueType — и имена и индексы. В жестком методе индексы назначаются
совершенно определенно и не могут изменяться, в декларативном — име¬
на могут быть любыми.
И в том и в другом случае шрифт содержит таблицу соответствия меж¬
ду кодами печатаемых символов и именами, определяющими изображе¬
ния символов в шрифте. Эта таблица применяется в тех случаях, когда ко¬
дировка никак не определяется дополнительно. Различие в определении
кодировок возникает только в том случае, когда она изменяется.
Если применяется декларативный метод, то таблица соответствия про¬
сто заменяется на другую. В таких шрифтах она обычно отделена от ос¬
новной части шрифта и может быть легко заменена или переопределена.
Для имен символов существует несколько стандартов, применение кото¬
- 138 -
Глава 6. Форматы цифровых шрифтов
рых облегчает использование шрифтов в разных операционных системах.
Например, для Туре 1 шрифтов известен стандарт имен фирмы Adobe (та¬
кие, как Standard Roman Character Set, Expert Character Set и Symbol
Character Set). Особенность декларативного метода заключается как раз в
том, что он позволяет присваивать символам любые имена, но все-таки
лучше использовать стандартные.
В жестком методе меняется таблица соответствия, заданная не в шриф¬
те, а в растеризаторе. То есть меняется способ, при помощи которого ра¬
стеризатор находит соответствие между кодом символа и жестким ин¬
дексом символа в .шрифте, причем известно, что определенному индексу
соответствует строго определенный символ. Нарушение соответствия
между индексом и изображением символа остается на совести создате¬
ля шрифта. Индексы символов обычно определяются международными
стандартами. Например, в формате TrueType используется стандарт
Unicode.
Стандарт кодирования Unicode
Unicode — это стандарт кодирования символов, разработанный Кон¬
сорциумом Unicode для определения символов вне зависимости от нацио¬
нальной принадлежности. Этот стандарт использует 16-битное кодирова¬
ние символов (в отличие от 8-битного, принятого в современных
стандартах, прежде всего в стандарте ASCII). Использование для кодиро¬
вания 16 бит позволяет определить 65536 разных символов (при 8-битном
кодировании можно определить только 256 символов), что оказывается
достаточным для всех существующих языков, математических символов
и Других знаков. Со временем к стандарту Unicode добавились свойства
другого многобайтного стандарта — ISO 10646.
Все индексы в стандарте разделены на группы и страницы, по 256 симво¬
лов в каждой, причем довольно много индексного пространства оставлено
для будущего развития. Unicode имеет индексы для всех алфавитных язы¬
ков и для большинства иероглифов китайского и японского языков. Пер¬
вые 256 индексов используются для совместимости со стандартом ASCII.
Unicode пока полностью реализован только в операционной системе
Windows NT. Однако этот стандарт несомненно имеет будущее, так что
при создании TrueType-шрифтов необходимо следить за их соответстви¬
ем требованиям Unicode.
Управление растеризацией символов
Как уже говорилось, фундаментальной особенностью контурных шриф¬
тов является отделение информации о форме символов от процесса их вос¬
произведения на растровом выводном устройстве. Если контуры симво-
- 139 -