- •Глава 1
- •Шрифтовое дело в России
- •Графические характеристики шрифта
- •Принципы классификации шрифта
- •Шрифтовая система измерений
- •Глава 2
- •Эстетика и удобочитаемость шрифта
- •Некоторые последствия наступления цифровой эпохи
- •Требование удобочитаемости
- •Факторы, влияющие на скорость чтения
- •Основные требования к шрифту
- •Назначение и срок службы издания
- •Зачем нужны медленно-читаемые шрифты
- •Дизайнер и информационное общество
- •Читабельность технических шрифтов
- •«Акцидентные» и «наборные» печатные шрифты
- •Традиционная оценка удобочитаемости, характерности или нейтральности, употребимости, прозрачности гарнитур некоторых шрифтовых семейств
- •Высота строчного знака в наборных гарнитурах
- •Удобочитаемость и пробелы
- •Абзац
- •Спуск
- •Интерлиньяж
- •Межсловные пробелы
- •Межбуквенные пробелы
- •Глава 3
- •Проектирование наборного шрифта
- •Как не надо делать шрифты
- •Изучение прототипа
- •C чего начать?
- •Конструкция и гарнитурные признаки шрифта
- •Оптические компенсации в шрифте
- •Прописные буквы
- •Строчные буквы
- •Акценты
- •Курсивные и наклонные начертания
- •Полужирные и жирные начертания
- •Апроши
- •Кернинг
- •Глава 4
- •Компьютерные шрифты
- •Язык Adobe PostScript
- •Растрирование в PostScript-технологии
- •Растровые и векторные изображения
- •Что такое «растрирование»
- •Программные и аппаратные RIP
- •Глава 5
- •Шрифт в компьютере
- •Кодировка шрифта
- •Растровые, векторные и контурные шрифты
- •Растровые шрифты
- •Векторные шрифты
- •Контурные шрифты
- •Шрифты в операционной системе. Файл шрифтов. Установка и удаление шрифтов
- •Шрифты в Windows 3.x
- •Шрифты в Windows 95
- •Шрифты в Macintosh
- •Семейства шрифтов и начертания
- •Глава 6
- •Форматы цифровых шрифтов
- •Понятие о формате и шрифтовой машине
- •Структура шрифтового формата
- •Кодирование шрифтов
- •Стандарт кодирования Unicode
- •Управление растеризацией символов
- •Алгоритм растеризации
- •Проблемы растеризации
- •Методы разметки символов
- •Декларативный метод разметки
- •Программируемый метод разметки
- •Общая структура шрифта в формате Type 1
- •Описание символов в формате Type 1
- •Разметка в Type 1 шрифтах
- •Формат TrueType
- •Построение символов
- •Координатная система TrueType-шрифтов
- •Масштабирование символов
- •Разметка в TrueType-шрифтах
- •Общее описание языка разметки
- •Обозначение точек
- •Измерение расстояний и перемещение точек
- •Изменение контура в зависимости от размера символа
- •Построение шрифтовых файлов
- •Другие форматы
- •Глава 7
- •Шрифтовые программы
- •Редакторы контурных шрифтов
- •Система редактирования шрифтов FontLab
- •Создание нового шрифта
- •Содержимое экрана
- •Способы построения символов
- •Автоматическое тестирование правильности построения контуров
- •Разметка символов
- •Использование подпрограмм
- •Трансформации и эффекты
- •Формирование заголовка шрифта
- •Редактирование метрик символов
- •Экспорт шрифта
- •Редактирование существующих шрифтов
- •Сервисные программы
- •Программы для поиска шрифтов
- •Программы для печати примера шрифтов
- •Программы для преобразования шрифтов
- •Программы для простого редактирования шрифтов
- •Глава 8
- •Практическая работа со шрифтами
- •Шрифты «свои»
- •Пользуйтесь легально приобретенными шрифтами
- •Составьте каталог своих шрифтов
- •Распределите свои шрифты по каталогам
- •He трогайте фирменные шрифты
- •Унифицируйте шрифты
- •Шрифты «чужие»
- •He смешивайте шрифты
- •Сделайте резервную версию системных шрифтов
- •Каждой работе - свой комплект шрифтов
- •Что нужно для верстки
- •Аппаратные средства
- •Программные средства
- •Вывод текста
- •Вывод на принтере
- •Вывод на лазерном экспонирующем устройстве
- •Проблемы и решения
- •Проблемы, наблюдаемые «на экране»
- •Проблемы, наблюдаемые «на бумаге»
- •Глава 9
- •Как покупать шрифты
- •Системы защиты шрифтов от копирования
- •Способы продажи шрифтов
- •Продажа шрифтов «россыпью»
- •Продажа открытых шрифтовых пакетов
- •Продажа зашифрованных шрифтов
- •Критерии качества шрифтов
- •Качество контуров
- •Основные ошибки описания контуров
- •Качество разметки
- •Полнота набора знаков
- •Правильность кодировки
- •Правильность оформления заголовка
- •Соответствие требованиям формата
- •Полнота описания метрических параметров
- •Некоторые поставщики шрифтов
- •Глава 10
- •Юридические аспекты разработки и использования шрифтов
- •Пиратство на рынке шрифтов
- •Как защитить шрифт в России
- •Приложение 1
- •Шрифтовые синонимы
- •Приложение 2
- •Примеры кодовых таблиц, поддерживающих кириллицу
- •Альтернативная кодировка DOS (866)
- •Кодировка КОИ-8
- •Кодировка Windows (1251)
- •Приложение 3
- •Лицензионная политика
- •Базовая лицензия
- •Многопользовательская лицензия
- •Ограниченная корпоративная лицензия
- •Лицензия на публикацию
- •Неограниченная корпоративная лицензия
- •Лицензионное соглашение
- •Лицензионные права
- •Лицензионные ограничения
- •Права собственности
- •Гарантийные обязательства
- •Приложение 4
- •Приложение 5
- •Образец заявки о выдаче патента на гарнитуру наборного шрифта
- •Гарнитура наборного шрифта «Арбат»
- •Аналоги промышленного образца
- •Перечень иллюстраций
- •Сущность промышленного образца
- •Основные размеры заявляемого шрифта (в мм)
- •Возможность многократного воспроизведения промышленного образца
- •Перечень существенных признаков промышленного образца
- •Выводы:
шрифты) применяют специальные системы, автоматически формирующие программы разметки символов и шрифта.
Такой путь обычно приводит к невысокому качеству растеризации шрифтов, так что потенциальное преимущество программируемой разметки теряется.
Рисунок 6.7 Элементы разметки при программируемом методе
Общая структура шрифта в формате Type 1
Любой Type 1 шрифт состоит из двух основных частей: открытой и закрытой (зашифрованной):
Открытая часть |
Закрытая часть |
||
• |
Обозначение шрифта |
• |
Область глобальной разметки |
• |
Заголовок шрифта |
• |
Область глобальных подпрограмм |
• |
Кодовая таблица шрифта |
• Область подпрограмм разметки и |
|
• |
Уникальный идентификатор |
|
контурных подпрограмм |
|
шрифта |
• |
Область описаний символов |
Открытая часть. B открытой части Type 1 шрифта содержится информация, доступная для любого текстового редактора. Эта часть может быть изменена при условии, что закрытая часть останется нетронутой. B открытой части можно выделить 4 области.
•Обозначение шрифта показывает, что файл является именно шрифтом:
%!PS-AdobeFont-1.0: TimeRoman 001.1
- 152 -
%%CreationDate: Wed Oct 20 17:08:26 1993 %%Creator: FontLab(c) forWindowsv2.5
•Заголовок шрифта, в котором хранится следующая информация:
FontName |
Регистрационное имя шрифта |
FullName |
Полное имя шрифта |
FamilyName |
Имя гарнитуры, в которую входит |
|
шрифт |
Version |
Наименование версии шрифта |
Notice |
Информация о создателях шрифта и |
|
об авторских правах на шрифт |
Weight |
Информация о насыщенности шрифта |
ItalicAngle |
Угол наклона символов шрифта в гра- |
|
дусах против часовой стрелки |
IsFixedPitch |
Информация о том, является ли шрифт |
|
моноширинным |
UnderlinePosition |
Положение линии подчеркивания |
UnderlineThickness |
Толщина линии подчеркивания |
PaintType |
Вид шрифта: 0 - сплошной (заполняе- |
|
мый); 1 - контурный. Все Type 1 шриф- |
|
ты являются сплошными |
FontType |
Тип шрифта: 0 - Type 0 шрифт (состав- |
|
ной); 1 - Type 1 шрифт; 3 - Type 3 |
|
шрифт. |
FontMatrix |
Стандартная матрица трансформиро- |
|
вания символов. Ее более подробное |
|
описание приведено в разделе «Опи- |
|
сание символов». |
FontBBox |
Минимальный прямоугольник, охваты- |
|
вающий все символы шрифта. |
Приведем пример типичного заголовка Type 1 -шрифта:
/FontInfo 9 dict 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
- 153 -
/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
Кодовая таблица шрифта определяет связь между именами и кодами символов. B Type 1 шрифтах все символы имеют уникальные имена, которые однозначно их идентифицируют. Кодовая таблица позволяет установить некоторое соответствие между кодами символов, с которыми работают программы, использующие шрифт, и именами символов. Поскольку кодовая таблица находится в открытой части шрифта, ее можно изменять, тем самым меняя кодировку, в которой работает шрифт. Для того чтобы уменьшить размер большинства шрифтовых файлов фирма Adobe ввела несколько стандартных кодовых таблиц, которые указываются по именам. Это таблицы StandardEncoding, ISOLatin1Encoding, Expert, ExpertSubset и Symbol. B том случае, если кодовая таблица шрифта не совпадает ни с одной из стандартных (например, в русских шрифтах), она приводится полностью.
Кодовая таблица представляет собой набор пар вида: <код> <имя>. Код - это 8-разрядный код символа (от 0 до 255), а имя - это строка, не имеющая пробелов. B формате Type 1 в именах символов различаются прописные и строчные буквы.
Хотя кодовая таблица Type 1 шрифтов позволяет использовать только 8-битные значения для кодов, то есть с ее помощью можно определить не более 256 разных символов, Type 1 шрифт может содержать любое их количество. B кодовой таблице символы, не попадающие в 256-знаковую область никак не отражаются, но они присутствуют в шрифте под своими именами, отличающимися от других. Изменяя кодовую таблицу (напомним, что это можно делать, не затрагивая остальной шрифт), можно получить доступ ко всем символам.
•Уникальный идентификатор шрифта - 24-разрядное число (от 0 до 16777215). Идентификатор должен определять один и только один шрифт. B случае использования двух шрифтов с одинаковыми идентификаторами возможно возникновение серьезных ошибок. Идентификаторы в диапазоне 4000000 - 4999999 могут использоваться для внутренних целей любой организации. Для других шрифтов (например, ориентированных на продажу) необходима регистрация идентификаторов в фирме Adobe.
Закрытая часть - это основная часть любого Type 1 шрифта,
- 154 -
в которой содержатся описания символов и информация об их разметке. Закрытая часть шрифта определяется его создателями, шифруется при помощи особого алгоритма и не может быть изменена после загрузки шрифта в принтер. Вообще говоря, шифрование этой части потеряло всякий смысл после того, как в 1990 году был опубликован алгоритм дешифровки, но для обеспечения совместимости со старыми устройствами шрифты продолжают зашифровывать. Кроме того, шифрование закрытой части Type 1 шрифтов немного ограничивает возможности тех, кто нелегально пытается их изменить и выдать за свои. Теоретически, сам акт дешифровки может в некоторых случаях считаться нарушением авторских прав.
B закрытой части есть области, зашифрованные дважды, - это описания подпрограмм и символов. При этом для дополнительной экономии места применяется специальный метод кодирования числовых значений и команд.
Зашифрованная часть начинается после слова eexec и, так же, как и открытая, состоит из четырех областей.
•Область глобальной разметки, в которой содержатся опи-
сания параметров шрифта, которые используются для улучшения качества растеризации. Вот краткое описание некоторых из них.
BlueValues Массив пар чисел (до 7 пар в возрастающем порядке), определяющих зоны выравнивания сверху (кроме первой пары, которая определяет зону выравнивания базовой линии снизу).
OtherBlues Массив пар чисел (до 5 пар в возрастающем порядке), определяющих зоны выравнивания снизу, например для нижних выносных элементов.
FamilyBlues Массив, определяющий зоны выравнивания сверху для всех шрифтов гарнитуры. По построению он аналогичен массиву BlueValues. B том случае, когда в тексте соседствуют символы разных начертаний одного семейства, используются значения из этого массива, что гарантирует отсутствие скачков между начертаниями.
FamilyOtherBlues To же, что и FamilyBlues, но для вырав-
нивания снизу.
- 155 -
BlueScale |
Определяет размер шрифта, начиная с |
|
которого отключается механизм вырав- |
|
нивания символов. Для разрешающей |
|
способности 300 точек на дюйм рассчи- |
|
тывается по формуле: BlueScale = (point |
|
size - 0.49) / 240. |
BlueShift |
Определяет величину оптического на- |
|
плыва (в точках выводного устройства), |
|
начиная с которой отключается его по- |
|
давление. |
BlueFuzz |
Увеличивает ширину зон выравнивания. |
StdHW и StdVW |
Определяют наиболее распространен- |
|
ные толщины горизонтальных и верти- |
|
кальных штрихов. B то случае, когда по- |
|
сле масштабирования контур толщины |
|
штрихов мало отличаются от стандарт- |
|
ных значений, используются эти значе- |
|
ния, что улучшает внешний вид симво- |
|
лов и скрадывает ошибки построения |
|
контуров. |
StemSnapH |
Массивы (до 12 элементов в возрастаю- |
|
щем порядке), |
и StemSnapV |
показывающие наиболее распростра- |
|
ненные толщи ны горизонтальных и вер- |
|
тикальных штрихов. |
ForceBold |
Определяет дополнительное увеличение |
|
толщин штрихов для полужирных и жир- |
|
ных начертаний Если установлен этот |
|
параметр, то толщина штрихов полужир- |
|
ных начертаний всегда больше, чем у |
|
светлых начертаний, даже в том случае, |
|
когда толщина светлых штрихов равна 1 |
|
растровой точке. |
Приведем пример описания этих значений в шрифте.
/BlueValues [-16 0 488 504 712 728 752 752] ND /OtherBlues [-224 -221] ND
/BlueScale .039625 def /BlueShift 7 def /BlueFuzz 1 def /StdHW [48] ND /StdVW [104] ND
• Область глобальных подпрограмм содержит несколько
- 156 -
подпрограмм, написанных на языке PostScript. Обычно они используются для реализации наиболее сложных методов разметки. Теоретически при помощи этих подпрограмм можно описать любые алгоритмы (что и демонстрирует формат Multiple Master, реализованный при их помощи), которые можно вызывать непосредственно из описаний символов. Однако в том случае, если шрифт планируется использовать с программами растеризации «на лету», например с ATM, достаточно нескольких стандартных подпрограмм.
Пример текста подпрограммы, реализующей алгоритм смены хинтов:
%.Copyright(c) 1987-1990 Adobe Systems Incorporated. %.Al1 Rights Reserved.
%.This code to be used for Flex and hint replacement. %.Version l.l
/OtherSubrs [ {}{}{}{
systemdict /internaldict known not
{pop 3 }
{1183615869 systemdict /internaldict get exec dup /startlock known
{/startlock get exec }
{dup /strtlck known
{/strtlck get exec }
{pop 3 }
ifelse } ifelse }
ifelse} executeonly
•Область подпрограмм разметки и контурных подпро-
грамм. Язык описания Type 1 шрифтов, как и PostScript, имеет встроенные возможности для структурной организации программы, реализованные в виде команд вызова глобальных (PostScript) и локальных (написанных на языке Type 1) подпрограмм. Локальные подпрограммы обычно применяются для организации сложной разметки символов (смены хинтов, о которой мы поговорим чуть позднее) и для описания повторяющихся элементов символов.
Пример декодированной подпрограммы разметки:
dup 47 RD {
67 78 vstem 358 84 vstem 0 28 hstem 241 28 hstem 470 28 hstem return } NP
- 157 -