Поделиться через


Структура 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
Выпуск Windows на корейском языке:
  • JOHAB_CHARSET
Выпуск Windows для ближневосточных языков:
  • ARABIC_CHARSET
  • HEBREW_CHARSET
Выпуск Windows на тайском языке:
  • THAI_CHARSET
Значение OEM_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
Биты от 4 до 7 элемента указывают семейство шрифтов и могут иметь одно из следующих значений.
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
Правильное значение можно получить с помощью логического оператора OR для объединения одной константы тона с одной константой семейства.

Семейства шрифтов описывают внешний вид шрифта в общем виде. Они предназначены для указания шрифтов, когда точный нужный шрифт недоступен. Ниже приведены значения семейств шрифтов.

Значение Значение
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)

См. также раздел

CreateFont

CreateFontIndirect

EnumFontFamiliesEx

Структуры шрифта и текста

Общие сведения о шрифтах и тексте