Структура LOGFONTA (shtypes.h)
Определяет атрибуты шрифта.
Синтаксис
typedef struct tagLOGFONTA {
LONG lfHeight;
LONG lfWidth;
LONG lfEscapement;
LONG lfOrientation;
LONG lfWeight;
BYTE lfItalic;
BYTE lfUnderline;
BYTE lfStrikeOut;
BYTE lfCharSet;
BYTE lfOutPrecision;
BYTE lfClipPrecision;
BYTE lfQuality;
BYTE lfPitchAndFamily;
CHAR lfFaceName[32];
} LOGFONTA;
Члены
lfHeight
Тип: LONG
Указывает высоту ячейки символа или символа шрифта в логических единицах. Значение высоты символа (также известное как высота em) — это значение высоты ячейки символов за вычетом значения внутреннего начального значения. Средство сопоставления шрифтов интерпретирует значение, указанное в lfHeight , следующим образом.
Значение | Описание |
---|---|
> 0 | Сопоставителя шрифтов преобразует это значение в единицы устройства и сопоставляет его с высотой ячейки доступных шрифтов. |
0 | Функция сопоставления шрифтов использует значение высоты по умолчанию при поиске совпадения. |
< 0 | Модуль сопоставления шрифтов преобразует это значение в единицы устройства и сопоставляет его абсолютное значение с высотой символов доступных шрифтов. |
Для всех сравнений высоты сопоставителя шрифтов ищет самый большой шрифт, не превышающий запрошенный размер.
Это сопоставление происходит при первом использовании шрифта.
В режиме сопоставления MM_TEXT можно использовать следующую формулу, чтобы указать высоту шрифта с заданным размером точки.
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
где MulDiv определяется следующим образом:
#define MulDiv(a,b,c) (((a)*(b))/(c))
lfWidth
Тип: LONG
Указывает среднюю ширину символов шрифта в логических единицах. Если значение lfWidth не равно нулю, пропорции устройства сопоставляются с пропорциями оцифровки доступных шрифтов для поиска ближайшего соответствия, определяемого абсолютным значением разницы.
lfEscapement
Тип: LONG
Указывает угол между вектором наклона и осью Х устройства в десятых долях градуса. Вектор escapement параллелен базовой строке строки текста.
Элемент lfEscapement задает и escapement, и ориентацию. Для lfEscapement и lfOrientation следует задать одно и то же значение.
lfOrientation
Тип: LONG
Указывает угол между опорной линией каждого символа и осью Х устройства в десятых долях градуса.
lfWeight
Тип: LONG
Указывает значение толщины шрифта в диапазоне от 0 до 1000. Например, 400 — это нормально, а 700 — полужирный. Если это значение равно нулю, используется вес по умолчанию.
Для удобства в Wingdi.h определены следующие значения.
Значение | Вес |
---|---|
FW_DONTCARE | 0 |
FW_THIN | 100 |
FW_EXTRALIGHT | 200 |
FW_ULTRALIGHT | 200 |
FW_LIGHT | 300 |
FW_NORMAL | 400 |
FW_REGULAR | 400 |
FW_MEDIUM | 500 |
FW_SEMIBOLD | 600 |
FW_DEMIBOLD | 600 |
FW_BOLD | 700 |
FW_EXTRABOLD | 800 |
FW_ULTRABOLD | 800 |
FW_HEAVY | 900 |
FW_BLACK | 900 |
lfItalic
Тип: BYTE
Значение TRUE для указания курсивного шрифта.
lfUnderline
Тип: BYTE
Значение TRUE для указания подчеркнутого шрифта.
lfStrikeOut
Тип: BYTE
Значение TRUE для указания шрифта зачерки.
lfCharSet
Тип: BYTE
Указывает кодировку. Следующие значения являются предопределенными:
ANSI_CHARSET | BALTIC_CHARSET |
CHINESEBIG5_CHARSET | DEFAULT_CHARSET |
EASTEUROPE_CHARSET | GB2312_CHARSET |
GREEK_CHARSET | HANGUL_CHARSET |
MAC_CHARSET | OEM_CHARSET |
RUSSIAN_CHARSET | SHIFTJIS_CHARSET |
SYMBOL_CHARSET | TURKISH_CHARSET |
Корейский Windows |
---|
JOHAB_CHARSET |
Middle-Eastern Windows |
---|
HEBREW_CHARSET |
ARABIC_CHARSET |
Тайский Windows |
---|
THAI_CHARSET |
Значение OEM_CHARSET указывает набор символов, зависящий от операционной системы.
DEFAULT_CHARSET задано значение на основе текущего языкового стандарта системы. Например, если языковой стандарт системы — английский (США), значением является ANSI_CHARSET.
В операционной системе могут существовать шрифты с другими кодировками. Если приложение использует шрифт с неизвестным набором символов, оно не должно пытаться перевести или интерпретировать строки, отображаемые с помощью этого шрифта.
Этот элемент важен в процессе сопоставления шрифтов. Чтобы обеспечить согласованность результатов, укажите определенную кодировку. При указании имени шрифта в элементе lfFaceName убедитесь, что значение lfCharSet соответствует набору символов шрифта, указанного в параметре lfFaceName.
lfOutPrecision
Тип: BYTE
Указывает точность представления выводимых символов. Точность вывода определяет, насколько точно выходные данные должны соответствовать запрошенному шрифту высоты, ширины, ориентации символов, экранирования, тона и типа шрифта. Это может быть одно из следующих значений, определенных в Wingdi.h:
Значение | Описание |
---|---|
OUT_DEFAULT_PRECIS | Задает поведение модуля сопоставления шрифтов по умолчанию. |
OUT_RASTER_PRECIS | Указывает сопоставителю шрифтов выбрать растровый шрифт, если система содержит несколько шрифтов с одинаковым именем. |
OUT_STRING_PRECIS | Это значение не используется сопоставитель шрифтов, но возвращается при перечислении растровых шрифтов. |
lfClipPrecision
Тип: BYTE
Указывает точность отсечения. Точность обрезки определяет, как обрезать символы, которые частично находятся за пределами области обрезки. Это может быть одно или несколько из следующих значений, определенных в Wingdi.h:
Значение | Описание |
---|---|
CLIP_DEFAULT_PRECIS | Задает поведение обрезки по умолчанию. |
CLIP_CHARACTER_PRECIS | Не используется. |
CLIP_STROKE_PRECIS | Не используется сопоставитель шрифтов, но возвращается при перечислении растровых, векторных или TrueType шрифтов. |
lfQuality
Тип: BYTE
Указывает качество выводимых символов. Качество вывода определяет, насколько тщательно GDI должен пытаться сопоставить атрибуты логического шрифта с атрибутами фактического физического шрифта. Это может быть одно из следующих значений, определенных в Wingdi.h:
Значение | Описание |
---|---|
ANTIALIASED_QUALITY | Включает сглаживание для шрифта. Чтобы этот параметр работал, драйвер дисплея должен поддерживать текст с сглаживание. |
NONANTIALIASED_QUALITY | Принудительное использование черновиков при наличии подраздела реестра HKEY_LOCAL_MACHINE\System\GDI\Fontsmoothing . |
CLEARTYPE_COMPAT_QUALITY | Включает текст ClearType для шрифта с использованием совместимой ширины. При совместимой ширине создается текст с тем же интервалом, что и текст, отличный от ClearType. |
CLEARTYPE_QUALITY | Включает текст ClearType для шрифта. Драйвер дисплея должен поддерживать текст ClearType, чтобы этот параметр работал. |
DEFAULT_QUALITY | Внешний вид шрифта не имеет значения. |
DRAFT_QUALITY | Для растровых шрифтов GDI включено масштабирование, что означает, что доступны дополнительные размеры шрифтов, но качество может быть ниже. При необходимости синтезируются полужирные, курсивные, подчеркивание и зачеркивающие шрифты. |
lfPitchAndFamily
Тип: BYTE
Задает тон и группу шрифта. Два бита нижнего порядка определяют тон шрифта и могут иметь одно из следующих значений, определенных в Wingdi.h:
- DEFAULT_PITCH
- FIXED_PITCH
- MONO_FONT
- VARIABLE_PITCH
- FF_DECORATIVE
- FF_DONTCARE
- FF_MODERN
- FF_ROMAN
- FF_SCRIPT
- FF_SWISS
Семейства шрифтов описывают внешний вид шрифта в общем виде. Они предназначены для указания шрифтов, когда точный нужный шрифт недоступен. Ниже приведены значения семейств шрифтов.
Значение | Описание |
---|---|
FF_DECORATIVE | Новизна шрифтов, например, Old English. |
FF_DONTCARE | Не волнует или не знает. |
FF_MODERN | Шрифты с постоянной шириной штриха (monospace), с засечками или без нее. Шрифты Monospace обычно являются современными, например Pica, Elite и Courier New. |
FF_ROMAN | Шрифты с переменной шириной штриха (пропорционально) и с засечками, например Засечка. |
FF_SCRIPT | Шрифты, предназначенные для рукописного ввода, например Script и Cursive. |
FF_SWISS | Шрифты с переменной шириной штриха (пропорционально) и без засечек, например Без засечек. |
lfFaceName[32]
Тип: TCHAR[LF_FACESIZE]
Указывает строку, завершающуюся значением NULL, которая указывает имя шрифта. Длина этой строки не должна превышать 32 символа, включая завершающий символ NULL. Функцию EnumFontFamilies можно использовать для перечисления имен шрифтов всех доступных в настоящее время шрифтов. Если lfFaceName является пустой строкой, GDI использует первый шрифт, соответствующий другим указанным атрибутам.
Комментарии
Следующие ситуации не поддерживают сглаживание ClearType:
- Текст отображается на принтере.
- Набор для отображения не более 256 цветов.
- Текст отображается на клиенте сервера терминалов.
- Шрифт не является шрифтом TrueType или шрифтом Microsoft OpenType с контурами TrueType. Например, следующее не поддерживает сглаживание ClearType: шрифты типа 1, шрифты Postscript OpenType без контуров TrueType, точечные шрифты, векторные шрифты и шрифты устройств.
- Шрифт имеет настроенные внедренные растровые изображения для любых размеров шрифтов, содержащих внедренные растровые изображения. Например, это обычно происходит в восточноазиатских шрифтах.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows Vista [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 [только классические приложения] |
Верхняя часть | shtypes.h (включая Shtypes.h, Dimm.h) |