
- •Глава 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
- •Образец заявки о выдаче патента на гарнитуру наборного шрифта
- •Гарнитура наборного шрифта «Арбат»
- •Аналоги промышленного образца
- •Перечень иллюстраций
- •Сущность промышленного образца
- •Основные размеры заявляемого шрифта (в мм)
- •Возможность многократного воспроизведения промышленного образца
- •Перечень существенных признаков промышленного образца
- •Выводы:
Пример контурной подпрограммы:
dup 9 RD {
24 vlineto -8 hlineto -64 -24 33 55 hvcurveto return } NP
•Область описания символов - основная область Type 1
шрифта, определяющая изображения всех символов шрифта. Описание каждого символа включает его имя, ширину левого поля, ширину символа (расстояние от линии левого поля до линии правого поля), описания разметки и контура. B этой области всегда присутствует неопределенный символ с именем .notdef и символ пробела с именем space.
Правила построения контуров и разметки мы обсудим ниже, а здесь приведем пример описания символа B:
/B RD { 21 675 hsbw
96 112 vstem 512 120 vstem 0 24 hstem 384 40 hstem
672 40 hstem 688 24 hstem 712 vmoveto 6 callsubr -489 vlineto 5 callsubr 360 hlineto
192 80 84111 hvcurveto 0 103 -84 50-7224 rrcurveto 29 4 callsubr 72 27 52 49 0 74 rrcurveto 130 127 60 -181 vhcurveto closepath -84 -40 rmoveto 80 hlineto 132 68 -56 -97 hvcurveto
-86 -72 -49 -112 vhcurveto -96 hlineto closepath
-40 vmoveto 99 hlineto 30 4 callsubr 112 0 94 -48 -1 -107 rrcurveto -83 -66 -66 -112vhcurveto -52 hlineto -34 0 -24 11 -16 13 rrcurveto closepath
endchar } ND
Описание символов в формате Type 1
Для описания символов в формате Type 1 используется специальный язык, который так и называется - язык программирования Type 1. Используя команды этого языка (а их более 20), можно формировать символы любой сложности, вызывать глобальные и локальные подпрограммы, производить разметку символов и даже выполнять промежуточные вычисления.
Для экономии объема, занимаемого шрифтом, все команды языка и числа кодируются при помощи особого алгоритма, сочетающего сравнительно высокую компактность и быстроту декодирования.
Например, следующий текст на языке Type 1:
21 675 hsbw 0 712 rmoveto -24 vlineto 10 hlineto 69 27 -26 -61 hvcurveto
после кодирования будет выглядеть так:
- 158 -
AO F9 37 OD F9 5C 04 73 07 95 06 C6A6 71 4E 1F.
После кодирования описания символов еще и шифруются:
2A 40 1E A8 39 56 8E 4D 33 80 FO 6B 33 90 A5 F9,
так что без специальных программ разобраться в них совершенно невозможно. B дальнейшем мы будем приводить примеры в исходной записи.
Команды языка Type 1 можно разделить на несколько групп.
•Команды построения контура
rlineto, hlineto, vlineto, rmoveto, hmoveto, vmoveto, rrcurveto, vhcurveto, hvcurveto, hsbw, sbw, seac, setcurrentpoint, closepath
•Команды разметки
hstem, vstem, hstem3, vstem3, dotsection
•Команды управления
callsubr, callothersubr, endchar, return
•Арифметические команды и команды управления стеком div, pop
Описание каждого символа начинается с команд hsbw или sbw, которые определяют величину левого поля и ширину символа. Описание символа заканчиваются командой endchar. Описание подпрограммы - командой return.
Координатная система символов. Все символы в Type 1
шрифтах представляются в единой координатной сетке. Преобразование символов в соответствии с координатной системой выводного устройства производится через матрицу, заданную в заголовке шрифта (FontMatrix) (Рисунок 6.8). При этом после трансформирования через матрицу получается шрифт кеглем в 1 пункт.
Матрица состоит из 6 чисел: [a b с d tx ty].
Расчет итоговых координат производится следующим образом:
x' = ax + cу + tx y'=bx + dy + ty
Обычно в Type 1 шрифтах используется сетка в 1000 единиц (то есть 1000 единиц координатного пространства символа соответствуют 1 пункту, а прописные буквы имеют высоту примерно 700 единиц), при этом коэффициенты матрицы а и d равны 0.001.
При помощи FontMatrix можно создавать наклонные (не курсивные!) начертания без изменения самого шрифта. Для этого коэффициенту с нужно присвоить значение, равное синусу угла наклона. На-
- 159 -

пример, матрица для координатной сетки 1000 с наклоном в 12° впра-
во будет выглядеть так: [0.001 0 0.2 0.001 00].
Рисунок 6.8 Схема преобразования символа
Коэффициенты b, tx и ty обычно не используются в Type 1 шрифтах.
Представление контуров символов. Как уже говорилось, в
формате Type 1 контуры символов формируются из участков прямых линий (назовем их векторами) и участков кривых Безье третьего по-
рядка (Рисунок 6.9).
Рисунок 6.9 Образец контура символа в формате Type 1
Для большей компактности горизонтальные и вертикальные векторы, а также кривые, определяемые вертикальными и горизонтальными контрольными векторами, описываются отдельными командами. Все команды описания контуров оперируют относительными координатами.
Отдельные контуры, образующие символ (например, в символе B таких контуров три) соединяются скрытыми векторами (команды rmoveto, hmoveto и vmoveto). Все контуры замыкаются при помощи команды closepath.
- 160 -

Рисунок 6.10 Правило заполнения контуров в формате Type 1
B формате Type 1 существует следующее правило заполнения контуров: все контуры, направленные против часовой стрелки заполняются, а идущие в противоположном направлении - нет (Рисунок 6.10). Правило формулируется так: при обходе контура по его направлению заполняется область, лежащая слева.
Первая команда описания (hsbw или sbw) определяет положение полей символа (Рисунок 6.11). B ней задается левое поле символа (то есть расстояние от левой границы до самой левой точки контура) и ширина символа (расстояние между линиями полей):
Отличие между командами hsbw и sbw состоит в том, что первая из них определяет только горизонтальные метрики символа, а вторая - и вертикальные компоненты полей и ширины (например, для японских иероглифов).
- 161 -