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


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

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

Если для режима графики задано значение GM_ADVANCED, можно указать угол escapeмента строки независимо от угла ориентации символов строки.

Если для режима графики задано значение GM_COMPATIBLE, lfEscapement указывает и escapement, и ориентацию. Необходимо задать 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

Точность вывода. Точность вывода определяет, насколько близко выходные данные должны соответствовать высоте запрошенного шрифта, ширине, ориентации символов, escapement, шагу и типу шрифта. Это может быть одно из следующих значений.

Ценность Значение
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, чтобы управлять тем, как средство сопоставления шрифтов выбирает шрифт, если операционная система содержит несколько шрифтов с указанным именем. Например, если операционная система содержит шрифт с именем Символ в виде растра и 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 Новизны шрифтов. Старый английский является примером.
FF_DONTCARE Используйте шрифт по умолчанию.
FF_MODERN Шрифты с шириной константного штриха (монопространство), с засечками или без нее. Шрифты Monospace обычно современные. Пика, Элита и CourierNew являются примерами.
FF_ROMAN Шрифты с шириной штриха переменной (пропорциональной) и с засечками. Ms Serif — пример.
FF_SCRIPT Шрифты, предназначенные для рукописного ввода. Скрипт и cursive являются примерами.
FF_SWISS Шрифты с шириной росчерка переменной (пропорциональной) и без засечек. MS Sans Serif является примером.

lfFaceName[LF_FACESIZE]

Строка, завершающая значение NULL, указывающая имя шрифта. Длина этой строки не должна превышать 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

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

шрифтов и текста