Структура 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 параллелен базовой строке строки текста.
Элемент
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 | Принудительное использование качества черновика при наличии подразделасистемы |
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
- FF_DECORATIVE
- FF_DONTCARE
- FF_MODERN
- FF_ROMAN
- FF_SCRIPT
- FF_SWISS
Семейства шрифтов описывают внешний вид шрифта общим образом. Они предназначены для указания шрифтов, когда недоступен точный шрифт. Значения семейств шрифтов приведены следующим образом:
Ценность | Описание |
---|---|
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.h определяет LOGFONT как псевдоним, который автоматически выбирает версию ANSI или Юникод этой функции на основе определения константы препроцессора ЮНИКОДа. Сочетание использования псевдонима, нейтрального для кодирования, с кодом, не зависящим от кодирования, может привести к несоответствиям, которые приводят к ошибкам компиляции или среды выполнения. Дополнительные сведения см. в соглашениях о прототипах функций.
Требования
Требование | Ценность |
---|---|
минимальные поддерживаемые клиентские | Windows Vista [только классические приложения] |
минимальный поддерживаемый сервер | Windows Server 2008 [только классические приложения] |
заголовка | shtypes.h (include Shtypes.h, Dimm.h) |