Шрифты. Разработка и использование
FamilyOtherBlues То же, что и FainilyBlues, но для выравнивания снизу.
BlueScale Определяет размер шрифта, начиная с которого
отключается механизм выравнивания символов.
Для разрешающей способности 300 точек на дюйм
рассчитывается по формуле: BlueScale = (point-
size - 0.49) / 240.
BlueShift Определяет величину оптического наплыва (в точ¬
ках выводного устройства), начиная с которой от¬
ключается его подавление.
BlueFuzz Увеличивает ширину зон выравнивания.
StdHW и StdVW Определяют наиболее распространенные толщи¬
ны горизонтальных и вертикальных штрихов. В том
случае, когда после масштабирования контура
толщины штрихов мало отличаются от стандарт¬
ных значений, используются эти значения, что
улучшает внешний вид символов и скрадывает
ошибки построения контуров.
Массивы (до 12 элементов в возрастающем порядке),
показывающие наиболее распространенные толщи¬
ны горизонтальных и вертикальных штрихов.
Определяет дополнительное увеличение толщины
штрихов для полужирных и жирных начертаний.
Если установлен этот параметр, то толщина штри¬
хов полужирных начертаний всегда больше, чем у
светлых начертаний, даже в том случае, когда тол¬
щина светлых штрихов равна 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
• Область глобальных подпрограмм содержит несколько подпрог¬
рамм, написанных на языке PostScript. Обычно они используются
для реализации наиболее сложных методов разметки. Теоретичес¬
ки при помощи этих подпрограмм можно описать любые алгоритмы
(что и демонстрирует формат Multiple Master, реализованный при
StemSnapH
и StemSnapV
ForceBold
- 148 -
Глава 6. Форматы цифровых шрифтов
их помощи), которые можно вызывать непосредственно из описа¬
ний символов. Однако в том случае, если шрифт планируется исполь¬
зовать с программами растеризации «налету», например с ATM, до¬
статочно нескольких стандартных подпрограмм.
Пример текста подпрограммы, реализующей алгоритм смены хинтов:
%.Copyright(c) 1987-1990 Adobe Systems Incorporated.
%.A11 Rights Reserved.
%.This code to be used for Flex and hint replacement.
%.Version 1.1
/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
• Область подпрограмм разметки и контурных подпрограмм. Язык
описания Туре 1-шрифтов, как и PostScript, имеет встроенные воз¬
можности для структурной организации программы, реализованные
в виде команд вызова глобальных (PostScript) и локальных (написан¬
ных на языке Туре 1) подпрограмм. Локальные подпрограммы обыч¬
но применяются для организации сложной разметки символов (сме¬
ны хинтов, о которой мы поговорим чуть позднее) и для описания
повторяющихся элементов символов.
Пример декодированной подпрограммы разметки:
dup 47 RD {
67 78 vstem 358 84 vstem 0 28 hstem 241 28 hstem 470 28 hstem
return } NP
Пример контурной подпрограммы:
dup 9 RD {
24 vlineto -8 hlineto -64 -24 33 55 hvcurveto
return } NP
• Область описания символов — основная область Туре 1 -шрифта, оп¬
ределяющая изображения всех символов шрифта. Описание
- 149 -