Учебное пособие: Семейства шрифтов в Windows
Чащеприменяетсяфункция 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 указывает, что используется значение высоты по умолчанию.
lfWidth задает среднюю ширину символов в пунктах. Значение 0 соответствует ширине по умолчанию.
lfEscapement задает наклон базовой линии строки в десятых долях градуса. Для растровых шрифтов игнорируется.
lfOrientation задает ориентацию символа относительно базовой линии в десятых долях градуса. Игнорируется для растровых и TrueType шрифтов, для векторных используются значения: 0, 900, 1800 и 2700
lfWeight задает вес символа (жирность). Соответствует количеству закрашенных пиксел из 1000. Предусмотрены условные обозначения для определения веса, начинающиеся на FW_... Например, нормальный текст (400) соответствует FW_NORMAL (FW_REGULAR), жирный (700) FW_BOLD.
lfItalic ненулевое значение задает наклон символов (начертание slanted). Значение 0 соответствует обычному тексту.
lfUnderline ненулевое значение задает подчеркивание строки текста линией. Значение 0 соответствует обычному тексту.
lfStrikeOut ненулевое значение задает перечеркивание строки текста линией. Значение 0 соответствует обычному тексту.
lfCharSet задает кодовую таблицу, которую должен поддерживать данный шрифт. Используются следующие условные обозначения:
ANSI_CHARSET кодовая таблица ANSI
OEM_CHARSET кодовая таблица OEM