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
指定转义向量与设备的 x 轴之间的角度(以十分之几度为单位)。 转义向量与文本行的基线并行。
lfEscapement 成员指定转义和方向。 应将 lfEscapement 和 lfOrientation 设置为相同的值。
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 |
朝鲜语 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\Fontsmothing 注册表子项时,强制使用草稿质量。 |
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 | 具有常量笔划宽度的字体(单空格),带或不带衬线。 单空间字体通常为现代字体,例如 Pica、Elite 和 Courier New。 |
FF_ROMAN | 具有可变笔划宽度(成比例)和 serif 的字体,例如 Serif。 |
FF_SCRIPT | 字体设计为类似于手写,例如脚本和 Cursive。 |
FF_SWISS | 具有可变笔划宽度(成比例)和无 serif 的字体,例如 Sans Serif。 |
lfFaceName[32]
类型:TCHAR[LF_FACESIZE]
指定以 null 结尾的字符串,该字符串指定字体的字样名称。 此字符串的长度不得超过 32 个字符,包括终止 null 字符。 EnumFontFamilies 函数可用于枚举所有当前可用字体的字样名称。 如果 lfFaceName 为空字符串,GDI 将使用与其他指定属性匹配的第一个字体。
以下情况不支持 ClearType 反锯齿:
- 文本在打印机上呈现。
- 为 256 种颜色或更少颜色设置的显示。
- 文本呈现到终端服务器客户端。
- 字体不是 TrueType 字体,也不是具有 TrueType 轮廓的 Microsoft OpenType 字体。 例如,以下不支持 ClearType 抗锯齿:类型 1 字体、Postscript OpenType 字体(不含 TrueType 轮廓、位图字体、矢量字体和设备字体)。
- 该字体已针对包含嵌入位图的任何字号调整嵌入位图。 例如,这通常发生在东亚字体中。
备注
shtypes.h 标头将 LOGFONT 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的
要求 | 价值 |
---|---|
最低支持的客户端 | Windows Vista [仅限桌面应用] |
支持的最低服务器 | Windows Server 2008 [仅限桌面应用] |
标头 | shtypes.h(包括 Shtypes.h、Dimm.h) |