Шрифты. Разработка и использование

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 -