Структура LOGFONT


Структура LOGFONT определяет атрибуты шрифта.

Синтаксис

typedef struct tagLOGFONT { 
  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; 
  TCHAR lfFaceName[LF_FACESIZE]; 
} LOGFONT, *PLOGFONT; 

Члены структуры

lfHeight
Устанавливает высоту, в логических единицах измерения, символьной ячейки шрифта или символа. Значение высоты символа (также известное как  em-высота) является величиной высоты ячейки символа, минус величина внутреннего межстрочного интервала. Механизм отображения логического шрифта в физический интерпретирует значение, указанное в параметре lfHeight нижеследующим способом.
Значение Предназначение
> 0 Механизм отображения логического шрифта в физический преобразует эту величину в единицы измерения устройства (пиксели) и приводит в его соответствие, сверяя с высотой ячейки доступных шрифтов.
0 Механизм отображения логического шрифта в физический использует заданное по умолчанию значение высоты, когда он ищет соответствие.
< 0 Механизм отображения логического шрифта в физический преобразует эту величину в единицы измерения устройства (пиксели) и приводит в соответствие его абсолютную величину, сверяя с высотой символов доступных шрифтов.

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

Это отображение происходит тогда, когда шрифт используется с самого  начала.

Для  режима отображения  MM_TEXT, Вы можете использовать ниже  следующее формулу, чтобы установить высоту для шрифта с заданным  размером в пунктах:

lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);
lfWidth
Устанавливает среднюю ширину, в логических единицах измерения, символов в шрифте. Если lfWidth равен нулю, отношение ширины знака устройства к его высоте  согласуется опираясь на преобразования в цифровую форму отношения ширины знака к его высоте  доступных шрифтов, чтобы найти самое близкое соответствие, определенное абсолютной величиной разности.
lfEscapement
Устанавливает угол, в десятых долях градусов между вектором наклона и осью X устройства. Вектор наклона параллелен к основной линии строки текста.

Windows NT/2000/XP: Когда графический режим устанавливается с флажком GM_ADVANCED, Вы можете задать угол наклона строки независимо от ориентации угла символов строки.

Когда графический режим устанавливается с флажком GM_COMPATIBLE, член lfEscapement задает и наклон и ориентацию. Вы должны установить члены lfEscapement и lfOrientation в одно и то же значение.

Windows 95/98/Me: член lfEscapement  задает и наклон и ориентацию. Вы должны установить члены 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 устанавливает набор символов, который является зависимым от операционной системы.

Windows 95/98/Me: Вы можете использовать значение DEFAULT_CHARSET, чтобы дать возможность полностью описывать название и размер логического шрифта. Если указанное имя шрифта не существует, шрифт из любого набора символов может быть заменен указанным шрифтом, так что вам следует мало использовать флажок DEFAULT_CHARSET, чтобы избежать неожиданных результатов.

Windows NT/2000/XP: флажок DEFAULT_CHARSET устанавливается в значение, основанное на текущем языке конкретной страны в системе. Например, когда язык конкретной страны в системе является английским (Соединенные Штаты), он устанавливается как ANSI_CHARSET.

Шрифты других наборов символов также могут существовать в операционной системе. Если приложение использует шрифт с неизвестным набором символов, оно не должно пытаться транслировать или интерпретировать строки, которые представлены при помощи этого шрифта.

Этот параметр важен в процессе подстановки шрифтов. Чтобы гарантировать совместимые результаты, задайте конкретный набор символов. Если Вы устанавливаете название гарнитуры шрифта в члене lfFaceName то, удостоверьтесь, что величина lfCharSet соответствует набору символов гарнитуры шрифта, указанной в lfFaceName.

lfOutPrecision
Устанавливает точность вывода. Точность вывода определяет, как близко вывод должен соответствовать высоте требуемого шрифта, ширине, ориентации символов, наклону, шагу разрядки и типу шрифта. Это могут быть одно из ниже перечисленных значений.
Значение Предназначение
OUT_CHARACTER_PRECIS Не используется.
OUT_DEFAULT_PRECIS Устанавливает заданное по умолчанию поведение механизма отображения логического шрифта в физический.
OUT_DEVICE_PRECIS Указывает механизму отображения логического шрифта в физический, чтобы выбрать шрифт поставляемый устройством, когда система содержит многокомпонентные шрифты с тем же самым названием.
OUT_OUTLINE_PRECIS Windows NT/2000/XP: Это значение указывает механизму отображения логического шрифта в физический, который выбирает из шрифта формата TrueType и других шрифтов на основе контура
OUT_RASTER_PRECIS Указывает механизму отображения логического шрифта в физический, чтобы выбрать растровый шрифт, когда система содержит многочисленные шрифты с тем же самым названием.
OUT_STRING_PRECIS Это значение не используется механизмом отображения логического шрифта в физический, но оно возвращается, когда перечисляются растровые шрифты.
OUT_STROKE_PRECIS Windows NT/2000/XP: Это значение не используется механизмом отображения логического шрифта в физический, но оно возвращается, когда перечисляются шрифты формата TrueType, другие шрифты на основе контура и векторные шрифты.

Windows 95: Это значение используется, когда преобразуются векторные шрифты и возвращается, когда перечисляется шрифты формата TrueType или векторные шрифты.

OUT_TT_ONLY_PRECIS Указывает механизму отображения логического шрифта в физический, чтобы выбирать из только шрифтов TrueType. Если  шрифтов TrueType установленных в системе  нет, механизм отображения логического шрифта в физический возвращается к заданному по умолчанию поведению.
OUT_TT_PRECIS Указывает механизму отображения логического шрифта в физический, чтобы выбрать шрифт TrueType, когда система содержит многочисленные шрифты с тем же самым названием.

