LOGFONTA 结构 (shtypes.h)

定义字体的属性。

Syntax

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[32];
} LOGFONTA;

Members

lfHeight

类型: LONG

指定字体字符单元格或字符的高度(以逻辑单位为单位)。 字符高度值(也称为 em 高度)是字符单元格高度值减去内部前导值。 字体映射器按以下方式解释 lfHeight 中指定的值。

价值 Description
> 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 成员同时指定转义和方向。 应将 lfEscapementlfOrientation 设置为相同的值。

lfOrientation

类型: LONG

指定每个字符的底线与设备的 x 轴之间的角度(以十分之几度为单位)。

lfWeight

类型: LONG

指定 0 到 1000 范围内的字体粗细。 例如,400 正常,700 为粗体。 如果此值为零,则使用默认权重。

为了方便起见,Wingdi.h 中定义了以下值。

价值 Weight
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

指定字符集。 以下值是预定义的:

价值 Description
ANSI_CHARSET 此字体支持 Windows ANSI 字符集。
ARABIC_CHARSET 此字体支持阿拉伯语字符集。
BALTIC_CHARSET 此字体支持波罗的海字符集。
CHINESEBIG5_CHARSET 此字体支持繁体中文(大 5)字符集。
DEFAULT_CHARSET 此字体支持基于系统默认 Windows ANSI 代码页的字符集值。 例如,当系统区域设置为英语(美国)时,系统区域设置设置为ANSI_CHARSET。
EASTEUROPE_CHARSET 此字体支持东欧字符集。
GB2312_CHARSET 此字体支持简化的(中国)中文字符集。
GREEK_CHARSET 此字体支持希腊字符集。
HANGEUL_CHARSET 此字体支持朝鲜语(朝鲜文)字符集。
HEBREW_CHARSET 此字体支持希伯来语字符集。
JOHAB_CHARSET 此字体支持朝鲜语(Johab)字符集。
MAC_CHARSET 此字体支持基于当前系统 Macintosh 代码页的字符集值。 此值主要用于旧代码,并且通常不需要,因为新式 Macintosh 计算机使用 Unicode 进行编码。
OEM_CHARSET 此字体支持特定于 OEM 的字符集。 OEM 字符集依赖于系统。
RUSSIAN_CHARSET 此字体支持西里尔文字符集。
SHIFTJIS_CHARSET 此字体支持 Shift-JIS(日语行业标准)字符集。
SYMBOL_CHARSET 此字体支持 Windows 符号字符集。
THAI_CHARSET 此字体支持泰文字符集。
TURKISH_CHARSET 此字体支持土耳其字符集。
VIETNAMESE_CHARSET 此字体支持越南字符集。

作系统中可能存在具有其他字符集的字体。 如果应用程序使用具有未知字符集的字体,则不应尝试翻译或解释使用该字体呈现的字符串。

此成员在字体映射过程中非常重要。 若要确保结果一致,请指定特定的字符集。 如果在 lfFaceName 成员中指定字号名称,请确保 lfCharSet 值与 lfFaceName 中指定的字样字符集匹配。

lfOutPrecision

类型: BYTE

指定输出精度。 输出精度定义输出必须与所请求字体的高度、宽度、字符方向、转义、间距和字体类型相匹配的方式。 它可以是 Wingdi.h 中定义的以下值之一:

价值 Description
OUT_DEFAULT_PRECIS 指定默认字体映射器行为。
OUT_RASTER_PRECIS 当系统包含多个同名字体时,指示字体映射器选择光栅字体。
OUT_STRING_PRECIS 字体映射器不使用此值,但在枚举光栅字体时返回该值。

lfClipPrecision

类型: BYTE

指定剪辑精度。 剪辑精度定义如何剪辑部分超出剪辑区域的字符。 它可以是 Wingdi.h 中定义的以下一个或多个值:

价值 Description
CLIP_DEFAULT_PRECIS 指定默认剪辑行为。
CLIP_CHARACTER_PRECIS 未使用。
CLIP_STROKE_PRECIS 字体映射器不使用,但在枚举光栅、矢量或 TrueType 字体时返回。

lfQuality

类型: BYTE

指定输出质量。 输出质量定义 GDI 必须尝试将逻辑字体属性与实际物理字体属性匹配的方式。 它可以是 Wingdi.h 中定义的以下值之一:

价值 Description
ANTIALIASED_QUALITY 为字体启用抗锯齿。 显示驱动程序必须支持抗锯齿文本才能使此设置正常工作。
NONANTIALIASED_QUALITY 存在 HKEY_LOCAL_MACHINE\System\GDI\Fontsmoothing 注册表子项时,强制使用草稿质量。
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
成员的位 4 到 7 指定字体组,可以是 Wingdi.h 中定义的以下值之一:
  • FF_DECORATIVE
  • FF_DONTCARE
  • FF_MODERN
  • FF_ROMAN
  • FF_SCRIPT
  • FF_SWISS
可以使用布尔 OR 运算符将一个音调常量与一个系列常量联接,从而获取适当的值。

字体系列以一般方式描述字体的外观。 当确切的字样不可用时,它们用于指定字体。 字体系列的值如下所示:

价值 Description
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 轮廓、位图字体、矢量字体和设备字体)。
  • 该字体已针对包含嵌入位图的任何字号调整嵌入位图。 例如,这通常发生在东亚字体中。
此结构首先出现在 Windows Vista 中的 Shtypes.idl 和 Shtypes.h 中,以便与 IVisualProperties 接口的成员轻松使用。 但是,在早期版本的 Windows 中,Wingdi.h 和 Windows.h 中定义了相同的结构。

要求

Requirement 价值
最低支持的客户端 Windows Vista [仅限桌面应用]
支持的最低服务器 Windows Server 2008 [仅限桌面应用]
Header shtypes.h(包括 Shtypes.h、Dimm.h)

另请参阅

IVisualProperties::GetFont

IVisualProperties::SetFont