Структура LOGFONTA (wingdi.h)
Структура LOGFONT определяет атрибуты шрифта.
Синтаксис
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[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;
Члены
lfHeight
Высота (в логических единицах) символьной ячейки или символа шрифта. Значение высоты символа (также известное как высота em) — это значение высоты ячейки символов за вычетом значения внутреннего начального значения. Средство сопоставления шрифтов интерпретирует значение, указанное в lfHeight , следующим образом.
Значение | Значение |
---|---|
> 0 | Сопоставителя шрифтов преобразует это значение в единицы устройства и сопоставляет его с высотой ячейки доступных шрифтов. |
0 | Функция сопоставления шрифтов использует значение высоты по умолчанию при поиске совпадения. |
< 0 | Модуль сопоставления шрифтов преобразует это значение в единицы устройства и сопоставляет его абсолютное значение с высотой символов доступных шрифтов. |
Для всех сравнений высоты сопоставителя шрифтов ищет самый большой шрифт, не превышающий запрошенный размер.
Это сопоставление происходит при первом использовании шрифта.
В режиме сопоставления MM_TEXT можно использовать следующую формулу, чтобы указать высоту шрифта с указанным размером точек:
lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
lfWidth
Средняя ширина (в логических единицах) символов в шрифте. Если значение lfWidth равно нулю, пропорции устройства сопоставляются с пропорциями оцифровки доступных шрифтов, чтобы найти ближайшее совпадение, определяемое абсолютным значением разницы.
lfEscapement
Угол в десятых градусах между вектором escapement и осью X устройства. Вектор escapement параллелен базовой строке строки текста.
Если для графического режима задано значение GM_ADVANCED, можно указать угол экранирования строки независимо от угла ориентации символов строки.
Если для графического режима задано значение GM_COMPATIBLE, lfEscapement указывает как экранирование, так и ориентацию. Для lfEscapement и lfOrientation следует задать одно и то же значение.
lfOrientation
Угол в десятых градусах между базовой линией каждого символа и осью X устройства.
lfWeight
Вес шрифта в диапазоне от 0 до 1000. Например, 400 — это нормально, а 700 — полужирный. Если это значение равно нулю, используется вес по умолчанию.
Для удобства определяются следующие значения.
Значение | Вес |
---|---|
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
Курсив, если задано значение TRUE.
lfUnderline
Подчеркнутой шрифт, если задано значение TRUE.
lfStrikeOut
Шрифт зачеркивать, если задано значение TRUE.
lfCharSet
Набор символов. Следующие значения являются предопределенными:
- 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
- VIETNAMESE_CHARSET
- JOHAB_CHARSET
- ARABIC_CHARSET
- HEBREW_CHARSET
- THAI_CHARSET
DEFAULT_CHARSET задано значение в зависимости от текущего языкового стандарта системы. Например, если языковой стандарт системы — английский (США), он задается как ANSI_CHARSET.
В операционной системе могут существовать шрифты с другими наборами символов. Если приложение использует шрифт с неизвестным набором символов, оно не должно пытаться перевести или интерпретировать строки, отображаемые с помощью этого шрифта.
Этот параметр важен в процессе сопоставления шрифтов. Чтобы обеспечить согласованность результатов при создании шрифта, не указывайте OEM_CHARSET или DEFAULT_CHARSET. При указании имени шрифта в элементе lfFaceName убедитесь, что значение lfCharSet соответствует набору символов шрифта, указанного в параметре lfFaceName.
lfOutPrecision
Точность вывода. Точность вывода определяет, насколько точно выходные данные должны соответствовать запрошенному шрифту высоты, ширины, ориентации символов, экранирования, тона и типа шрифта. Может быть одним из указанных далее.
Значение | Значение |
---|---|
OUT_CHARACTER_PRECIS | Не используется. |
OUT_DEFAULT_PRECIS | Задает поведение модуля сопоставления шрифтов по умолчанию. |
OUT_DEVICE_PRECIS | Указывает сопоставителя шрифтов выбрать шрифт Устройства, если система содержит несколько шрифтов с одинаковым именем. |
OUT_OUTLINE_PRECIS | Это значение указывает средству сопоставления шрифтов выбрать из TrueType и других шрифтов на основе структуры. |
OUT_PS_ONLY_PRECIS | Указывает средству сопоставления шрифтов выбрать только шрифты PostScript. Если в системе не установлены шрифты PostScript, средство сопоставления шрифтов возвращается к поведению по умолчанию. |
OUT_RASTER_PRECIS | Указывает сопоставителю шрифтов выбрать растровый шрифт, если система содержит несколько шрифтов с одинаковым именем. |
OUT_STRING_PRECIS | Это значение не используется сопоставитель шрифтов, но возвращается при перечислении растровых шрифтов. |
OUT_STROKE_PRECIS | Это значение не используется сопоставитель шрифтов, но возвращается при перечислении TrueType, других шрифтов на основе структуры и векторных шрифтов. |
OUT_TT_ONLY_PRECIS | Указывает средству сопоставления шрифтов выбрать только шрифты TrueType. Если в системе не установлены шрифты TrueType, средство сопоставления шрифтов возвращается к поведению по умолчанию. |
OUT_TT_PRECIS | Указывает сопоставителя шрифтов выбрать шрифт TrueType, если система содержит несколько шрифтов с одинаковым именем. |
Приложения могут использовать значения OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS, OUT_TT_PRECIS и OUT_PS_ONLY_PRECIS для управления тем, как средство сопоставления шрифтов выбирает шрифт, если операционная система содержит несколько шрифтов с указанным именем. Например, если операционная система содержит шрифт с именем Symbol в виде растра и TrueType, при указании OUT_TT_PRECIS средство сопоставления шрифтов выбирает версию TrueType. Указание OUT_TT_ONLY_PRECIS заставляет сопоставителя шрифтов выбирать шрифт TrueType, даже если он должен заменить шрифт TrueType с другим именем.
lfClipPrecision
Точность обрезки. Точность обрезки определяет, как обрезать символы, которые частично находятся за пределами области обрезки. Это может быть одно или несколько из следующих значений.
Дополнительные сведения о ориентации систем координат см. в описании параметра nOrientation .
Значение | Значение |
---|---|
CLIP_CHARACTER_PRECIS | Не используется. |
CLIP_DEFAULT_PRECIS | Задает поведение обрезки по умолчанию. |
CLIP_DFA_DISABLE | Windows XP с пакетом обновления 1 (SP1): Отключает сопоставление шрифта для шрифта. Обратите внимание, что этот флаг не обязательно будет влиять на любую платформу после Windows Server 2003. |
CLIP_EMBEDDED | Этот флаг необходимо указать, чтобы использовать встроенный шрифт только для чтения. |
CLIP_LH_ANGLES | При использовании этого значения поворот всех шрифтов зависит от того, является ли ориентация системы координат левой или правой. Если шрифты устройства не используются, они всегда поворачиваются против часовой стрелки, но поворот других шрифтов зависит от ориентации системы координат. |
CLIP_MASK | Не используется. |
CLIP_DFA_OVERRIDE | Отключает сопоставление шрифта для шрифта. Это идентично CLIP_DFA_DISABLE, но в некоторых ситуациях могут возникнуть проблемы; Рекомендуемый флаг — CLIP_DFA_DISABLE. |
CLIP_STROKE_PRECIS | Не используется сопоставителя шрифтов, но возвращается при перечислении растровых, векторных или TrueType шрифтов. Для совместимости это значение всегда возвращается при перечислении шрифтов. |
CLIP_TT_ALWAYS | Не используется. |
lfQuality
Качество вывода. Качество вывода определяет, насколько тщательно интерфейс графического устройства (GDI) должен пытаться сопоставить атрибуты логического шрифта с атрибутами фактического физического шрифта. Может быть одним из указанных далее.
Значение | Значение |
---|---|
ANTIALIASED_QUALITY | Шрифт всегда сглаживается, если шрифт поддерживает его и размер шрифта не слишком мал или слишком велик. |
CLEARTYPE_QUALITY | Если задано значение , текст отрисовывается (по возможности) с помощью метода сглаживания ClearType. Дополнительные сведения см. в разделе "Примечания". |
DEFAULT_QUALITY | Внешний вид шрифта не имеет значения. |
DRAFT_QUALITY | Внешний вид шрифта менее важен, чем при использовании PROOF_QUALITY. Для растровых шрифтов GDI включено масштабирование, что означает, что доступны дополнительные размеры шрифтов, но качество может быть ниже. При необходимости синтезируются полужирные, курсивные, подчеркивание и зачеркивающие шрифты. |
NONANTIALIASED_QUALITY | Шрифт никогда не сглаживается. |
PROOF_QUALITY | Качество символов шрифта важнее точного сопоставления атрибутов логического шрифта. Для растровых шрифтов GDI масштабирование отключено и выбирается шрифт, наиболее близкий по размеру. Хотя выбранный размер шрифта может быть не сопоставлен точно при использовании PROOF_QUALITY, качество шрифта высокое, а внешний вид не искажен. При необходимости синтезируются полужирные, курсивные, подчеркивание и зачеркивающие шрифты. |
Если ни ANTIALIASED_QUALITY, ни NONANTIALIASED_QUALITY не выбраны, шрифт сглаживается только в том случае, если пользователь выбирает шрифты с гладким экраном в панель управления.
lfPitchAndFamily
Шаг и семейство шрифта. Два бита нижнего порядка задают тон шрифта и могут иметь одно из следующих значений.
- DEFAULT_PITCH
- FIXED_PITCH
- 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 и CourierNew являются примерами. |
FF_ROMAN | Шрифты с переменной шириной штриха (пропорционально) и с засечками. Например, MS Serif. |
FF_SCRIPT | Шрифты, предназначенные для рукописного ввода. Например, Script и Cursive. |
FF_SWISS | Шрифты с переменной шириной штриха (пропорционально) и без засечек. Например, MS Sans Serif. |
lfFaceName[LF_FACESIZE]
Строка с завершающим нулем, которая указывает название гарнитуры шрифта. Длина этой строки не должна превышать 32 значения TCHAR , включая завершающее значение NULL. Функцию EnumFontFamiliesEx можно использовать для перечисления имен шрифтов всех доступных в настоящее время шрифтов. Если lfFaceName является пустой строкой, GDI использует первый шрифт, соответствующий другим указанным атрибутам.
Комментарии
Следующие ситуации не поддерживают сглаживание ClearType:
- Текст отображается на принтере.
- Набор для отображения не более 256 цветов.
- Текст отображается на клиенте сервера терминалов.
- Шрифт не является шрифтом TrueType или шрифтом OpenType с контурами TrueType. Например, следующее не поддерживает сглаживание ClearType: шрифты типа 1, шрифты Postscript OpenType без контуров TrueType, точечные шрифты, векторные шрифты и шрифты устройств.
- Шрифт имеет настроенные внедренные растровые изображения для любых размеров шрифтов, содержащих внедренные растровые изображения. Например, это часто встречается в восточноазиатских шрифтах.
Примечание
Заголовок wingdi.h определяет LOGFONT в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.
Требования
Минимальная версия клиента | Windows 2000 Профессиональная [классические приложения | Приложения UWP] |
Минимальная версия сервера | Windows 2000 Server [классические приложения | Приложения UWP] |
Верхняя часть | wingdi.h (включая Windows.h) |