Семейства шрифтов в Windows (48920)

Посмотреть архив целиком

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

xxxSYS.FON

FixedSys

DONTCARE

ANSI

xxxFIX.FON

Terminal

MODERN

OEM

xxxOEM.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).

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

HFONT GetStockObject( 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);

или

HFONT CreateFontIndirect( lpLogFont );

Чаще применяется функция CreateFontIndirect(), получающая в качестве параметра указатель на структуру LOGFONT. Поля этой структуры совпадают с аргументами функции CreateFont().

typedef struct tagLOGFONT {

int lfHeight;

int lfWidth;

int lfEscapement;

int lfOrientation;

int lfWeight;

BYTE lfItalic;

BYTE lfUnderline;

BYTE lfStrikeOut;

BYTE lfCharSet;

BYTE lfOutPrecision;

BYTE lfClipPrecision;

BYTE lfQuality;

BYTE lfPitchAndFamily;

BYTE lfFaceName[LF_FACESIZE];

} LOGFONT;

Рассмотрим назначение полей этой структуры:

lfHeight задает требуемый размер шрифта в точках (пунктах). Если значение положительно, то в высоту включается межстрочный промежуток, а если отрицательно, то модуль указывает высоту символа шрифта. Значение 0 указывает, что используется значение высоты по умолчанию.


Случайные файлы

Файл
174032.rtf
~1.DOC
57908.rtf
157720.rtf
78592.rtf




Чтобы не видеть здесь видео-рекламу достаточно стать зарегистрированным пользователем.
Чтобы не видеть никакую рекламу на сайте, нужно стать VIP-пользователем.
Это можно сделать совершенно бесплатно. Читайте подробности тут.