勇芳软件工作室.汉化:  Fonts and Text > Fonts and Text Structures >

LOGFONT

Previous pageReturn to chapter overviewNext page

描述

 

LOGFONT结构定义字体的属性。

 

C++ 语法

 

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;

 

PowerBASIC 语法

 

TYPE LOGFONTA

lfHeight         AS LONG

lfWidth          AS LONG

lfEscapement     AS LONG

lfOrientation    AS LONG

lfWeight         AS LONG

lfItalic         AS BYTE

lfUnderline      AS BYTE

lfStrikeOut      AS BYTE

lfCharSet        AS BYTE

lfOutPrecision   AS BYTE

lfClipPrecision  AS BYTE

lfQuality        AS BYTE

lfPitchAndFamily AS BYTE

lfFaceName       AS ASCIIZ * %LF_FACESIZE

END TYPE

 

Unicode版本:

 

TYPE LOGFONTW

lfHeight         AS LONG

lfWidth          AS LONG

lfEscapement     AS LONG

lfOrientation    AS LONG

lfWeight         AS LONG

lfItalic         AS BYTE

lfUnderline      AS BYTE

lfStrikeOut      AS BYTE

lfCharSet        AS BYTE

lfOutPrecision   AS BYTE

lfClipPrecision  AS BYTE

lfQuality        AS BYTE

lfPitchAndFamily AS BYTE

lfFaceName       AS WSTRINGZ * %LF_FACESIZE

END TYPE

 

成员

 

lfHeight

 

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

 

含义

> 0

字体映射器将此值转换为设备单位,并将其与可用字体的单元格高度进行匹配。

0

当搜索匹配时,字体映射器使用默认高度值。

< 0

字体映射器将此值转换为设备单位,并将其绝对值与可用字体的字符高度相匹配。

 

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

 

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

 

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

 

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

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

 

lfWidth

 

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

 

lfEscapement

 

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

 

Windows NT / 2000 / XP / Vista / Windows 7:当图形模式设置为GM_ADVANCED时,可以独立于字符串字符的方位角指定字符串的擒纵角度。

 

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

 

Windows 95/98 / MelfEscapement成员同时指定了擒纵方向和方向。您应该将lfEscapementlfOrientation设置为相同的值。

 

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 / Vista / Windows 7:将DEFAULT_CHARSET设置为基于当前系统区域设置的值。例如,当系统区域设置为英文(美国)时,将其设置为ANSI_CHARSET。

 

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

 

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

 

lfOutPrecision

 

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

 

含义

OUT_CHARACTER_PRECIS

不曾用过。

OUT_DEFAULT_PRECIS

指定默认的字体映射器行为。

OUT_DEVICE_PRECIS

当系统包含多个同名的字体时,指示字体映射器选择设备字体。

OUT_OUTLINE_PRECIS

Windows NT / 2000 / XP / Vista / Windows 7:此值指示字体映射器从TrueType和其他基于轮廓的字体中进行选择。

OUT_PS_ONLY_PRECIS

Windows 2000 / XP / Vista / Windows 7:指示字体映射器仅从PostScript字体中进行选择。如果系统中没有安装PostScript字体,则字体映射器将返回到默认行为。

OUT_RASTER_PRECIS

当系统包含多个具有相同名称的字体时,指示字体映射器选择栅格字体。

OUT_STRING_PRECIS

字体映射器不使用此值,但是在列出栅格字体时会返回此值。

OUT_STROKE_PRECIS

Windows NT / 2000 / XP / Vista / Windows 7:字体映射程序不使用此值,但是在列出TrueType,其他基于轮廓的字体和向量字体时将返回此值。

 

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

OUT_TT_ONLY_PRECIS

指示字体映射器只能从TrueType字体中进行选择。如果系统中没有安装TrueType字体,则字体映射器将返回到默认行为。

OUT_TT_PRECIS

指示字体映射器在系统包含多个具有相同名称的字体时选择TrueType字体。

 

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

 

lfClipPrecision

 

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

 

有关坐标系方位的更多信息,请参阅nOrientation参数的说明。

 

含义

CLIP_CHARACTER_PRECIS

不曾用过。

CLIP_DEFAULT_PRECIS

指定默认裁剪行为。

CLIP_DFA_DISABLE

Windows XP SP1:关闭字体的字体关联。请注意,这个标志不能保证在Windows Server 2003之后对任何平台有任何影响。

CLIP_EMBEDDED

您必须指定此标志才能使用嵌入式只读字体。

CLIP_LH_ANGLES

当使用此值时,所有字体的旋转取决于坐标系的方向是左撇子还是右撇子。

 

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

CLIP_MASK

不曾用过。

CLIP_DFA_OVERRIDE

Windows 2000:关闭字体的字体关联。这与CLIP_DFA_DISABLE相同,但在某些情况下可能会出现问题;要使用的推荐标志是CLIP_DFA_DISABLE。

CLIP_STROKE_PRECIS

字体映射程序不使用,但在枚举栅格,向量或TrueType字体时返回。

 

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

CLIP_TT_ALWAYS

不曾用过。

 

lfQuality

 

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

 

含义

ANTIALIASED_QUALITY

Windows NT 4.0及更高版本:如果字体支持字体并且字体的大小不是太小或太大,则字体总是反锯齿的。

 

Windows 95 Plus!,Windows 98 / Me:显示屏必须大于8位颜色,它必须是单平面设备,它不能是调色板显示,并且不能在多显示监视器设置中。另外,在DIBSection中使用它之前,您必须在屏幕DC中选择TrueType字体,否则不会出现抗锯齿。

CLEARTYPE_QUALITY

Windows XP:如果设置,使用ClearType抗锯齿方法渲染文本(如果可能)。有关详细信息,请参阅备注。

DEFAULT_QUALITY

外观的字体没关系。

DRAFT_QUALITY

字体的外观不如使用PROOF_QUALITY重要。对于GDI栅格字体,缩放已启用,这意味着可以使用更多的字体大小,但质量可能会更低。必要时,合成粗体,斜体,下划线和删除字体。

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

字体设计看起来像手写。脚本和草书是例子。

FF_SWISS

具有可变行程宽度(比例)和无衬线的字体。MS Sans Serif是一个例子。

 

lfFaceName

 

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

 

备注

 

Windows XP:以下情况不支持ClearType抗锯齿:

 

·文本在打印机上呈现。
·显示屏为256色以下。
·文本呈现给终端服务器客户端。
·该字体不是TrueType字体或具有TrueType轮廓的OpenType字体。例如,以下不支持ClearType抗锯齿:Type 1字体,Postscript OpenType字体,没有TrueType大纲,位图字体,矢量字体和设备字体。
·该字体调整了嵌入式位图,适用于包含嵌入式位图的任何字体大小。例如,这在东亚字体中常见。

 

引用文件 #INCLUDE Once

 

WinGdi.inc(包括Windows.inc)