Шрифты. Разработка и использование
лов шрифта можно описывать самыми разными способами, то задача вос¬
произведения, в конечном итоге, сводится к активизации некоторых то¬
чек (высвечиванию на экране дисплея или заполнении краской при печа¬
ти на принтере). Здесь мы не будем рассматривать достаточно редкий
вариант воспроизведения контурных шрифтов на векторных устройствах,
например на графопостроителях (хотя бы потому, что в этом случае кон¬
турные шрифты временно преобразуются в векторно-штриховую форму).
Алгоритм растеризации
Итак, при воспроизведении каждого символа на растровом устройстве
(например, на лазерном принтере) необходимо решить две задачи:
— масштабировать (уменьшить или увеличить) контур символа до не¬
обходимого размера. Например, при печати текста 10 кеглем на ла¬
зерном принтере с разрешением 300 точек на дюйм ( 12 точек на мил¬
лиметр) необходимо, чтобы контур символа Н имел примерно 28
точек в высоту;
— активизировать все точки, попавшие во внутренние области этого
контура (другими словами, заполнить контур).
Проблемы растеризации
В ходе решения этих простых, на первый взгляд, задач возникает нема¬
ло проблем, связанных с масштабированием и заполнением контуров. Пе¬
речислим некоторые из них.
Нарушение пропорций символа. При воспроизведении символов на ус¬
тройствах с малой разрешающей способностью (300 точек на дюйм и мень¬
ше) , особенно при выводе текста небольшим кеглем ( 12 и меньше), сильно
сказываются ошибки масштабирования. Масштабирование происходит в
абсолютных координатах относительно некоторой произвольной точки
(обычно это точка пересечения базовой линии символа и линии его левого
поля) и всегда приводит к получению целочисленного результата (посколь¬
ку речь идет о растровых устройствах, в которых максимальная точность
указания координат определяется разрешающей способностью).
При этом возникает проблема округления нецелых результатов. Напри¬
мер, если координаты некоторого элемента символа в системе координат опи¬
сания контура равны (200; 100), то при уменьшении размера контура в 3 раза
они трансформируются в (66.666666; 33.333333). Поскольку нам нужны це¬
лые значения, они превратятся в (67; 33), то есть значение горизонтальной
координаты немного (на треть точки) увеличится, а горизонтальной — на
столько же уменьшится. Если при этом специально не учитывать особеннос¬
ти формы символа, то он может сильно исказиться и даже стать нечитаемым.
На рис. 6.2 приведен пример подобного масштабирования символа Н:
- 140 -
Глава 6. Форматы цифровых шрифтов
Рис. 6.2. Пример масштабирования
символаН
Нарушение симметричности некоторых символов. Прежде всего
этот дефект относится к символам, обладающим симметрией, таким, как
А, Ж, М, О, Т, Ф, Ш, и некоторым другим. Нарушение симметричности
таких символов (например, возникновение разного расстояния между
вертикальными штрихами буквы Ш) резко искажает их форму и зат¬
рудняет чтение текста.
Нарушение единства символов. Применяя некоторые приемы, мы мо¬
жем избавиться от ошибок округления применительно к одному символу.
Но при этом мы рискуем потерять единство символов в шрифте. Напри¬
мер, если в символе Н мы будем округлять толщину вертикальных штри¬
хов в меньшую сторону, а в символе Ш — в большую, то некоторые слова
станут трудно воспринимаемыми. Кроме того, при таком подходе наруша¬
ется ритмичность шрифта (характерный случай — разное округление рас¬
стояния между вертикальными штрихами в символах Ш и Щ).
Другой пример — масштабирование положения горизонтальных линий
(например, средних линий символов в, е, ж, з, к) и величины оптических
наплывов у округлых букв (таких, как а, б, е, з, о, с). В первом случае может
возникнуть неприятный разнобой в некоторых словах, а во втором — иска¬
жение базовой линии текста и скачки букв в вертикальном направлении.
Смыкание штрихов. В некоторых случаях некачественного масштаби¬
рования штрихи и другие элементы символов смыкаются между собой.
Наиболее часто это происходит с вертикальными штрихами в узких шриф¬
тах. Ошибочное соединение штрихов (см. рис. 6.3) нарушает графему та¬
кой буквы, и человек теряет способность к ее распознаванию.
Рис. 6.3. Пример смыкания элементов
символа
- 141 -