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


Структура 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

Задает угол в десятых градусах между вектором escapeмента и осью x устройства. Вектор escapement параллелен базовой строке строки текста.

Элемент lfEscapement указывает и escapement, и ориентацию. Необходимо задать lfEscapement и lfOrientation одинаковое значение.

lfOrientation

Тип: LONG

Задает угол в десятых градусах между базовой строкой каждого символа и осей x устройства.

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
 
Корейские окна
JOHAB_CHARSET
 
Middle-Eastern Windows
HEBREW_CHARSET
ARABIC_CHARSET
 
Тайские окна
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\Системные\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
Правильное значение можно получить с помощью логического оператора OR для объединения одной константы шага с одной семейной константой.

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

Ценность Описание
FF_DECORATIVE Шрифты новизны, например старый английский.
FF_DONTCARE Не волнуйтесь или не знают.
FF_MODERN Шрифты с шириной константного штриха (монопространство), с засечками или без нее. Шрифты Monospace обычно современные, например Pica, Elite и Courier New.
FF_ROMAN Шрифты с шириной штриха переменной (пропорциональной) и с засечками, например с засечками.
FF_SCRIPT Шрифты, предназначенные для рукописного ввода, например скрипта и cursive.
FF_SWISS Шрифты с шириной штриха переменной (пропорциональной) и без засечек, например Sans Serif.

lfFaceName[32]

Тип: TCHAR[LF_FACESIZE]

Указывает строку, завершающую значение NULL, которая задает имя шрифта. Длина этой строки не должна превышать 32 символов, включая завершающий символ NULL. Функцию EnumFontFamilies можно использовать для перечисления имен шрифтов всех доступных в настоящее время шрифтов. Если lfFaceName является пустой строкой, GDI использует первый шрифт, соответствующий другим указанным атрибутам.

Замечания

В следующих ситуациях не поддерживается защита ClearType:

  • Текст отрисовывается на принтере.
  • Отображаемый набор для 256 цветов или меньше.
  • Текст отрисовывается клиенту сервера терминала.
  • Шрифт не является шрифтом TrueType или шрифтом Microsoft OpenType с контурами TrueType. Например, следующие не поддерживают защиту ClearType: тип 1 шрифтов, шрифты Postscript OpenType без контуров TrueType, точечных шрифтов, векторных шрифтов и шрифтов устройств.
  • Шрифт настраивает внедренные растровые изображения для любых размеров шрифтов, содержащих внедренные растровые изображения. Например, это происходит обычно в шрифтах Восточной Азии.
Эта структура впервые появилась в Shtypes.idl и Shtypes.h в Windows Vista, чтобы упростить использование с элементами интерфейса IVisualProperties. Однако идентичная структура определена в Wingdi.h и Windows.h в более ранних версиях Windows.

Заметка

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

Требования

Требование Ценность
минимальные поддерживаемые клиентские Windows Vista [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2008 [только классические приложения]
заголовка shtypes.h (include Shtypes.h, Dimm.h)

См. также

IVisualProperties::GetFont

IVisualProperties::SetFont