Приложения могут использовать флажки OUT_DEVICE_PRECIS, OUT_RASTER_PRECIS и  OUT_TT_PRECIS, чтобы управлять механизмом отображения логического шрифта в физический  при выборе шрифта, когда операционная система содержит больше чем один шрифт с указанным названием. Например, если операционная система содержит растровый шрифт по имени Symbol  и в формате TrueType, определение флажка OUT_TT_PRECIS вынуждает механизм отображения логического шрифта в физический выбрать версию шрифта формата TrueType. Определение флажка OUT_TT_ONLY_PRECIS вынудило бы механизм отображения логического шрифта в физический выбрать шрифт TrueType, даже если он использует вместо указанного шрифт TrueType другого названия.

lfClipPrecision
Устанавливает точность отсечения. Точность отсечения определяет, как отсечь символы, которые находятся частично вне области отсечения. Член может состоять из одного или нескольких нижеследующих значений.
Значения Предназначение
CLIP_DEFAULT_PRECIS Устанавливает характер операции отсечения по умолчанию.
CLIP_CHARACTER_PRECIS Не используется.
CLIP_STROKE_PRECIS Не используется механизмом отображения логического шрифта в физический, но возвращается, когда перечисляются растровые, векторные или шрифты TrueType.

Windows NT/2000/XP: Для совместимости, это значение всегда возвращается при перечислении шрифтов.

CLIP_MASK Не используется.
CLIP_EMBEDDED Вы должны устанавливать этот флажок для того, чтобы использовать внедренный шрифт только для чтения.
CLIP_LH_ANGLES Когда используется это значение, вращение, сдвиг для всех шрифтов зависит от того, является ли ориентация системы координат левосторонней или правосторонней.

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

Более подробную информации об ориентации систем координат, см. в описании параметра nOrientation.

CLIP_TT_ALWAYS Не используется.
 
lfQuality
Устанавливает качество вывода. Качество вывода определяет, как тщательно графический интерфейс устройств (GDI) должен пытаться найти соответствие атрибутов логического шрифта с такими же атрибутами фактического физического шрифта. Член может быть одним из ниже перечисленных значений.
Значение Предназначение
ANTIALIASED_QUALITY Windows NT 4.0 и старше: Шрифт всегда сглаживается, если шрифт поддерживает это действие, и размер шрифта определяется и не слишком маленьким и не слишком большим.

Windows 95 Plus!, Windows 98/Me: Вывод на экран должен иметь цвет больше чем  8- битовый, это должно быть одноплоскостное устройство, он не может быть палитрой дисплея, и он не может быть в нескольких  установленных экранах монитора. Кроме того, Вы должны выбрать шрифт TrueType в контексте устройства (DC) экрана до использования флажка в DIBSection, в противном случае сглаживание не происходит.

CLEARTYPE_QUALITY Windows XP: Если он установлен, текст (когда возможно) изображается с плавным переходом полутонов, используя ClearType метод сглаживания . См. Замечания с подробной информацией.
DEFAULT_QUALITY Вид шрифта не имеет значения.
DRAFT_QUALITY Вид шрифта менее важен, чем в случае, когда используется флажок PROOF_QUALITY. Для растровых шрифтов графического интерфейса устройств, допускается масштабирование, которое означает, что, доступно больше размеров шрифта , но качество может быть ниже. Полужирный, курсивный, подчеркнутый, и зачеркнутый шрифты синтезируются в случае необходимости.
NONANTIALIASED_QUALITY Windows 95/98/Me, Windows NT 4.0 и старше: Шрифт никогда не сглаживается.
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 Шрифты фиксированной ширины, с или без засечек. Шрифты фиксированной ширины обычно современные. Пример тому - шрифты Pica, Elite и CourierNew®.
FF_ROMAN Шрифты с переменной шириной штриха (пропорциональные) и с засечками. Пример - MS® Serif.
FF_SCRIPT Шрифты, разработанные, чтобы выглядеть подобно рукописным. Примеры Script и Cursive.
FF_SWISS Шрифты с переменной шириной штриха (пропорциональный) и без засечек. Пример MS® Sans Serif.
lfFaceName
Символьная строка с нулем в конце, которая устанавливает название гарнитуры шрифта. Длина этой строки не должна выходить за пределы 32 символов, включая нулевой признак конца. Функция EnumFontFamiliesEx может использоваться для перечисления названий гарнитур шрифта всех текущих доступных шрифтов. Если член lfFaceName - пустая строка, графический интерфейс устройства (GDI) использует первый шрифт, который соответствует другим заданным атрибутам.

Замечания

Windows XP: Ниже следующее ситуации не поддерживают сглаживание технологии ClearType:

Смотри также

Обзор шрифты и текст, Структуры, используемые шрифтами и текстом, CreateFont, CreateFontIndirect, EnumFontFamiliesEx

Размещение и совместимость LOGFONT

Windows. NET Server

Да

Windows XP

Да

Windows 2000

Да

Windows NT

Да версии 3.1 и выше

Windows Me

Да

Windows 98

Да

Windows 95

Да

Заголовочный файл

 

- объявлено в

Wingdi.h

- включено в

Windows.h

Unicode

Объявлены как структуры Unicode и ANSI

Замечания по платформе

Не имеется

 

Назад в оглавление
На главную страницу
На оглавление справки

Hosted by uCoz