Структура LOGFONTW (shtypes.h)

Определяет атрибуты шрифта.

Синтаксис

typedef struct tagLOGFONTW {
  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;
  WCHAR lfFaceName[32];
} LOGFONTW;

Члены

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 указывает как экранную, так и ориентацию. Для 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

Указывает точность представления выводимых символов. Точность выходных данных определяет, насколько точно выходные данные должны соответствовать высоте, ширине, ориентации символов, escapement, шагу и типу шрифта. Это может быть одно из следующих значений, определенных в 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
Биты от 4 до 7 элемента указывают группу шрифтов и могут быть одним из следующих значений, определенных в Wingdi.h:
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
Правильное значение можно получить с помощью оператора Boolean OR для соединения одной константы шага с одной константой семейства.

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

Значение Описание
FF_DECORATIVE Новизна шрифтов, например старый английский.
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, шрифты OpenType Postscript без контуров TrueType, точечные шрифты, векторные шрифты и шрифты устройств.
  • Шрифт имеет настроенные внедренные растровые изображения для любых размеров шрифтов, содержащих внедренные растровые изображения. Например, это часто встречается в восточноазиатских шрифтах.
Эта структура впервые появилась в Shtypes.idl и Shtypes.h в Windows Vista для удобства использования с членами интерфейса IVisualProperties . Однако идентичная структура определена в Wingdi.h и Windows.h в более ранних версиях Windows.

Примечание

Заголовок shtypes.h определяет LOGFONT в качестве псевдонима, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОД. Использование псевдонима, не зависящий от кодирования, с кодом, который не является нейтральным для кодировки, может привести к несоответствиям, которые приводят к ошибкам компиляции или времени выполнения. Дополнительные сведения см. в разделе Соглашения для прототипов функций.

Требования

Требование Значение
Минимальная версия клиента Windows Vista [только классические приложения]
Минимальная версия сервера Windows Server 2008 [только классические приложения]
Верхняя часть shtypes.h (включая Shtypes.h, Dimm.h)

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

IVisualProperties::GetFont

IVisualProperties::SetFont