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


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

Требования

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

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

IVisualProperties::GetFont

IVisualProperties::SetFont