Учебное пособие: Семейства шрифтов в Windows

1. Семейства шрифтов в Windows

По трем из рассмотренных признаков (ширина штриха, ширина символов и наличию засечек) в Windows принято выделять так называемые семейства шрифтов. Для того, что бы пояснить разницу между принятыми семействами, приведем небольшую табличку, содержащую сводку характеристик разных семейств шрифтов в Windows:

Семейство Ширина штриха Ширина символов Наличие засечек примеры
MODERN постоянная постоянная Courier New
ROMAN переменная переменная есть Times New Roman, Antiqua, Garamond, Palatino, Bodoni
SWISS переменная переменная нет Arial, Helvetica, Futura, Avantgarde, Optima, Swiss
SCRIPT Script, Odessa Script FWF, Decor, Jikharev, Parsek
DECORATIVE Windings, MusicalSymbols, Symbol
DONTCARE

Обычно к семейству MODERN относят все шрифты фиксированной ширины. Название MODERN указывает на сравнительно недавнюю историю этих шрифтов - они получили распространение с развитием печатающей техники и компьютеров, тогда как другие виды шрифтов возникали с XV века, когда заканчивалась эпоха готического шрифта.

В те времена начинал формироваться шрифт, похожий по своему начертанию на один из древнейших шрифтов - римский капитальный. Это был пропорциональный шрифт с засечками и нормальной контрастностью, позже он получил очень широкое распространение в типографском деле и дожил до наших дней. За свою долгую историю он многократно видоизменялся и стал родоначальником большого числа поколений шрифтов. В Windows такие шрифты относятся к семейству ROMAN .

Реально этому семейству соответствует очень большое число разных шрифтов, выделяемых в других классификационных системах. В частности, можно выделить так называемые брусковые шрифты, обычно со слабо выраженным контрастом и засечками, перпендикулярными штрихам и имеющими примерно такую же ширину (пример - Courier); В XX веке возникли шрифты, получившие очень широкое распространение. Наиболее распространенное название для этих шрифтов - рубленые. Эти шрифты не имеют контраста и засечек (sans serif), в Windows им соответствует семейство SWISS . Семейство DONTCARE реально не соответствует никакой группе шрифтов. Оно используется только при указании, из какого семейства надо выбирать шрифт - при этом оно обозначает “любое семейство”.

1.1 Стандартные шрифты Windows

В стандартной поставке Windows присутствует небольшой набор шрифтов, представляющий все (определенные в Windows) семейства шрифтов. Этот набор включает в себя растровые, векторные и TrueType шрифты, информация о которых сведена в небольшую таблицу:

Имя шрифта семейство кодовая таблица файл(ы)
растровые шрифты
System SWISS ANSI xxx SYS.FON
FixedSys DONTCARE ANSI xxx FIX.FON
Terminal MODERN OEM xxx OEM.FON
Courier MODERN ANSI COURy .FON
MS Sans Serif SWISS ANSI SSERIFy .FON
MS Serif ROMAN ANSI SERIFy .FON
Small Fonts ROMAN ANSI SMALLy .FON
Symbol DECORATIVE SYMBOL SYMBOLy .FON
векторные шрифты
Modern MODERN OEM MODERN.FON
Roman ROMAN OEM ROMAN.FON
Script SCRIPT OEM SCRIPT.FON
TrueType
Arial SWISS ANSI ARIALzz .TTF(.FOT)
Courier New MODERN ANSI COURzz .TTF(.FOT)
Times New Roman ROMAN ANSI TMSRMN.TTF(.FOT)
Windings DONTCARE ANSI WINDINGS.TTF(.FOT)

В этой таблице следует внимательно рассмотреть имена файлов. В этих именах маленькими буквами (xxx,y,zz ) обозначены изменяющиеся части.

Так xxx обозначает устройство, для которого был спроектирован шрифт. Вместо этой последовательности реально написано CGA, EGA, VGA или 8514.

Символ y обозначает категорию устройств, к которой относится данный шрифт. Возможные значения можно найти в таблице:

Буква Соотношение сторон Разрешающая способность X/Y (пиксел/дюйм) Устройство
A 200 96/48 CGA
B 133 96/72 EGA
C 83 60/72 Okidata printers
D 167 120/72 IBM, Epson printers
E 100 96/96 VGA
F 100 120/120 IBM 8514

Последовательность zz указывает, какого типа шрифт описан в этом файле: нормальный (пустая последовательность), жирный BD , наклонный I или жирный наклонный BI .

1.2 Получение хендла шрифта

Для того, что бы Вы могли применять шрифт в Вашей программе, Вы должны сначала получить хендл соответствующего шрифта. Шрифт является объектом GDI, поэтому работа с ним похожа на работу с другими объектами GDI. Как правило вы должны выполнить следующие действия:

получить хендл либо стандартного шрифта, либо создав "новый" шрифт

При создании "нового" шрифта создается соответствующий объект GDI, а не новый файл описания шрифта.

выбрать шрифт в контекст устройства

осуществить вывод, используя текущий шрифт

если шрифт был создан, то его надо уничтожить.

Создание шрифтов занимает некоторое время (особенно для отображения TrueType шрифтов - Windows автоматически генерирует промежуточный растровый шрифт, который и используется при выводе). Если надо создавать шрифты, то это удобно делать при создании окна или даже при запуске приложения, а уничтожать - при закрытии окна или при завершении приложения (как и все объекты GDI, созданный шрифт уничтожается с помощью функции DeleteObject ).

Если Вам надо получить хендл стандартного шрифта, то Вы можете воспользоваться функцией:

HFONTGetStockObject( nIndex );

Параметр nIndexможет быть:

ANSI_FIXED_FONT соответствует шрифту Courier
ANSI_VAR_FONT соответствует шрифту MS Sans Serif
OEM_FIXED_FONT соответствует шрифту Terminal
SYSTEM_FONT соответствует шрифту System; этот шрифт используется по умолчанию
SYSTEM_FIXED_FONT соответствует шрифту FixedSys; До версии Windows 3.0 системный шрифт был фиксированной ширины, он включен в Windows 3.1 для совместимости.
DEVICE_DEFAULT_FONT соответствует шрифту, загруженному в устройство; для дисплея не определен

Если Вам надо создавать собственный шрифт, то Вы можете воспользоваться одной из двух функций:

HFONT CreateFont(

nHeight, nWidth, nEscapement, nOrientation, nWeight,

bItalic, bUnderline, bStrikeOut,

bCharSet, bOutputPrecision, bClipPrecision, bQuality, bPitchAndFamily,

lpszFacename);

или

--> ЧИТАТЬ ПОЛНОСТЬЮ <--

К-во Просмотров: 432
Бесплатно скачать Учебное пособие: Семейства шрифтов в Windows