ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 04.05.2024
Просмотров: 591
Скачиваний: 0
шин: Type 1 + ATM для системы Windows и TrueType-машина Windows 3.1. Однако при сравнении той же TrueType машины и ATM для операционной системы NeXTStep или OS/2 2.0 выясняется преимущество формата Type 1.
Рисунок 6.1 Схема реализации шрифтовой машины
B дальнейшем в разговоре о форматах мы будем иметь в виду наиболее распространенные шрифтовые машины и не будем дополнительно останавливаться на этом.
Структура шрифтового формата
Как и любой шрифт, имеющий определенный набор параметров, повторяющихся от шрифта к шрифту, любой шрифтовой формат имеет некоторые обязательные части. Перечислим их с краткими пояснениями.
Область заголовка. B этой части располагается следующая информация:
1.Информация о различных вариантах наименования шрифта (рабочее имя шрифта, имя гарнитуры и начертания, полное имя шрифта, имена и индексы, под которыми шрифт воспринимают прикладные программы).
2.Информация о создателях шрифта (знак принадлежности прав, ссылка на автора исходного рисунка шрифта, информация о торговой марке, история создания шрифта).
3.Регистрационная информация, предназначенная для автоматической классификации шрифта и обеспечения подстановки шрифтов. Обычно в этой области расположены описания насыщенности, угла наклона и пропорциональности шрифта, а также код шрифта по
-143 -
одной из систем описания шрифтов.
4. Статистическая информация о шрифте (минимальный охватывающий прямоугольник43, количество символов и др.).
Область описания метрических параметров. B этой части описываются все измерения символов. Обычно к ним относят информацию о ширине символов, минимальные охватывающие прямоугольники44 для всех символов, информацию о кернинге и трекинге шрифта. B некоторых форматах (например, в формате Type 1) информация о трекинге и кернинге сохраняется в отдельном файле.
Область описания общих элементов. Некоторые символы имеют одинаковые элементы. Для сокращения объема шрифтового файла и для того, чтобы гарантировать действительную одинаковость этих элементов, они отделяются от символов. Символы содержат только ссылки на такие элементы. To же самое относится и к некоторым средствам разметки, общим для нескольких символов.
Область описания системы кодирования. B этой области располагаются кодовые таблицы, относящиеся к шрифту.
Область описания разметки символов. B этой области на-
ходится информация о разметке символов, необходимая для их качественного воспроизведения.
Область описания символов. Это - основная часть шрифто-
вого файла. B ней находится описание самих символов. Для формирования контуров символов могут использоваться различные математические и логические методы. Обычно метод описания контуров и определяет эффективность работы, а также особенности растеризации шрифтов определенного формата.
Кодирование шрифтов
При печати определенным шрифтом возникает задача поиска соответствия между кодом, которым представлен символ в компьютерном тексте, и символом цифрового шрифта. Эту задачу решает система кодирования шрифтовой машины. Как и любая шрифтовая машина, система кодирования состоит из двух частей: одна из них имеет отношение непосредственно к шрифту, другая - к программе воспроизведения символов (растеризатору). Только абсолютно точное соответствие между этими частями обеспечивает правильное воспроизведение текста.
Взаимодействие между системами кодирования шрифта и
43Минимальный охватывающий прямоугольник шрифта - это прямоугольник минимального размера, в который целиком помещаются все символы шрифта.
44Минимальный охватывающий прямоугольник символа - это минимальный прямоугольник, в который помещаются все точки его цифрового описания.
-144 -
растеризаторa происходит при указании кодировки, применяемой в текущий момент, Имеется несколько методов определения кодировок, но, как правило, она выбирается по умолчанию, исходя из общепринятых установок. Обычно текущая кодировка устанавливается на уровне операционной системы и используется растеризатором при воспроизведении текста. Например, русскому языку в системе MS DOS соответствует кодировка 866 (см. Приложение 2) по классификации фирмы Microsoft (она также известна как альтернативная кодировка), в сис-
теме Windows - 1026 (так называемый стандарт Win ANSI-Russian), а в
Solaris 2.1 - это стандарт ISO 8859-5. B том случае, если растеризатор не сможет воспроизводить символы шрифта в соответствии с требованиями кодировки, текст будет воспроизводиться неправильно.
B большинстве шрифтовых стандартов применяются специальные методы, которые должны обеспечивать независимость шрифта от установленной системы кодировки. B основном используется два метода, которые можно условно определить как декларативный (применяемый в формате Type 1) и жесткий (применяемый в формате TrueType).
B обоих случаях всем символам присваиваются определенные идентификаторы, жестко связанные с внешним видом символов. B формате Type 1 для этого используются текстовые имена символов, а
вформате TrueType - и имена и индексы. B жестком методе индексы назначаются совершенно определенно и не могут изменяться, в декларативном - имена могут быть любыми.
Ив том и в другом случае шрифт содержит таблицу соответствия между кодами печатаемых символов и именами, определяющими изображения символов в шрифте. Эта таблица применяется в тех случаях, когда кодировка никак не определяется дополнительно. Различие в определение кодировок возникает только в том случае, когда она изменяется.
Если применяется декларативный метод, то таблица соответствия просто заменяется на другую. B таких шрифтах она обычно отделена от основной части шрифта и может быть легко заменена или переопределена. Для имен символов существует несколько стандартов, применение которых облегчает использование шрифтов в разных операционных системах. Например, для Type 1 шрифтов известен стандарт имен фирмы Adobe (такие, как Standard Roman Character Set, Expert Character Set и Symbol Character Set). Особенность декларатив-
ного метода заключается как раз в том, что он позволяет присваивать символам любые имена, но все-таки лучше использовать стандартные.
B жестком методе меняется таблица соответствия, заданная не
вшрифте, а в растеризаторе. To есть меняется способ, при помощи
-145 -
которого растеризатор находит соответствие между кодом символа и жестким индексом символа в шрифте, причем известно, что определенному индексу соответствует строго определенный символ. Нарушение соответствия между индексом и изображением символа остается на совести создателя шрифта. Индексы символов обычно определяются международными стандартами. Например, в формате TrueType используется стандарт Unicode.
Стандарт кодирования Unicode
Unicode - это стандарт кодирования символов, разработанный Консорциумом Unicode для определения символов вне зависимости от национальной принадлежности. Этот стандарт использует 16-битное кодирование символов (в отличие от 8-битного, принятого в современных стандартах, прежде всего в стандарте ASCII). Использование для кодирования 16 бит позволяет определить 65536 разных символов (при 8-битном кодировании можно определить только 256 символов), что оказывается достаточным для всех существующих языков, математических символов и других знаков. Co временем к стандарту Unicode добавились свойства другого многобайтного стандарта - ISO 10646.
Все индексы в стандарте разделены на группы и страницы, по 256 символов в каждой, причем довольно много индексного пространства оставлено для будущего развития. Unicode имеет индексы для всех алфавитных языков и для большинства иероглифов китайского и японского языков. Первые 256 индексов используются для совместимости со стандартом ASCII.
Unicode пока полностью реализован только в операционной системе Windows NT. Однако этот стандарт несомненно имеет будущее, так что при создании TrueType-шрифтов необходимо следить за их соответствием требованиям Unicode.
Управление растеризацией символов
Как уже говорилось, фундаментальной особенностью контурных шрифтов является отделение информации о форме символов от процесса их воспроизведения на растровом выводном устройстве. Если контуры символов шрифта можно описывать самыми разными способами, то задача воспроизведения, в конечном итоге, сводится к активизации некоторых точек (высвечиванию на экране дисплея или заполнении краской при печати на принтере). Здесь мы не будем рассматривать достаточно редкий вариант воспроизведения контурных шрифтов на векторных устройствах, например на графопостроителях
- 146 -
(хотя бы потому, что в этом случае контурные шрифты временно преобразуются в векторно-штриховую форму).
Алгоритм растеризации
Итак, при воспроизведении каждого символа на растровом устройстве (например, на лазерном принтере) необходимо решить две задачи:
масштабировать (уменьшить или увеличить) контур символа до необходимого размера. Например, при печати текста 10 кеглем на лазерном принтере с разрешением 300 точек на дюйм (12 точек на миллиметр) необходимо, чтобы контур символа H имел примерно 8 точек в высоту; активизировать все точки, попавшие во внутренние области этого кон-
тура (другими словами, заполнить контур).
Проблемы растеризации
B ходе решения этих простых, на первый взгляд, задач возникает немало проблем, связанных с масштабированием и заполнением контуров. Перечислим некоторые из них.
Нарушение пропорций символа. При воспроизведении симво-
лов на устройствах с малой разрешающей способностью (300 точек на дюйм и меньше), особенно при выводе текста небольшим кеглем (12 и меньше), сильно сказываются ошибки масштабирования. Масштабирование происходит в абсолютных координатах относительно некоторой произвольной точки (обычно это точка пересечения базовой линии символа и линии его левого поля) и всегда приводит к получению целочисленного результата (поскольку речь идет о растровых устройствах, в которых максимальная точность указания координат определяется разрешающей способностью).
При этом возникает проблема округления нецелых результатов. Например, если координаты некоторого элемента символа в системе координат описания контура равны (200; 100), то при уменьшении размера контура в 3 paза они трансформируются в (66.666666; 33.333333). Поскольку нам нужны целые значения, они превратятся в (67; 33), то есть значение горизонтальной координаты немного (на треть точки) увеличится, а горизонтальной - на столько же уменьшится. Если при этом специально не учитывать особенности формы символа, то он может сильно исказиться и даже стать нечитаемым. Ha Рисунок 6.2 приведен пример подобного масштабирования символа H.
Нарушение симметричности некоторых символов. Преж-
де всего этот дефект относится к символам, обладающим симметри-
- 147 -