LOGFONT

【勇芳软件工作室】汉化HomePreviousNext

LOGFONT结构定义字体的属性。

typedef struct tagLOGFONT { // lf

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;

会员

lfHeight

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

含义
> 0字体映射器将此值转换为设备单位,并将其与可用字体的单元格高度进行匹配。
0当搜索匹配时,字体映射器使用默认高度值。
< 0字体映射器将此值转换为设备单位,并将其绝对值与可用字体的字符高度相匹配。

对于所有高度比较,字体映射器将查找不超过请求的大小的最大字体。

当首次使用该字体时,会发生此映射。

对于MM_TEXT映射模式,可以使用以下公式为给定点大小指定字体的高度:

lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth

指定字体中字符的平均宽度(以逻辑为单位)。如果lfWidth为零,则设备的宽高比与可用字体的数字化宽高比匹配,以找到最差匹配,由差的绝对值确定。

lfEscapement

指定擒纵矢量与设备x轴之间的角度(以十分之一度为单位)。擒纵矢量平行于一行文字的基线。

Windows NT:

当图形模式设置为GM_ADVANCED时,您可以独立于字符串字符的方位角指定字符串的擒纵角度。

当图形模式设置为GM_COMPATIBLE时,lfEscapement同时指定擒纵轮廓和方向。您应该将lfEscapementlfOrientation设置为相同的值。

Windows 95:

lfEscapement成员同时指定了擒纵机构和方向。您应该将lfEscapementlfOrientation设置为相同的值。

lfOrientation

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

lfWeight

指定字体在0到1000之间的权重。例如,400是正常的,700是粗体。如果该值为零,则使用默认权重。

为方便起见,定义了以下值:

重量
FW_DONTCARE0
FW_THIN100
FW_EXTRALIGHT200
FW_ULTRALIGHT200
FW_LIGHT300
FW_NORMAL400
FW_REGULAR400
FW_MEDIUM500
FW_SEMIBOLD600
FW_DEMIBOLD600
FW_BOLD700
FW_EXTRABOLD800
FW_ULTRABOLD800
FW_HEAVY900
FW_BLACK900

The italic font attribute is set.

如果设置为TRUE,则指定斜体字体。

Causes the dialog box to display the controls that allow the user to specify strikeout, underline, and text color options.

如果设置为TRUE,则指定下划线字体。

lfStrikeOut

指定一个删除字体,如果设置为TRUE。

lfCharSet

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

ANSI_CHARSET
DEFAULT_CHARSET
SYMBOL_CHARSET
SHIFTJIS_CHARSET
GB2312_CHARSET
HANGEUL_CHARSET
CHINESEBIG5_CHARSET
OEM_CHARSET

仅Windows 95:

JOHAB_CHARSET
HEBREW_CHARSET
ARABIC_CHARSET
GREEK_CHARSET
TURKISH_CHARSET
THAI_CHARSET
EASTEUROPE_CHARSET
RUSSIAN_CHARSET
MAC_CHARSET
BALTIC_CHARSET

OEM_CHARSET值指定与操作系统相关的字符集。

您可以使用DEFAULT_CHARSET值来允许字体的名称和大小来完全描述逻辑字体。如果指定的字体名称不存在,则可以用任何字符集替换指定字体的字体,因此应谨慎使用DEFAULT_CHARSET以避免意外的结果。

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

该参数在字体映射过程中很重要。为了确保一致的结果,请指定一个特定的字符集。如果您在lfFaceName成员中指定了字体名称,请确保lfCharSet值与lfFaceName 【.】中指定的字体的字符集相匹配

lfOutPrecision

指定输出精度。输出精度定义输出必须与请求的字体的高度,宽度,字符方向,擒纵,音高和字体类型的匹配程度。它可以是以下值之一:

含义
OUT_CHARACTER_PRECIS不曾用过。
OUT_DEFAULT_PRECIS指定默认的字体映射器行为。
OUT_DEVICE_PRECIS当系统包含多个同名的字体时,指示字体映射器选择设备字体。
OUT_OUTLINE_PRECISWindows NT:该值指示字体映射器从TrueType和其他基于轮廓的字体中进行选择。

Windows 95:不使用此值。

OUT_RASTER_PRECIS当系统包含多个具有相同名称的字体时,指示字体映射器选择栅格字体。
OUT_STRING_PRECIS字体映射器不使用此值,但是在列出栅格字体时会返回此值。
OUT_STROKE_PRECISWindows NT:字体映射程序不使用此值,但在TrueType,其他基于轮廓的字体和向量字体被枚举时返回此值。

Windows 95:此值用于映射矢量字体,并在枚举TrueType或矢量字体时返回。

OUT_TT_ONLY_PRECIS指示字体映射器只能从TrueType字体中进行选择。如果系统中没有安装TrueType字体,则字体映射器将返回到默认行为。
OUT_TT_PRECIS指示字体映射器在系统包含多个具有相同名称的字体时选择TrueType字体。

应用程序可以使用OUT_DEVICE_PRECIS,OUT_RASTER_PRECIS和OUT_TT_PRECIS值来控制当操作系统包含多个具有给定名称的字体时,字体映射器如何选择字体。例如,如果操作系统在栅格和TrueType格式中包含名为Symbol的字体,则指定OUT_TT_PRECIS将强制字体映射器选择TrueType版本。指定OUT_TT_ONLY_PRECIS强制字体映射器选择TrueType字体,即使它必须替换另一个名称的TrueType字体。

lfClipPrecision

指定裁剪精度。剪辑精度定义了如何剪辑部分在裁剪区域之外的字符。它可以是一个或多个以下值:

含义
CLIP_DEFAULT_PRECIS指定默认裁剪行为。
CLIP_CHARACTER_PRECIS不曾用过。
CLIP_STROKE_PRECIS字体映射器不使用,但在枚举栅格,矢量或TrueType字体时返回。

Windows NT :为了兼容,枚举字体时始终返回此值。

CLIP_MASK不曾用过。
CLIP_EMBEDDED您必须指定此标志才能使用嵌入式只读字体。
CLIP_LH_ANGLES当使用此值时,所有字体的旋转取决于坐标系的方向是左撇子还是右撇子。

如果不使用,设备字体总是逆时针旋转,但其他字体的旋转取决于坐标系的方向。

有关坐标系方向的更多信息,请参阅【nOrientation】参数的说明

CLIP_TT_ALWAYS不曾用过。

lfQuality

指定输出质量。输出质量定义了图形设备接口(GDI)必须如何仔细地将逻辑字体属性与实际物理字体的属性进行匹配。它可以是以下值之一:

含义
DEFAULT_QUALITY外观的字体没关系。
DRAFT_QUALITY字体的外观不如使用PROOF_QUALITY重要。对于GDI栅格字体,缩放已启用,这意味着更多的字体大小可用,但质量可能会较低。必要时,合成粗体,斜体,下划线和删除字体。
PROOF_QUALITY字体的字符质量比逻辑字体属性的精确匹配更重要。对于GDI光栅字体,缩放被禁用,并且选择最接近的字体大小。虽然当使用PROOF_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字体设计看起来像手写。脚本和草书是例子。
FF_SWISS具有可变行程宽度(成比例)和无衬线的字体。MS Sans Serif是一个例子。

lfFaceName

一个空字符串的字符串,用于指定字体的字体名称。此字符串的长度不得超过32个字符,包括空终止符。EnumFontFamilies函数可用于枚举所有当前可用字体的字体名称。如果lfFaceName为空字符串,则GDI将使用与其他指定属性相匹配的第一个字体。

也可以看看

CreateFont, CreateFontIndirect, EnumFontFamilies