Cпособы представления шрифтов в цифровом виде
В связи с переходом к использованию компьютерных систем допечатной подготовки изданий контент имеет теперь цифровую форму, начиная от набора исходных материалов (ввода информации) до создания оригинал-макета, фотоформ или печатных форм. При этом применяется множество самых современных технологий, таких как распознавание текста, цифровая обработка изображений, автоматическая проверка текста с грамматической и стилистической точек зрения, компьютерная верстка и цифровые выводные устройства — лазерные принтеры и фотонаборные автоматы. Переход к цифровой обработке информации потребовал создания цифровых видов шрифтов (фонтов), без которых невозможна полная автоматизация допечатных процессов.
Основой цифрового шрифта является набор описаний символов. Символы могут быть представлены различными способами. Именно эти способы и определяют вид шрифта. В настоящее время применяются следующие виды шрифтов:
- растровые (битовые) — используются во всех матричных принтерах, в некоторых лазерных и струйных принтерах, а также для отображения текстовой информации на мониторе компьютера;
- контурные — наиболее распространенный в современных издательских системах вид цифровых шрифтов.
Растровые шрифты. Растровый метод создания цифровых шрифтов основан на представлении шрифтовых знаков (символов) в виде матрицы с размерностью nxm пикселов (дискретных точек) — рис. 1.
Рис. 1. Растровое представление символа
При матричном представлении информации об изображении знака его разлагают на элементы черного и белого цвета. Для этого поле знака (площадь прямоугольника) разбивают на одинаковые части равноотстоящими горизонтальными и вертикальными линиями и полученные строки и столбцы пронумеровывают по порядку. Местоположение каждого элемента поля знака будет полностью определяться номером строки i и номером столбца j. При этом aij = 0, если элемент поля знака белого цвета, и aij = 1, если элемент черного цвета.
Например, изображению знака «О» может соответствовать битовая матрица размерностью 10x12, приведенная на рис. 2. Фактически растровый шрифт представляет собой битовый образ изображения символов, в котором хранится информация о всех точках формируемого символа.
Рис. 2. Матричное представление знака «О»
Процесс воспроизведения растровых символов сводится к переносу этого изображения на светочувствительные (термочувствительные) поверхности (плоскую или цилиндрическую) в выводных устройствах (фотовыводных, формовыводных, лазерных принтерах и т.д.). Никаких предварительных преобразований не требуется. В этих устройствах при сканировании, то есть при поэлементной записи изображения по заданной траектории, формируется растровое изображение.
Применяются два основных метода формирования растрированного изображения шрифтовых знаков. Первый метод основан на формировании знаков из горизонтальных точечнорастровых строк, которые для соответствующих линий сканирования изображения содержат последовательность черных и белых отрезков для всех знаков в набираемой строке текста. Длина этих отрезков определяется количеством соответственно черных и белых пикселов, информация о которых содержится в строках битовых матриц воспроизводимых знаков. В результате записи световым пятном таких точечнорастровых строк по горизонтали и перемещения записываемого материала по вертикали на величину шага растра в моменты между окончанием и началом записи двух соседних строк формируется изображение текстовой полосы (рис. 3а). При этом световое пятно всегда сканирует максимально возможный для данного выводного устройства формат независимо от формата воспроизводимого на материале изображения.
Второй метод основан на формировании изображения знаков из пакета горизонтальных точечнорастровых строк. Этот метод отличается от первого тем, что запись осуществляется сразу несколькими параллельными световыми лучами (пакетом лучей). Текст на материале формируется в результате записи целой полоски изображения по горизонтали и перемещения записываемого материала по вертикали на ширину этой полоски (рис. 3б).
Рис. 3. Формирование изображения шрифтовых знаков из горизонтальных точечно-растровых строк: а — при однолучевом сканировании; б — при многолучевом (пакетном) сканировании записываемого материала
При использовании конкретного растрового шрифта можно достичь высокого качества изображения символа, но это требует, чтобы изображение формировалось из очень большого количества мелких точек, то есть матрицы большой размерности.
Сформированное из отдельных вертикальных или горизонтальных линий (точечнорастровых линий) изображение шрифтовых знаков, в отличие от идеального изображения (рис. 4а) знаков (например, получаемых путем их фотографирования с эталонных изображений), имеет растрированную структуру (рис. 4бд) с пилообразной формой некоторых линий контура знака. Шаг между линиями микрорастра выбирается так, чтобы изображение в пределах знака было сплошным. Для этого шаг должен быть несколько меньше (обычно на 2030%) диаметра светового пятна, формирующего изображение на материале. Величина, обратная шагу микрорастра, определяется важнейшей характеристикой выводного устройства — разрешением. Чем выше разрешение и соответственно меньше диаметр пятна, тем мельче пилообразная форма линий контура знака и выше качество изображения. Приведенное для примера увеличенное изображение знаков на рис. 4в и 4д получено при разрешении, которое в 2 раза больше, чем изображение знаков на рис. 4б и 4г соответственно.
Рис. 4. Шрифтовые знаки, получаемые при фотографировании эталонных изображений (а) и в фотовыводных устройствах: б и в — при вертикальном сканировании фотоматериала с разрешением соответственно R и 2R dpi; г и д — при горизонтальном сканировании с разрешением соответственно R и 2R dpi
Современные фотовыводные и формовыводные устройства экспонируют материал с разрешением 12005000 dpi, что обеспечивает получение форм высокого качества.
Программное трансформирование растровых шрифтов приводит к ухудшению их качества. Это обусловлено тем, что растровые шрифты не несут информации о форме символов в геометрическом смысле, а только сохраняют вид отпечатка символа, в результате чего увеличение размеров (масштабирование) растровых символов сопровождается появлением дефектов. Следует отметить, что к искажениям приводят и другие трансформации символов (поворот на произвольный угол, наклон или нелинейные преобразования).
Растровые шрифты хранятся в памяти в виде наборов битов и являются, в сущности, организованным набором пикселов. Поэтому невозможно изменять размеры (кегль) шрифта и приходится каждый кегль для растрового фонта хранить в памяти в виде отдельного файла.
Однако, несмотря на указанные недостатки, растровые шрифты получили широкое распространение. В современных системах они применяются, как правило, в тех случаях, когда необходима очень высокая скорость работы, а требования к большому разнообразию гарнитур отсутствуют, — например в качестве экранных шрифтов операционных систем или шрифтов матричных принтеров.
Контурные шрифты. Известны два основных способа описания информации о контуре шрифтового знака: контурновекторный и контурный.
При описании знаков в контурновекторной форме контур знака аппроксимируют векторами (рис. 5а). В линиях контура задаются начальные координаты первого вектора, отсчитываемые относительно точки на линии шрифта, и приращения координат концов векторов вдоль обеих осей, кратные шагу дискретизации.
При контурном описании знака контур разбивается на отдельные участки, представляющие собой отрезки прямой и дуги окружностей и кривых (рис. 5б). При кодировании контуров, кроме координат начала и конца векторов, задаются параметры дуг окружностей (радиус окружности, координаты центра окружности, координаты точек сопряжения дуг).
Рис. 5. Способы кодирования информации о начертании шрифтовых знаков при контурно-векторном (а) и контурном (б) описании изображения знаков
При контурновекторном способе кодирования информация о начертании знака представляет собой массив приращений координат концов векторов (проекций векторов), последовательность которых соответствует направлению обхода каждого замкнутого контура знака только базового кегля. Остальные кегли получаются из базового масштабным преобразованием:
,
где lб и l — линейные размеры знака в базовом и небазовом кеглях; Kб и K — базовый и небазовый кегли; М = K/Kб — масштабный множитель.
Если при аппроксимации с помощью векторов в базовом кегле было допущено максимальное отклонение от контура знака Δ, то отклонение этого размера в других кеглях также находится из вышеприведенного соотношения. Точность передачи контура знака определяется количеством векторов, аппроксимирующих контур.
При условии геометрического подобия в процессе преобразований искажения в базовом кегле должны нормироваться так, чтобы искажения контура знака на максимальном кегле диапазона не превышали допустимые. Для этого базовый кегль знаков должен быть достаточно близким к максимальному кеглю набора.
В настоящее время в большинстве допечатных систем применяется контурный способ представления шрифтовых знаков.
Воспроизведение контурных шрифтов требует предварительной обработки шрифтовой информации, результатом которой является получение битовой структуры изображения знака, то есть преобразования контурного шрифта в растровый. Такое преобразование осуществляется специальной программой, называемой растеризатором. Поскольку описание контуров может производиться самыми разными математическими методами, возможно использование замкнутых контуров и последующая их закраска (заливка) либо оттенками серого, либо цветом, а также применение текстуры.
Математическое описание кривой, заданной на плоскости, может быть представлено в параметрической форме:
x = X(t), y = Y(t).
Чаще всего правые части являются полиномами третьей степени. При описании криволинейных участков контура знака пользуются составными кубическими кривыми, добиваясь в точках сопряжения непрерывности первых и вторых производных.
Наиболее универсальной и распространенной кривой, применяемой при описании контуров, можно считать кривую Безье третьего порядка (рис. 6), где параметр t принимает значения от 0 до 1, а уравнение кривой выглядит так:
p = p0(1 – t)3 + p1t(1 – t)2 + p2t2(1 – t) + p3t3,
где точки p0 и p3 являются крайними, а p1 и p2 — направляющими.
Тогда координаты x и y контура изображения будут определяться парой кубических уравнений:
x(t) = axt3 + bxt2+ cxt + x0;
y(t) = ayt3 + byt2+ cyt + y0.
При этом координаты крайних и направляющих точек находятся с помощью выражений:
x1 = x0 + cx /3; y1 = y0 + cy /3;
x2 = x1 + (cx + bx)/3; y2 = y1 + (cy + by)/3;
x3 = x0 + cx + bx +ax; y3 = y0 + cy + by +ay.
Посредством кривых Безье можно описать кривые самой разной формы (рис. 7), включая дуги окружностей.
Для кривых Безье однозначно решается задача разделения на две кривые. Объединение двух кривых и построение кривой, проходящей через заданную точку, можно выполнить только приближенно (или при наличии дополнительных условий).
Рис. 7. Представление различных кривых с помощью кривых Безье
Если расположить последовательно несколько кривых и определить способ сопряжения между ними, то возможности описания контура становятся безграничными.
Из недостатков кривых Безье следует отметить неудобство работы для художников, рисующих символы на компьютере, которым довольно сложно манипулировать направляющими точками, не лежащими на кривой.
Любой цифровой шрифт состоит из описания входящих в него символов, метрических и других параметров, определяющих особенности шрифта в цифровой форме. Форматом представления цифрового шрифта называется способ (стандарт) представления цифровой информации, образующей шрифт. Шрифт определенного формата можно использовать в любых программных и аппаратных средствах, которые могут воспринимать закодированную в формате информацию.
Рис. 8. Формирование элемента шрифтового знака
Широкое применение нашли цифровые шрифты форматов Adobe Type 1 (иногда этот формат называют PostScript Type 1 или просто Type 1) и True Type. В формате Туре 1 контуры символов формируются из участков прямых линий (назовем их векторами) и участков кривых Безье третьего порядка. На рис. 8 приведен пример контура элемента шрифтового знака, который аппроксимирован тремя участками прямых (векторами) и тремя участками кривых Безье. Первая кривая имеет крайние точки Р01 и Р31, вторая — Р02 и Р32, а третья — Р03 и Р33. При этом точка Р32 окончания второй кривой совпадает с точкой Р03, то есть с началом третьей кривой.
Для большей компактности горизонтальные и вертикальные векторы, а также кривые, определяемые вертикальными и горизонтальными контрольными векторами, описываются отдельными командами. Все команды описания контуров оперируют относительными координатами. Все символы в Туре 1шрифтах представляются в единой координатной сетке. Преобразование символов в соответствии с координатной системой выводного устройства производится через матрицу, заданную в заголовке шрифта (FontMatrix). При этом после трансформирования через матрицу получается шрифт кеглем в 1 пункт (рис. 9).
Рис. 9. Схема масштабирования цифровых шрифтов формата Type 1
Матрица состоит из шести чисел: [a, b, c, d, tx, ty]. Итоговые координаты рассчитываются следующим образом:
x' = ax + cy + tx;
y' = bx + dy + ty.
Обычно в Туре 1шрифтах используется сетка в 1000 единиц координатного пространства символа, которая соответствует 1 пункту, при этом прописные буквы имеют высоту примерно 700 единиц, а коэффициенты матрицы а и d равны 0,001.
Используя матричную форму представления знака, можно провести его геометрические преобразования. Например, перенести его на расстояния ty и tx (рис. 10а), масштабировать по вертикали и горизонтали с множителями соответственно sy и sx (рис. 10б).
Рис. 10. Преобразование знака: а — перенос; б — масштабирование; в — наклон
При помощи FontMatrix можно создавать наклонные начертания без изменения самого шрифта. Для этого коэффициенту с нужно присвоить значение, равное синусу угла наклона (рис. 10в). Например, матрица для координатной сетки 1000 с наклоном 12° вправо будет выглядеть так: [0,001 0 0,2 0,001 00]. Коэффициент b в Туре 1шрифтах обычно не используется.
Цифровые шрифты позволяют получать различные трансформации шрифтовых знаков. Трансформации можно разделить на три группы. Первая группа трансформаций — масштабирование, в том числе растягивание по одной из координат осей; поворот и наклон на заданный угол (рис. 10). Вторая группа — манипулирование толщиной штрихов для изменения насыщенности. Третья группа трансформаций — получение декоративных шрифтов.
В формате Type 1 существует правило заполнения контуров: все контуры, направленные против часовой стрелки, заполняются, а идущие в противоположном направлении — нет. Иначе это правило формулируется так: при обходе контура по его направлению заполняется область, лежащая слева (рис. 11).
Рис. 11. Направление обхода контура
Любой Туре 1шрифт состоит из двух основных частей: открытой и закрытой (зашифрованной). В открытой части Туре 1шрифта содержится информация, доступная для любого текстового редактора. Обычно здесь представляются обозначение и заголовок шрифта.
В закрытой части размещаются:
- область глобальной разметки — содержит описание параметров шрифта, которые используются для повышения качества растеризации;
- область глобальных подпрограмм — включает несколько подпрограмм, написанных на языке PostScript. Обычно они применяются для реализации наиболее сложных методов разметки;
- область подпрограмм разметки и контурных подпрограмм;
- область описания символов.
В формате Adobe Type 1 используется декларативный метод разметки (рис. 12), который основан на описании особенностей символа при помощи их декларирования отдельно от описания контура. В итоге описание символа включает две части: математическое описание символа и декларирование его особенностей.
Рис. 12. Пример разметки символа
Задачу связывания этих частей и построения знаков при выводе текстового материала решает программа растеризации. Именно она анализирует форму символа, связывает ее с заданной разметкой и принимает решение об изменении контура в ходе его масштабирования и заполнения. Преимущество декларативной разметки — простота построения шрифтов.
Для устранения лишних наплывов во всех символах шрифта применяются так называемые зоны выравнивания. Эти зоны определяются для шрифта и фиксируют положение и ширину всех областей, в которых имеются оптические наплывы (области округлых букв и букв, имеющих угловое окончание сверху или снизу, например буквы «О», «С» и «А»). При масштабировании символов, начиная с определенного размера, происходит подавление оптических наплывов.
В Туре 1шрифтах определяются наиболее распространенные толщины вертикальных и горизонтальных штрихов. Когда при растеризации символа толщина штриха приближается к стандартной, используется последняя. Обычно стандартные толщины начинают применяться в тот момент, когда толщины реальных штрихов уменьшаются до однойдвух точек.
Рис. 13. Штриховая разметка (хинты)
Применяется штриховая разметка в виде набора пар вертикальных и горизонтальных линий, которые фиксируют все штрихи символов и другие штрихоподобные элементы. Такие пары называются хинтами (рис. 13), которым соответствует информация о том, как модифицировать форму знака, заключенного в этих хинтах. При масштабировании символа прежде всего производится масштабирование и округление положения и толщины хинтов, а после этого к ним привязывается контур.
Разметка программируется двумя основными методами: описанием характеристик символа и указанием конкретных команд, изменяющих контур. Изменение контура происходит путем перемещения образующих его точек. Точки могут перемещаться по отдельности или группами с использованием интерполяции.
Основой программы разметки являются измерения расстояния между точками и команды округления значений. Как правило, большая часть программ разметки строится следующим образом:
Измеряется некое расстояние, которое затем округляется по определенным правилам.
Остальные расстояния устанавливаются в пропорции к измеренному.
В основу формата True Type положен принцип программируемой разметки символов (рис. 14). Основным достоинством True Typeшрифта можно считать его простоту. Вся необходимая информация о символах находится в одном файле, а процесс установки новых шрифтов легок и нагляден. True Typeшрифты «прозрачны» по отношению к любым выводным устройствам, начиная от дисплея и заканчивая самыми сложными PostScriptпринтерами и фотонаборными автоматами.
При построении символов в True Typeшрифтах используется координатная система, в общих чертах аналогичная той, которая применяется в Туре 1шрифтах. Все символы описываются в сетке, размер которой определяется в заголовке шрифта. Максимальный размер сетки равен 16 384. При этом значения координат находятся в диапазоне от –16 384 до +16 384. Обычно используется сетка размером в 2048 единиц (координаты по каждой из осей могут находиться в диапазоне от –2048 до +2047). Масштабирование контуров символа (рис. 15) осуществляется в соответствии с формулой:
,
где Sb — размер знака в точках в соответствии с разрешением выводного устройства (ФНА); Sк — размер контура знака в единицах размерной сетки формата; K — кегль знака в пунктах; R — разрешение ФНА; Sкс — размер координатной сетки формата.
Например, символ высотой 1400 единиц, определенный в сетке, имеющей размер 2048 единиц, при воспроизведении размером в 10 пунктов на устройстве с разрешением 300 точек на дюйм будет иметь высоту, равную 1400×10(300/(72×2048)) = 24,48 точки.
При этом высота знака должна быть округлена до целого числа точек изображения с учетом правил разметки.
Понятно, что дробные значения координат нельзя воспроизвести на растровом выводном устройстве, поэтому необходимо их округлить. В True Typeшрифтах округление производится не механически, а с применением набора инструкций, которые определяют разметку символов с учетом характера масштабирования отдельных элементов знака, например тонких засечек и т.п.
Рис. 14. Программируемый метод разметки
Для построения контуров символов в TrueTypeшрифтах используются векторы и кривые второго порядка — Всплайны. В определении кривых может участвовать произвольное количество точек; из них две крайние точки (oncurve) лежат на контуре, а остальные (offcurve) находятся вне его (рис. 16).
При заполнении контуров применяется правило, противоположное тому, что используется для заполнения Туре 1контуров, то есть при обходе контура по его направлению заполняется область, лежащая справа (см. рис. 11).
Рис. 15. Схема масштабирования цифровых шрифтов формата True Type
Рис. 16. В-сплайны
При воспроизведении каждого шрифтового знака на фотонаборном автомате или формовыводном устройстве необходимо решить две задачи: масштабировать (уменьшить или увеличить) контур знака до необходимого размера (кегля) и активировать все точки, попавшие во внутренние области этого контура, то есть «заполнить» контур.
Заполнить контур шрифтовых знаков можно различными способами (рис. 17), что позволяет получить большое разнообразие декоративных шрифтов для каждой гарнитуры, представленной в форматах Type 1 и True Type.
Рис. 17. Примеры заполнения контура шрифтовых знаков
Наличие двух принципиально разных по способу представления данных шрифтовых форматов Type 1 и True Type порождает сложности на этапе допечатной подготовки издания. Трудности эти связаны в первую очередь с некорректным переносом шрифтовой информации между компьютерными платформами Mac и РС, а также с недостаточной емкостью шрифтового файла, изза чего нельзя включить в состав шрифта разнообразные лигатуры и спецсимволы. Для решения этих и других проблем в 1997 году был выпущен новый шрифтовой формат Open Type, разработанный совместно Adobe и Microsoft.
Он обладает двумя основными преимуществами. Вопервых, один и тот же файл шрифта может использоваться на обеих платформах (Маc ОС и Windows). Вовторых, новые шрифты имеют расширенный набор символов — более 65 тыс. знаков против 256 в шрифтах стандарта PostScript.
Благодаря этому, используя Open Typeшрифты, можно применять расширенный ассортимент знаков и символов: буквицы, капитель и лигатуры, расширенный контекстуальный кернинг и точное оптическое позиционирование символов и акцентов в зависимости от контекста; изящные архаичные формы отдельных букв, знаков, цифр и дробей; исторические написания отдельных знаков в алфавитах и их редукцию в реформах письменности; шрифтовые имитации рукописных каллиграфических образцов текста; письменные системы народов, отличные от стандартного европейского письма; фонетическую запись текстов; текст с диакритическими знаками; текст с нелатинской системой письма (старогреческий, арамейский, сирийский языки, иврит, древнерусский и другие языки).
Шрифты Ореn Туре могут использоваться совместно со шрифтами PostScript, Туре 1 и True Type. В любом шрифте Ореn Туре применяется единственный файл шрифта для всей его иерархической структуры, показателей и растровых данных, что упрощает управление файлами. Формат Ореn Туре основан на кодировке Unicode — это позволяет ему поддерживать практически все языки мира.