Структура 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
- JOHAB_CHARSET
- ARABIC_CHARSET
- HEBREW_CHARSET
- THAI_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
- FF_DECORATIVE
- FF_DONTCARE
- FF_MODERN
- FF_ROMAN
- FF_SCRIPT
- FF_SWISS
Семейства шрифтов описывают внешний вид шрифта общим образом. Они предназначены для указания шрифтов, когда недоступен точный шрифт. Значения семейств шрифтов приведены следующим образом.
Ценность | Значение |
---|---|
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) |
См. также
шрифтов и текста