极语言官方网站

字体文字

字体是共享共同设计的字符和符号的集合。 此设计的三个主要元素称为字体、样式和大小。


字体

术语“字体”是指字体中字符和符号的特定特征,例如构成字符的粗笔和细笔划的宽度,以及是否存在衬线。

衬线是未连接笔划末尾的短十字线。 没有衬线的字体或字样通常称为无衬线字体。


样式

术语样式是指字体的粗细和倾斜。字体粗细范围从细到黑色。

下面是从最轻到重,字体的可能权重列表:

薄特轻轻正常中等半Bold 粗特外博尔德重

三个术语对字体倾斜进行分类:罗马、倾斜和斜体。

罗马字体中的字符是直立的。 倾斜字体中的字符是人为倾斜的。

倾斜是通过对罗马字体中的字符执行剪切转换来实现的。 斜体字体中的字符确实倾斜,在设计时显示出来。


大小

字号是一个不精确值。 通常可以通过测量从小写 g 底部到相邻大写 M 顶部的距离来确定,如下图所示。

显示小写 g 和大写 m 的插图

字体的大小以称为磅的单位指定。 一个点是一英寸的 .013837。

按照皮埃尔·西蒙·富尼尔设计的点系统,通常的做法是将点近似为1/72英寸。

字体系列是一组具有常见笔划宽度和衬线特征的字体。

有五个字体系列。 第六个系列允许应用程序使用默认字体。

下表描述了字体系列。
字系英文名数值说明
装饰FF_DECORATIVE80   指定新奇字体。 例如,旧英语。
无关FF_DONTCARE0指定泛型系列名称。 当有关字体的信息不存在或无关紧要时,将使用此名称。 使用默认字体。
新式FF_MODERN48指定带衬线或不带衬线的空白字体。 Monospace 字体通常采用新式字体;示例包括 Pica、Elite 和 Courier New。
罗马FF_ROMAN16指定带衬线的比例字体。 例如,泰晤士新罗马。
脚本FF_SCRIPT64指定设计为类似于手写的字体;示例包括 Script 和 Cursive。
瑞士FF_SWISS32指定不带衬线的比例字体。 例如 Arial。

系列中的字体按大小 (10 磅、24 磅等进行区分,) 和样式 (常规、斜体等) 。

应用程序可以使用四种不同类型的字体技术来显示和打印文本:光栅、矢量字体、真字体、开放字体

这些字体之间的差异反映了每个字符或符号的 字形 在相应的字体资源文件中的存储方式:

在光栅字体中,字形是系统用来在字体中绘制单个字符或符号的位图。

在矢量字体中,字形是线条端点的集合,用于定义系统用于在字体中绘制字符或符号的线段。

在 TrueType 和 OpenType 字体中,字形是线条和曲线命令的集合以及提示的集合。

系统使用线条和曲线命令为 TrueType 或 Microsoft OpenType 字体中的字符或符号定义位图的轮廓。

系统使用提示调整用于绘制字符或符号的曲线的线条和形状的长度。

这些提示和相应的调整基于用于减小或增加位图大小的缩放量。

OpenType 字体等效于 TrueType 字体,但除了 TrueType 字形定义外,OpenType 字体还允许 PostScript 字形定义。

由于光栅字体中每个字形的位图都是针对设备的特定分辨率设计的,因此光栅字体通常被视为依赖于设备。

另一方面,矢量字体不依赖于设备,因为每个字形都存储为可缩放线条的集合。

但是,矢量字体的绘制速度通常比光栅字体或 TrueType 和 OpenType 字体更慢。

TrueType 和 OpenType 字体提供相对快速的绘制速度和真正的设备独立性。

通过使用与字形关联的提示,开发人员可以向上或向下缩放 TrueType 或 OpenType 字体中的字符,并保持其原始形状。

如前所述,字体的字形存储在字体资源文件中。

字体资源文件实际上是只包含数据的 DLL,没有代码。

对于光栅字体和矢量字体,此数据分为两个部分:描述字体指标的标题和字形数据。

光栅字体或矢量字体的字体资源文件由 .fon 文件扩展名标识。

对于 TrueType 和 OpenType 字体,每种字体有两个文件:第一个文件包含相对较短的标题,第二个文件包含实际字体数据。

第一个文件由 .fot 扩展名标识,第二个文件由 .ttf 扩展名标识。

所有字体都使用字符集。 字符集包含标点符号、数字、大写和小写字母以及所有其他可打印字符。

字符集的每个元素都由一个数字标识。

大多数使用的字符集都是美国 ASCII 字符集的超集,它为 32 到 127 的 96 个数值定义字符。

有五个主要的字符集组:


Windows 字符集

Windows 字符集是最常用的字符集。 它实质上等效于 ANSI 字符集。

空白字符是字符集中的第一个字符。 它具有十六进制值0x20 。

字符集中的最后一个字符具有十六进制值0xFF。

许多字体指定默认字符。每当对不在字体中的字符发出请求时,系统会提供此默认字符。

许多使用Windows字符集的字体将句点(.)指定为默认字符。TrueType和OpenType字体通常使用打开框作为默认字符。

字体使用称为四边形的断字符来分隔单词和对齐文本。

大多数使用 Windows 字符集的字体指定空白字符将用作断字符。


Unicode 字符集

Windows 字符集使用 8 位表示每个字符;因此,可以使用 8 位表示的最大字符数为 256 (2^8) 。

这通常足以满足西方语言的需求,包括法语、德语、西班牙语和其他语言中使用的音调符号。

但是,东部语言使用数千个单独的字符,无法使用单字节编码方案进行编码。

随着计算机商业的激增,开发了双字节编码方案,以便字符可以以 8 位、16 位、24 位或 32 位序列表示。

这需要复杂的传递算法:即便如此,使用不同的代码集可能会在两台不同的计算机上产生完全不同的结果。

为了解决多种编码方案的问题,开发了用于数据表示的 Unicode 标准。

Unicode 是 16 位字符编码方案,可以表示 65,536 (2^16) 字符,这足以包含当今计算机商业中的所有语言,

以及标点符号、数学符号和扩展空间。 Unicode 为每个字符建立唯一的代码,以确保字符转换始终准确。


OEM 字符集

OEM 字符集通常用于用于屏幕显示的全屏 MS-DOS 会话中。

在 OEM、美国 ASCII 和 Windows 字符集中,字符 32 到 127 通常相同。

OEM 字符集中的其他字符 (0 到 31 和 128 到 255) 对应于可以在全屏 MS-DOS 会话中显示的字符。

这些字符通常与 Windows 字符不同。


符号字符集

符号字符集包含通常用于表示数学公式和科学公式的特殊字符。


特定于供应商的字符集

许多打印机和其他输出设备提供基于不同于 Windows 和 OEM 集的字符集的字体。

例如,扩展二进制编码的十进制交换代码 (EBCDIC) 字符集。

若要使用这些字符集之一,打印机驱动程序将从 Windows 字符集转换为特定于供应商的字符集。

仅当该字体驻留在指定的设备上或安装在系统字体表中时,应用程序才能使用该字体来绘制文本。

字体表是一个内部数组,用于标识应用程序可用的所有非设备字体。

应用程序可以通过调用 枚举字库 或 字体选框 函数来检索当前安装在设备上或存储在内部字体表中的字体的名称。

若要临时安装字体,请调用 添加字体 或 资源字体 这些函数加载存储在字体资源文件中的字体。

但是,这是一个临时安装,因为在重新启动后,字体将不存在。

当应用程序使用完已安装的字体时,它必须通过调用 移除字体 函数删除该字体。

每当应用程序调用添加和删除字体资源的函数时,它还应调用 发送消息 函数,并将 字库更新 消息发送到系统中的所有顶级窗口。

此消息通知其他应用程序,已由添加或删除字体的应用程序更改了内部字体表。

通常,字体包含在单个字体资源文件中。 但是,某些字体的信息分散在多个文件中。

例如,键入 1 多个主控字体需要两个文件:字体指标的 .pfm、字体位的 .pfb

若要将多个文件中的字体添加到系统,请使用 添加字体 或 资源字体 函数。

这些函数中的 文件名 参数必须指向包含由垂直条或管道分隔的文件名的字符串 ( | ).。 例如,"abcxxxxx.pfm|abcxxxxx.pfb."

文本输出是工作区中最常见的图形输出类型;应用程序以不同的方式使用它。

Word处理和桌面发布应用程序使用格式化文本创建文档;电子表格应用程序使用文本、数字和符号指定公式、标签列和列表值;

数据库应用程序使用文本创建记录和显示查询,CAD 应用程序使用文本标记对象和显示尺寸。

在应用程序的工作区和打印纸页上,有一些用于设置文本格式和绘制文本的功能。

这些函数可分为两类:一类是设置文本格式 (或准备输出) ,二是实际绘制文本。

格式设置函数对齐文本、设置字符间距、设置文本和文本背景颜色,以及对齐文本。

绘图函数 (或符号) 或整个文本字符串绘制单个字符。

在 Microsoft Windows 中工作时,使用回车符/换行符对 (\r\n) 指定硬换行符。

格式设置函数可分为三类:

检索或设置设备上下文 的文本格式设置属性 的类别、检索 字符宽度的函数 和检索字符串宽度和高度的函数。


文本对齐

应用程序可以使用 对齐文本 函数指定在调用其中一个绘图函数时,系统应如何定位文本字符串中的字符。

此函数可用于定位标题、页码、标注等。

系统通过将引用点与当前光标位置或作为参数传递给其中一个文本绘制函数之一的点对齐来定位文本字符串。

对齐文本 函数允许应用程序指定此引用点的位置。

设备上下文的默认文本对齐方式是环绕文本的虚矩形的左上角。

应用程序可以通过调用 GetTextAlign 函数检索任何设备上下文的当前文本对齐设置。


字符间间距

应用程序可以使用 间隔字符 函数更改指定设备上下文中所有文本输出操作的字符间间距。

下图显示了通过调用 写字到 函数绘制两次的文本字符串。 第二次绘制文本之前,调用 间隔字符 函数以递增字符间间距。

插图将同一文本推倒两次:首先使用正常字符间间距,然后使用较宽的间距

任何设备上下文的默认字符间间距值为零。

应用程序可以通过调用 字符间距 函数检索设备上下文的当前字符间间距值。


文本行对齐

应用程序可以使用 文字尺寸 和 断句空间 函数来对齐文本行。

文本对齐是任何桌面发布和大多数字处理应用程序中的常见操作。 文字尺寸 函数计算文本字符串的宽度和高度。

计算宽度后,应用程序可以调用 断句空间 函数,以在文本行中的每个单词之间分配额外的间距。


文本和背景色

应用程序可以使用 文本改色 函数设置在其窗口的工作区中绘制的文本的颜色,以及在彩色打印机上绘制的文本的颜色。

应用程序可以使用 改背景色 函数设置每个字符后显示的颜色,并使用 改背景色 函数指定系统应如何将所选背景色与

视频显示器上的当前颜色混合。

显示设备上下文的默认文本颜色为黑色;默认背景色为白色;默认后台模式为 OPAQUE。

应用程序可以通过调用 文字颜色 函数检索设备上下文的当前文本颜色。

应用程序可以通过调用 取背景色 函数检索设备上下文的当前背景色,并通过调用 取背景色 函数检索当前背景模式。

应用程序在执行此类任务时需要检索字符宽度数据,例如将文本字符串拟合到页面或列宽。

应用程序可以使用四个函数来检索字符宽度数据。 其中两个函数检索字符高级宽度,其中两个函数检索实际字符宽度数据。

应用程序可以使用 字符宽度 和 字隔宽度 函数检索文本字符串中单个字符或符号的前进宽度。

高级宽度是视频显示器上的光标或打印机上的打印头在打印文本字符串中的下一个字符之前必须前进的距离。

字符宽度 函数将高级宽度作为整数值返回。 如果需要更高的精度,应用程序可以使用 字隔宽度 函数检索小数高级宽度值。

应用程序可以使用 真字宽度 和 连字宽度 函数检索实际字符宽度数据。

连字宽度 函数适用于所有字体。 真字宽度 函数仅适用于 TrueType 和 OpenType 字体。

除了检索单个字符的字符宽度数据外,应用程序还需要计算整个字符串的宽度和高度。

两个函数检索字符串宽度和高度度量: 文字尺寸 和 文字宽高。

如果字符串不包含制表符,应用程序可以使用 文字尺寸 函数检索指定字符串的宽度和高度。

如果字符串包含制表符,则应用程序应调用 文字宽高 函数。

应用程序可以使用 文本尺寸 函数执行换行操作。

此函数返回指定字符串中适合指定空格的字符数。


字体升序和降序

某些应用程序使用字体的最大升序符和降序符确定不同大小文本行之间的行距。

应用程序可以通过调用 文字指标 函数,然后检查 物理字体类 的 上升 和 下降 成员来检索这些值。

最大上升和下降不同于版式上升和下降。

在 TrueType 和 OpenType 字体中,版式上升和下降通常是字形的顶部和字形的底部。

应用程序可以通过调用 文本指标 函数并检查 字体指标类 结构的 果上 和 果下 成员中的值,

检索 TrueType 或 OpenType 字体的版式升序和降序。


字体尺寸

应用程序可以通过调用 文本指标 函数来检索 TrueType 或 OpenType 字体的物理尺寸。

应用程序可以通过调用 文字指标 函数来检索任何其他字体的物理尺寸。

若要确定输出设备的尺寸,应用程序可以调用 设备项目 函数。 设备项目 返回物理维度和逻辑维度。

逻辑英寸是系统用来在屏幕上显示清晰字体的度量值,比物理英寸大大约 30% 到 40%。

使用逻辑英寸会排除屏幕和打印机输出之间的完全匹配。

开发人员应注意,屏幕上的文本不仅仅是将显示在页面上的文本的缩放版本,尤其是在图形合并到文本中时。


绘制文本

在应用程序选择适当的字体、设置所需的文本格式设置选项并计算文本字符串所需的字符宽度和高度值后,

它可以通过调用任何文本输出函数开始绘制字符和符号:绘制文本、绘制字符、绘制文字、制表写字、写字到。

当应用程序调用其中一个函数时,操作系统会将调用传递给图形引擎,而图形引擎又将调用传递给相应的设备驱动程序。 在设备驱动程序级别,所有这些调用都受驱动程序自己的 绘制字符 或 写字到 函数的一个或多个调用支持。

应用程序将通过调用 绘制字符 实现最快的执行,该调用会快速转换为设备的 绘制字符 调用。

但是,在某些情况下,应用程序应调用其他三个函数之一;

例如,若要在指定矩形区域的边框内绘制多行文本,调用 绘制文本 会更有效。

若要创建具有对齐文本列的多列表,调用 制表写字 会更有效。


复杂脚本

虽然前面讨论的函数适用于多种语言,但它们可能无法满足复杂脚本的需求。

复杂脚本 是其打印形式不以简单方式呈现的语言。

例如,复杂脚本可能允许双向呈现、字形的上下文调整或组合字符。

由于这些特殊要求,文本输出的控制必须非常灵活。

显示文本 写字到、绘制字符、制表写字、 绘制文本 和 文本尺寸 的函数已扩展为支持复杂脚本。

通常,此支持对应用程序是透明的。

但是,应用程序应将字符保存在缓冲区中,并一次显示整行文本,

以便复杂的脚本整形模块可以使用上下文正确重新排序和生成字形。

此外,由于字形的宽度可能因上下文而异,因此应用程序应使用 文本尺寸 来确定行长,而不是使用缓存字符宽度。

此外,复杂的脚本感知应用程序应考虑为其应用程序添加对从右到左阅读顺序和右对齐的支持。

可以使用以下代码在左和右之间切换阅读顺序或对齐方式:

对齐文本(设备,0);//左对齐

对齐文本(设备,2);//右对齐

对齐文本(设备,10);//2+8=右下对齐


文本对齐方式

英文名称作用解释
TA_TOP0参考点将位于边框的上边缘。
TA_BASELINE24参考点将位于文本的基行上。
TA_BOTTOM8参考点将位于边框的下边缘。
TA_CENTER6参考点将与边框中心水平对齐。
TA_LEFT0参考点将位于边框的左边缘。
TA_RIGHT2参考点将位于边框的右边缘。
TA_NOUPDATECP0每次文本输出调用后,当前位置不会更新。引用点将传递给文本输出函数。
TA_RTLREADING256中东语言版本:文本按从右到左的阅读顺序排列,而不是默认的从左到右的顺序。仅适用希伯来语或阿拉伯语时。
TA_UPDATECP1每次文本输出调用后,当前位置都会更新。 当前位置用作参考点。

中文名称英文名称示例作用
内存字体AddFontMemResourceEx内存字体(资源,大小,0,字体)将字体资源从内存图像添加到系统。
资源字体AddFontResourceEx资源字体(文件,特征,0)将指定文件中的字体资源添加到系统。特征:0x10当前进程有效,0x20所有进程有效
添加字体AddFontResourceA添加字体(文件名)添加字体到系统,可以是.FON .FNT .TTF .TTC .fot .otf .mmm .pfb .pfm
创建字体CreateFontA创建字体(15,0,0,0,0,0,0,0,0,0,0,0,0,"宋体")字体=创建字体(逻辑高度,字符宽度,擒纵角,取向角,粗细,斜体,下划线,删除线,字符集,输出精度,剪辑精度,输出质量,间距和字体,字体名称);
新建字体CreateFontIndirectA字体=新建字体(逻辑字体)逻辑字体类结构创建一个字体。
选建字体CreateFontIndirectExA字体=选建字体(枚举字体)从枚举字体结构中选择创建一个字体。
字体资源CreateScalableFontResourceA字体资源(权限,字体资源名,缩放字体名,缩放字体路径)为可缩放的字体(.TTF)创建一个字体资源文件(.FOT)。权限:0读写,1只读
枚举字库EnumFontFamiliesA枚举字库(设备,字体名,@回调,附加)枚举指定设备上可用的指定字体系列中的字体。回调
枚举字集EnumFontFamiliesExA枚举字集(设备,逻辑字体,@回调,附加,0)枚举系统中与逻辑字体类结构指定的字体特征匹配的所有唯一命名字体。回调
枚举字体EnumFontsA枚举字体(设备,字体名,@回调,附加)列举指定设备上可用的字体。回调
字体数据GetFontData字体数据(设备,指标表名,偏移量,@数据,大小)检索 TrueType 字体的字体指标数据。
设备字体GetFontLanguageInfo设备字体(设备)返回有关指定设备的当前选定字体的信息
宽字范围GetFontUnicodeRanges宽字范围(设备,宽字码类)返回有关字体支持哪些 宽字码类 字符的信息。
定义字符EnableEUDC定义字符(真)启用或禁用对最终用户定义字符的支持 (EUDC) 。
绘制字符ExtTextOutA绘制字符(设备,左,上,选项,矩形,文字,字数,间距)使用当前选定的字体绘制一个字符串。可选用于剪裁/不透明的矩形
取纵横比GetAspectRatioFilterEx取纵横比(设备,尺寸类)获取当前纵横比筛选器的设置。纵横比是由给定装置上的像素的宽度和高度形成的比率。为两个整数组成的尺寸类结构
真字宽度GetCharABCWidthsA真字宽度(设备,首字,尾字,字宽类)从当前 TrueType 字体检索指定范围内连续字符的宽度(以逻辑单位为单位)。
连字宽度GetCharABCWidthsFloatA连字宽度(设备,首字,尾字,连宽类)从当前字体检索指定范围内连续字符的宽度(以逻辑单位为单位)。
字形宽度GetCharABCWidthsI字形宽度(设备,首字,尾字,索引组,字宽类)从当前 TrueType 字体检索指定范围内连续字形索引的宽度。首尾字可以用索引数组代替
字符宽度GetCharWidth32A字符宽度(设备,首字,尾字,@宽度)获取当前字体在指定范围内的连续字符的宽度。
字间宽度GetCharWidthA字间宽度(设备,首字,尾字,@宽度)当前字体检索指定范围内连续字符的宽度(以逻辑坐标表示)。
字隔宽度GetCharWidthFloatA字隔宽度(设备,首字,尾字,@宽度)从当前字体检索指定范围内连续字符的小数宽度。
字序宽度GetCharWidthI字序宽度(设备,首字,尾字,索引组,@宽度)从当前字体检索指定范围内连续字形索引的宽度。首尾字可以用索引数组代替
字符信息GetCharacterPlacementA字符信息(设备,文字,字数,结果,标志)获取字符串的信息,例如字符宽度,插入符号定位,字符串中的排序和字形渲染。
文字取形GetGlyphIndices文字取形(设备,文字,字数,@数组,形式)将一个字符串转为字形数组。用来确定一种字体里是否存在某个字形。形式:1=用0xffff标记不受支持的字形
文字轮廓GetGlyphOutlineA文字轮廓(设备,字符,格式,字格类,大小,@数据,矩阵)检索选定到指定设备上下文中的 TrueType 字体字符的轮廓或位图。
间距调对GetKerningPairsA间距调对(设备,对数,@数组)获取指定设备上下文的当前选定字体的字符-字距调整对。写0用来获取缓冲区大小
文本指标GetOutlineTextMetricsA文本指标(设备,大小,@指标)获取当前设备使用字体的文本指标。指标写0用来获取缓冲区大小
真字状态GetRasterizerCaps真字状态(设备,@状态,大小)返回指示是否在系统中安装 TrueType 字体的状态标志
字集标识GetTextCharset字集标识(设备)检索当前选定到指定设备上下文中的字体的字符集标识符。
字集信息GetTextCharsetInfo字集信息(设备,@信息,0)检索有关当前选定到指定设备上下文中的字体的字符集的信息。信息写0可返回字符集标识
字空格组GetTextExtentExPointA字空格组(设备,文字,字长,最宽,@数量,@数组,尺寸类)检索指定字符串中适合指定空格的字符数,并使用其中每个字符的文本范围填充数组。对换行计算很有用。
字空点组GetTextExtentExPointI字空点组(设备,字组,字数,最宽,@数量,@数组,尺寸类)检索指定字符串中适合指定空格的字符数,并使用其中每个字符的文本范围填充数组。对换行计算很有用。
文本尺寸GetTextExtentPointA文本尺寸(设备,文字,长度,尺寸)计算指定文本字符串的宽度和高度(尺寸类)。
字符尺寸GetTextExtentPointI字符尺寸(设备,数组,数量,尺寸)计算指定字形索引数组的宽度和高度(尺寸类)。
文本对齐GetTextAlign方式=文本对齐(设备)获取指定设备的文本对齐方式
对齐文本SetTextAlign对齐文本(设备,方式)设置指定设备的文本对齐方式
字符间距GetTextCharacterExtra间距=文本对齐(设备)获取指定设备的文本字符间距。
间隔字符SetTextCharacterExtra间隔字符(设备,间距)设置指定设备的文本字符间距。
文字颜色GetTextColor颜色=文字颜色(设备)获取指定设备的文本颜色。
文本改色SetTextColor文本改色(设备,颜色)设置指定设备的文本颜色。
文字尺寸GetTextExtentPoint32A文字尺寸(设备,字符,长度,尺寸)计算指定文本字符串的宽度和高度(尺寸类)。
字体名称GetTextFaceA文字名称(设备,长度,@名称)获取指定设备选择的字体的字体名称。
文字指标GetTextMetricsA文字指标(设备,@指标)使用当前所选字体的指标填充指定的缓冲区。
绘制文字PolyTextOutA绘制文字(设备,字组,组数)使用指定的设备的字体和文本颜色绘制多个字符串
删除字体RemoveFontMemResourceEx删除字体(字体资源的句柄)从内存图像文件中删除添加的字体。
移除字体RemoveFontResourceA移除字体(字体资源名)从系统字体表中除去在指定文件里的字体。
清除字体RemoveFontResourceExA清除字体(字体资源名,特征,0)从系统字体表中除去在指定文件里的字体。特征:0x10当前进程有效,0x20所有进程有效
映射算法SetMapperFlags映射算法(设备,是否匹配)更改字体映射器在将逻辑字体映射到物理字体时使用的算法。
断句空间SetTextJustification断句空间(设备,大小,行数)指定系统应添加到文本字符串中的断句字符的空间量。 写字到 或 绘制字符 函数都需要空间
写字到TextOutA写字到(设备,左,上,文字,字数)使用当前选定的字体在指定的位置写入一个字符串。
转换字集TranslateCharsetInfo转换字集(源,信息,标志)转换字符集信息并将目标结构的所有成员设置为适当的值。标志:1源是字符集,2源是代码页,3源是代码页位域,0x1000源是语言标识

字形矩阵类
中文名字英文名称长度作用解释
字形矩阵类MAT212包含 文字轮廓 函数使用的转换矩阵的值。
字形矩阵类——成员表
行1列1eM11分数类3 乘 3 转换矩阵的 M11 分量固定点值。
行1列2eM12分数类3 乘 3 转换矩阵的 M12 分量固定点值。
行2列1eM21分数类3 乘 3 转换矩阵的 M21 分量固定点值。
行2列2eM22分数类3 乘 3 转换矩阵的 M22 分量固定点值。

分数类
中文名字英文名称长度作用解释
分数类FIXED4包含定点实数的整数部分和小数部分。
分数类——成员表
value整形数字的整数部分。
fract整形数字的小数部分。

字宽类
中文名字英文名称长度作用解释
字宽类ABC12包含 TrueType 字体中字符的宽度。
字宽类——成员表
abcA整数字符的 A 间距。 A 间距是在绘制字符标志符号之前要添加到当前位置的距离。
abcB整数字符的 B 间距。 B 间距是字符标志符号的绘制部分的宽度。
abcC整数字符的 C 间距。 C 间距是要添加到当前位置以便为字符标志符号的右侧提供空白的距离。

连宽类
中文名字英文名称长度作用解释
连宽类ABCFLOAT12包含字体字符的 A、B 和 C 宽度。
连宽类——成员表
abcA小数字符的 A 间距。 A 间距是在绘制字符标志符号之前要添加到当前位置的距离。
abcB小数字符的 B 间距。 B 间距是字符标志符号的绘制部分的宽度。
abcC小数字符的 C 间距。 C 间距是要添加到当前位置以便为字符标志符号的右侧提供空白的距离。

宽字码类
中文名字英文名称长度作用解释
宽字码类GLYPHSET20+包含有关一系列 宽字符 码位的信息。
宽字码类——成员表
大小cbThis整数此结构的大小(以字节为单位)。
位数flAccel整数描述字形索引最大大小的标志。1=将字形索引视为 8 位宽值。0=16位宽值
码数cGlyphsSupported整数字体中支持的 Unicode 码位总数。
组数cRanges整数范围 中的宽范围类的总数。
范围ranges[1]宽范围类字体中支持的宽范围类的数组。

宽范围类
中文名字英文名称长度作用解释
宽范围类WCRANGE4指定 Unicode 字符的范围。
宽范围类——成员表
低码wcLow整形支持的 Unicode 码位范围内的低 Unicode 码位。
位数cGlyphs整形此范围内支持的 Unicode 码位数。

字格类
中文名字英文名称长度作用解释
字格类GLYPHMETRICS20包含有关字符单元格中字形的位置和方向的信息。
字格类——成员表
框宽gmBlackBoxX整数完全包围字形的最小矩形的宽度 (其黑框) 。
框高gmBlackBoxY整数完全包围字形的最小矩形的高度 (其黑盒) 。
左边gmptGlyphOrigin.x整数完全包围字形的最小矩形左上角的 x 坐标。
顶边gmptGlyphOrigin.y整数完全包围字形的最小矩形左上角的 y 坐标。
横距gmCellIncX整形从当前字符单元格的原点到下一个字符单元格的原点的水平距离。
纵距gmCellIncY整形从当前字符单元格的原点到下一个字符单元格的原点的垂直距离。

字符集类
中文名字英文名称长度作用解释
字符集类CHARSETINFO32包包含有关字符集的信息。
字符集类——成员表
字集ciCharset整数字符集值。
码页ciACP整数Windows ANSI 代码页标识符。
签名fs字体签名类用于标识 Unicode 子范围和特定 Windows ANSI 字符集/代码页的 字体签名类 结构。

转换字集标志
英文名称数值作用解释
TCI_SRCCHARSET1源 包含低字中的字符集值,在高字中包含 0。
TCI_SRCCODEPAGE2源 是低字中的代码页标识符,在高字中为 0。
TCI_SRCFONTSIG3源是 字体签名类 结构的代码页位域部分。
TCI_SRCLOCALE0x1000源 是 LCID 或键盘布局的语言标识符 (区域设置标识符)。 如果它是语言标识符,则该值位于低字中。

字体信息值
英文名称数值作用解释
GCP_DBCS1字符集为 DBCS。
GCP_DIACRITIC0x0100字体/语言包含音调符号字形。
FLI_GLYPHS0x40000字体包含通常无法使用代码页访问的额外字形。
GCP_ERROR0x8000返回字体信息时发生错误。
GCP_GLYPHSHAPE0x10字体/语言包含每个码位或每个码位组合的多个字形 (支持定形和/或连接) ,字体包含高级字形表,为额外形状提供额外的字形。
GCP_KASHIDA0x0400字体/语言允许 Kashidas。
GCP_LIGATE0x20字体/语言包含可以替换特定字符组合的连字形。
GCP_USEKERNING8该字体包含字距调整表,可用于在字符和字形之间提供更好的间距。
GCP_REORDER2语言需要重新排序以显示,例如希伯来语或阿拉伯语。

字体轮廓格式
英文名称数值作用解释
GGO_BEZIER3函数将曲线数据检索为三次方贝塞尔样条, (不采用二次样条格式) 。
GGO_BITMAP1函数检索字形位图。 有关内存分配的信息,请参阅以下“备注”部分。
GGO_GLYPH_INDEX0x80指示 uChar 参数是 TrueType 字形索引,而不是字符代码。 有关 Glyph 索引的其他说明,请参阅 ExtTextOut 函数。
GGO_GRAY2_BITMAP4函数检索包含五个灰度级别的字形位图。
GGO_GRAY4_BITMAP5函数检索包含 17 级灰色的字形位图。
GGO_GRAY8_BITMAP6函数检索包含 65 级灰色的字形位图。
GGO_METRICS0函数仅检索 lpgm 指定的 GLYPHMETRICS 结构。 忽略 lpvBuffer。 此值在失败时影响函数返回值的含义;请参阅返回值部分。
GGO_NATIVE2函数检索光栅器本机格式的曲线数据点,并使用字体的设计单位。
GGO_UNHINTED0x100函数仅返回未受限制的大纲。 此标志仅适用于 GGO_BEZIER 和 GGO_NATIVE。

绘多字类
中文名字英文名称长度作用解释
绘多字类POLYTEXTA40描述如何绘制文本字符串。
绘多字类——成员表
水平x整数字符串的水平参考点。 字符串使用当前文本对齐模式与此点对齐。
垂直y整数字符串的垂直引用点。 字符串使用当前文本对齐模式与此点对齐。
长度n整数字符串的长度。
文字lpstr整数绘制的文本字符串的指针。
标志uiFlags整数指定字符串是不透明(2)还是剪裁成矩形(4),以及字符串是否附带字符宽度值数组。
rcl.left整数包含不透明矩形或剪裁矩形的尺寸的左边距。不剪裁成矩形可忽略
rcl.top整数包含不透明矩形或剪裁矩形的尺寸的上边距。不剪裁成矩形可忽略
rcl.right整数包含不透明矩形或剪裁矩形的尺寸的右边距。不剪裁成矩形可忽略
rcl.bottom整数包含不透明矩形或剪裁矩形的尺寸的下边距。不剪裁成矩形可忽略
宽组pdx整数指向包含字符串中每个字符的宽度值的数组的指针。

真字状态类
中文名字英文名称长度作用解释
真字状态类RASTERIZER_STATUS6    包含有关是否安装了 TrueType 的信息。
真字状态类——成员表
大小nSize整形结构的大小(以字节为单位)。
标志wFlags整形指定是否至少安装一种真字体(1)以及是否启用真字体(2)。 如果 TrueType 在系统上,此值为1、2或两者。
语言nLanguageID整形系统的 Setup.inf 文件中的语言。

字距对类
中文名字英文名称长度作用解释
字距对类KERNINGPAIR8定义字距对。
字距对类——成员表
首字wFirst整形字距调整对中第一个字符的字符代码。
次字wSecond整形字距调整对中第二个字符的字符代码。
差额iKernAmount整数如果它们以相同的字体和大小并排显示,则此对将被划线的量。
此值通常为负值,因为对字距调整通常会导致设置两个字符比正常更紧密。
该值以逻辑单元指定;也就是说,这取决于当前映射模式。

字体指标类
中文名字英文名称长度作用解释
字体指标类OUTLINETEXTMETRICA204  包含描述 TrueType 字体的指标。
字体指标类——成员表
大小otmSize整数此 结构的大小(以字节为单位)。204
高度otmTextMetrics.tmHeight整数字符的高度 (上升 + 下降) 。
上升otmTextMetrics.tmAscent整数上升 (基本线上方的单位) 字符。
下降otmTextMetrics.tmDescent整数下降 (底线下方的单位) 字符。
前导otmTextMetrics.tmInternalLeading整数高度成员设置的(边界内)前导空间量。此区域中可能会出现重音符号和其他音调字符。可将此成员设置为零。
额外otmTextMetrics.tmExternalLeading整数应用程序在行之间添加的额外前导 (空间量) 。此区域位于字体外部,不包含任何标记。可将此成员设置为零。
均宽otmTextMetrics.tmAveCharWidth整数字体中字符的平均宽度 (通常定义为字母 x ) 的宽度。 此值不包括粗体或斜体字符所需的悬垂。
最宽otmTextMetrics.tmMaxCharWidth整数该字体中最宽字符的宽度。
粗细otmTextMetrics.tmWeight整数该字体的粗细。
加宽otmTextMetrics.tmOverhang整数可能添加到一些合成字体中的每个字符串的附加宽度。
横比otmTextMetrics.tmDigitizedAspectX整数该字体的目标设备的水平比例。
纵比otmTextMetrics.tmDigitizedAspectY整数该字体的目标设备的垂直比例。
首字otmTextMetrics.tmFirstChar字节字体中定义的第一个字符的值。
尾字otmTextMetrics.tmLastChar字节在字体中定义的最后一个字符的值。
换字otmTextMetrics.tmDefaultChar字节要替换为非字体字符的字符的值。
分词otmTextMetrics.tmBreakChar字节将用于定义文本对齐的分词符的字符的值。
斜体otmTextMetrics.tmItalic字节如果斜体字体为非零,则指定斜体字体。
下划otmTextMetrics.tmUnderlined字节指定带下划线的字体(如果为非零)。
删除otmTextMetrics.tmStruckOut字节非零字号的删除线字体。
系列otmTextMetrics.tmPitchAndFamily字节指定有关音调、技术和物理字体系列的信息
字集otmTextMetrics.tmCharSet字节字体的字符集
凑齐otmFiller字节一个值,该值使 结构以字节对齐。
族类otmPanoseNumber.bFamilyType字节字体族类型。
衬样otmPanoseNumber.bSerifStyle字节衬线样式。
粗细otmPanoseNumber.bWeight字节粗细。
比例otmPanoseNumber.bProportion字节比例。
对比otmPanoseNumber.bContrast字节对比度。
渐变otmPanoseNumber.bStrokeVariation字节笔划变化。
臂样otmPanoseNumber.bArmStyle字节手臂样式。
字形otmPanoseNumber.bLetterform字节字形。
中线otmPanoseNumber.bMidline字节中线。
小高otmPanoseNumber.bXHeight字节小写字母x的高度。
性质otmfsSelection整数字体模式的性质。0斜体,1下划线,2负数,3轮廓,4删除线,5加粗。
改换otmfsType整数指示字体是否获得许可。不得修改或交换许可的字体。 如果设置了位 1,则字体可能不会嵌入到文档中。 如果第 1 位被清除,则可以嵌入字体。 如果设置了位 2,则嵌入为只读。
平斜otmsCharSlopeRise整数光标的斜率。 如果斜率是垂直的,则此值为 1。 应用程序可以使用此值和 otmsCharSlopeRun 成员的值来创建斜光标,该游标的斜率与 otmItalicAngle 成员) 指定的main斜角 (相同。
直斜otmsCharSlopeRun整数光标的。 如果斜率是垂直的,则此值为零。 应用程序可以使用此值和 otmsCharSlopeRise 成员的值来创建斜光标,该游标的斜率与 otmItalicAngle 成员) 指定的main斜角 (相同。
斜角otmItalicAngle整数字体main斜角,以垂直方向逆时针的十分之一度为单位。 常规 (罗马) 字体的值为零。 斜体字体通常具有负斜角 (即它们向右倾斜) 。
字号otmEMSquare整数定义此字体的 em 正方形的 x 或 y 维度的逻辑单元数。 (对于 em square.) ,x 方向和 y 方向的单位数始终相同
升值otmAscent整数此字体中的最大距离字符超出基线。 这是字体的版式升值。
降值otmDescent整数此字体中的最大距离字符延伸至底线下方。 这是字体的版式下降。
行距otmLineGap整数版式行距。
间高otmsCapEmHeight整数不支持。
平高otmsXHeight整数不支持。
框左otmrcFontBox.left整数字体的边界框。
框顶otmrcFontBox.top整数字体的边界框。
框宽otmrcFontBox.right整数字体的边界框。
框高otmrcFontBox.bottom整数字体的边界框。
果上otmMacAscent整数此字体中的最大距离字符扩展到 Macintosh 计算机的基线上方。
果下otmMacDescent整数此字体中的最大距离字符延伸到 Macintosh 计算机的基线下方。
果行otmMacLineGap整数Macintosh 计算机的行距信息。
最小otmusMinimumPPEM整数此字体的最小建议大小,以像素为单位(以每 em-square 为单位)。
下宽otmptSubscriptSize.x整数此字体中下标的建议水平宽度。
下高otmptSubscriptSize.y整数此字体中下标的建议垂直高度。
下左otmptSubscriptOffset.x整数此字体中下标的建议水平偏移量。 从字符原点到下标字符的原点测量下标偏移量。
下顶otmptSubscriptOffset.y整数此字体中下标的建议垂直偏移量。 从字符原点到下标字符的原点测量下标偏移量。
上宽otmptSuperscriptSize.x整数此字体中上标的建议水平宽度。
上高otmptSuperscriptSize.y整数此字体中上标的建议垂直高度。
上左otmptSuperscriptOffset.x整数此字体中上标的建议水平偏移量。 上标偏移量是从字符基线到上标字符的基线测量的。
上顶otmptSuperscriptOffset.y整数此字体中上标的建议垂直偏移量。 上标偏移量是从字符基线到上标字符的基线测量的。
线宽otmsStrikeoutSize整数此字体的删除线笔划的宽度。 通常,这是字体的 em 短划线的宽度。
线位otmsStrikeoutPosition整数删除线笔划相对于此字体的基线的位置。 正值位于底线上方,负值低于底线。
线粗otmsUnderscoreSize整数此字体的下划线字符的粗细。
下线otmsUnderscorePosition整数此字体的下划线字符的位置。
系名otmpFamilyName整数从 结构开头到指定字体系列名称的字符串的偏移量。
字名otmpFaceName整数从 结构开头到指定字体字样名称的字符串的偏移量。 (此字样名称对应于 LOGFONT 结构中指定的名称。)
样名otmpStyleName整数从 结构开头到指定字体样式名称的字符串的偏移量。
全名otmpFullName整数从 结构开头到指定字体全名的字符串的偏移量。 此名称对于字体是唯一的,通常包含版本号或其他标识信息。

字细分类
中文名字英文名称长度作用解释
字细分类PANOSE10描述了 TrueType 字体的 PANOSE 字体分类值。然后,这些特征用于将字体与外观相似但名称不同的其他字体相关联。
字细分类——成员表
族类bFamilyType字节字体族类型。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_FAMILY_TEXT_DISPLAY数值文本和显示
PAN_FAMILY_SCRIPT2脚本
PAN_FAMILY_DECORATIVE3装饰
PAN_FAMILY_PICTORIAL4画报
衬样bSerifStyle字节衬线样式。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_SERIF_COVE
PAN_SERIF_OBTUSE_COVE3钝角湾
PAN_SERIF_SQUARE_COVE4方形海湾
PAN_SERIF_OBTUSE_SQUARE_COVE5钝方湾
PAN_SERIF_SQUARE6广场
PAN_SERIF_THIN7
PAN_SERIF_BONE8
PAN_SERIF_EXAGGERATED9夸张
PAN_SERIF_TRIANGLE10三角形
PAN_SERIF_NORMAL_SANS11普通无衬线
PAN_SERIF_OBTUSE_SANS12钝的无衬线
PAN_SERIF_PERP_SANS13Perp sans serif
PAN_SERIF_FLARED14爆发
PAN_SERIF_ROUNDED15滚圆的
粗细bWeight字节粗细。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_WEIGHT_VERY_LIGHT2很轻
PAN_WEIGHT_LIGHT3
PAN_WEIGHT_THIN4
PAN_WEIGHT_BOOK5
PAN_WEIGHT_MEDIUM6中等
PAN_WEIGHT_DEMI7黛米粗体
PAN_WEIGHT_BOLD8粗体
PAN_WEIGHT_HEAVY9
PAN_WEIGHT_BLACK10
PAN_WEIGHT_NORD11
比例bProportion字节比例。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_PROP_OLD_STYLE2旧式
PAN_PROP_MODERN3摩登
PAN_PROP_EVEN_WIDTH4均匀宽度
PAN_PROP_EXPANDED5扩大
PAN_PROP_CONDENSED6浓缩
PAN_PROP_VERY_EXPANDED7非常扩展
PAN_PROP_VERY_CONDENSED8非常浓缩
PAN_PROP_MONOSPACED9等宽
对比bContrast字节对比度。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_CONTRAST_NONE2没有
PAN_CONTRAST_VERY_LOW3非常低
PAN_CONTRAST_LOW4
PAN_CONTRAST_MEDIUM_LOW5中低
PAN_CONTRAST_MEDIUM6中等
PAN_CONTRAST_MEDIUM_HIGH7中高
PAN_CONTRAST_HIGH8
PAN_CONTRAST_VERY_HIGH9非常高
渐变bStrokeVariation字节笔划变化。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_STROKE_GRADUAL_DIAG2渐进/对角线
PAN_STROKE_GRADUAL_TRAN3渐进/过渡
PAN_STROKE_GRADUAL_VERT4渐进/垂直
PAN_STROKE_GRADUAL_HORZ5渐进/水平
PAN_STROKE_RAPID_VERT6快速/垂直
PAN_STROKE_RAPID_HORZ快速/水平
PAN_STROKE_INSTANT_VERT8即时/垂直
臂样bArmStyle字节手臂样式。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_STRAIGHT_ARMS_HORZ2直臂/水平
PAN_STRAIGHT_ARMS_WEDGE3直臂/楔形
PAN_STRAIGHT_ARMS_VERT4直臂/垂直
PAN_STRAIGHT_ARMS_SINGLE_SERIF5直臂/单衬线
PAN_STRAIGHT_ARMS_DOUBLE_SERIF6直臂/双衬线
PAN_BENT_ARMS_HORZ7非直臂/水平
PAN_BENT_ARMS_WEDGE8非直臂/楔形
PAN_BENT_ARMS_VERT9非直臂/垂直臂
PAN_BENT_ARMS_SINGLE_SERIF10非直臂/单衬线
PAN_BENT_ARMS_DOUBLE_SERIF11非直臂/双衬线
字形bLetterform字节字形。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_LETT_NORMAL_CONTACT2正常/接触
PAN_LETT_NORMAL_WEIGHTED3正常/加权
PAN_LETT_NORMAL_BOXED4普通/盒装
PAN_LETT_NORMAL_FLATTENED5正常/扁平化
PAN_LETT_NORMAL_ROUNDED6正常/四舍五入
PAN_LETT_NORMAL_OFF_CENTER7正常/偏心
PAN_LETT_NORMAL_SQUARE8正常/方形
PAN_LETT_OBLIQUE_CONTACT9倾斜/接触
PAN_LETT_OBLIQUE_WEIGHTED10倾斜/加权
PAN_LETT_OBLIQUE_BOXED11斜/盒装
PAN_LETT_OBLIQUE_FLATTENED12倾斜/扁平
PAN_LETT_OBLIQUE_ROUNDED13斜/圆角
PAN_LETT_OBLIQUE_OFF_CENTER14倾斜/偏心
PAN_LETT_OBLIQUE_SQUARE15斜/方形
中线bMidline字节中线。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_MIDLINE_STANDARD_TRIMMED2标准/修整
PAN_MIDLINE_STANDARD_POINTED3标准/尖头
PAN_MIDLINE_STANDARD_SERIFED4标准/衬线
PAN_MIDLINE_HIGH_TRIMMED5高/修剪
PAN_MIDLINE_HIGH_POINTED6高/尖
PAN_MIDLINE_HIGH_SERIFED7高/衬线
PAN_MIDLINE_CONSTANT_TRIMMED8恒定/修整
PAN_MIDLINE_CONSTANT_POINTED9常量/尖头
PAN_MIDLINE_CONSTANT_SERIFED10常量/衬线
PAN_MIDLINE_LOW_TRIMMED11低/微调
PAN_MIDLINE_LOW_POINTED12低/尖
PAN_MIDLINE_LOW_SERIFED13低/衬线
平高bXHeight字节小写字母x的高度。对于拉丁字体,为以下值之一。
PAN_ANY0任何
PAN_NO_FIT1不合适
PAN_XHEIGHT_CONSTANT_SMALL2常量/小
PAN_XHEIGHT_CONSTANT_STD3常量/标准
PAN_XHEIGHT_CONSTANT_LARGE4常量/大
PAN_XHEIGHT_DUCKING_SMALL5闪避/小
PAN_XHEIGHT_DUCKING_STD6闪避/标准
PAN_XHEIGHT_DUCKING_LARGE7闪避/大

枚举字库回调
中文名字英文名称参数作用解释
枚举字库回调EnumFontFamProc4    用于处理字体。对于每个枚举字体,都会调用一次。
枚举字库回调——成员表
逻辑lpelfe整数指向枚举逻辑字体类结构的指针,该结构包含有关枚举逻辑字体扩展轴属性的信息。
物理lpntme整数指向包含有关字体物理属性的信息的结构的指针。物理字体类新字体扩展类枚举物理字体类
类别FontType整数字体的类型。1栅格字体,2驱动字体,4真字体
附加lParam整数应用程序传递的定义数据。
返回值必须为非零值才能继续枚举;若要停止枚举,它必须为零。

枚举字集回调
中文名字英文名称参数作用解释
枚举字集回调EnumFontFamExProc4    用于处理字体。对于每个枚举字体,都会调用一次。
枚举字集回调——成员表
逻辑lpelfe整数指向逻辑字体类结构的指针,该结构包含有关枚举逻辑字体扩展类枚举逻辑字体扩展轴属性的信息。
物理lpntme整数指向包含有关字体物理属性的信息的结构的指针。物理字体类新字体扩展类枚举物理字体类
类别FontType整数字体的类型。1栅格字体,2驱动字体,4真字体
附加lParam整数应用程序传递的定义数据。
返回值必须为非零值才能继续枚举;若要停止枚举,它必须为零。

枚举字体回调
中文名字英文名称参数作用解释
枚举字体回调EnumFontsProc4用于处理字体。对于每个枚举字体,都会调用一次。
枚举字体回调——成员表
逻辑lpelfe整数指向逻辑字体类结构的指针,该结构包含有关枚举逻辑字体扩展轴属性的信息。
物理lpntme整数指向包含有关字体物理属性的信息的结构的指针。物理字体类枚举物理字体类
类别FontType整数字体的类型。1栅格字体,2驱动字体,4真字体
附加lParam整数应用程序传递的定义数据。
返回值必须为非零值才能继续枚举;若要停止枚举,它必须为零。

逻辑字体类
中文名字英文名称长度作用解释
逻辑字体类LOGFONT60   包含了逻辑字体信息的结构
逻辑字体类——成员表
高度lfHeight整数以逻辑单位指定字体字符元或字符的高度。
宽度lfWidth整数以逻辑单位指定字体字符的平均宽度。
角度lfEscapement整数以十分之一度为单位指定每一行文本输出时相对于页面底端的角度。
方向lfOrientation整数以十分之一度为单位指定字符基线相对于页面底端的角度。
粗细lfWeight整数用来指代字体的粗细程度。范围为0到1000
斜体lfItalic字节是否斜体
下划线lfUnderline字节是否下划线
删除线lfStrikeOut字节是否带删除线
字符集lfCharSet字节指定字符集。OEM_CHARSET依赖操作系统DEFAULT_CHARSET基于系统
精度lfOutPrecision字节指定输出精度。OUT_CHARACTER_PRECIS、
OUT_DEFAULT_PRECIS、OUT_STRING_PRECIS、OUT_STROKE_PRECIS。
剪裁lfClipPrecision字节当字符超过区域时的剪辑方式,它可以为:
CLIP_CHARACTER_PRECIS、CLIP_DEFAULT_PRECIS、CLIP_STROKE_PRECIS。
质量lfQuality字节定义输出质量。DEFAULT_QUALITY (默认质量)
、DRAFT_QUALITY (草稿质量)、PROOF_QUALITY (正稿质量)。
间距lfPitchAndFamily字节指定字体的字符间距和族。DEFAULT_PITCH、FIXED_PITCH、VARIABLE_PITCH
FF_DECORATIVE、FF_DONTCARE、FF_MODERN、FF_ROMAN、FF_SCRIPT、FF_SWISS
名称lfFaceName文本32字节以内的字体名

枚举逻辑字体类
中文名字英文名称长度作用解释
枚举逻辑字体类ENUMLOGFONTA156定义字体的属性、字体的完整名称和字体样式。
枚举逻辑字体类——成员表
逻辑elfLogFont逻辑字体类定义字体属性的逻辑字体类结构。
名称elfFullName[64]文本字体的唯一名称。例如,ABCD 字体公司 TrueType Bold Italic Sans Serif。
样式elfStyle[32]文本字体的样式。例如,粗体斜体。

枚举逻辑字体扩展类
中文名字英文名称长度作用解释
枚举逻辑字体类ENUMLOGFONTEXA188定义字体的属性、字体的完整名称和字体样式。
枚举逻辑字体类——成员表
逻辑elfLogFont逻辑字体类定义字体属性的逻辑字体类结构。
名称elfFullName[64]文本字体的唯一名称。例如,ABCD 字体公司 TrueType Bold Italic Sans Serif。
样式elfStyle[32]文本字体的样式。例如,粗体斜体。
脚本elfScript[32]文本字体的脚本,即字符集。 例如,西里尔文。

枚举逻辑字体扩展轴类
中文名字英文名称长度作用解释
枚举逻辑字体扩展轴类ENUMLOGFONTEXDVA260包含用于创建字体的信息。
枚举逻辑字体扩展轴类——成员表
逻辑elfEnumLogfontEx枚举逻辑字体扩展类定义字体属性的枚举逻辑字体类结构。
字轴elfDesignVector字轴值类字轴值类结构。 这是零填充的,除非所述的字体是多主控 OpenType 字体。

物理字体类
中文名字英文名称长度作用解释
物理字体类TEXTMETRICA53   包含有关物理字体的基本信息。所有大小都以逻辑单元指定;也就是说它们依赖于显示上下文的当前映射模式。
物理字体类——成员表
高度tmHeight整数字符的高度 (上升 + 下降) 。
上升tmAscent整数上升 (基本线上方的单位) 字符。
下降tmDescent整数下降 (底线下方的单位) 字符。
前导tmInternalLeading整数高度成员设置的(边界内)前导空间量。此区域中可能会出现重音符号和其他音调字符。可将此成员设置为零。
额外tmExternalLeading整数应用程序在行之间添加的额外前导 (空间量) 。此区域位于字体外部,不包含任何标记。可将此成员设置为零。
均宽tmAveCharWidth整数字体中字符的平均宽度 (通常定义为字母 x ) 的宽度。 此值不包括粗体或斜体字符所需的悬垂。
最宽tmMaxCharWidth整数该字体中最宽字符的宽度。
粗细tmWeight整数该字体的粗细。
加宽tmOverhang整数可能添加到一些合成字体中的每个字符串的附加宽度。
横比tmDigitizedAspectX整数该字体的目标设备的水平比例。
纵比tmDigitizedAspectY整数该字体的目标设备的垂直比例。
首字tmFirstChar字节字体中定义的第一个字符的值。
尾字tmLastChar字节在字体中定义的最后一个字符的值。
换字tmDefaultChar字节要替换为非字体字符的字符的值。
分词tmBreakChar字节将用于定义文本对齐的分词符的字符的值。
斜体tmItalic字节如果斜体字体为非零,则指定斜体字体。
下划tmUnderlined字节指定带下划线的字体(如果为非零)。
删除tmStruckOut字节非零字号的删除线字体。
系列tmPitchAndFamily字节指定有关音调、技术和物理字体系列的信息
字集tmCharSet字节字体的字符集

字体技术系列
英文名称数值作用解释
TMPF_FIXED_PITCH1    如果设置了此位,则字体是可变间距字体。 如果此位是明确的,则字体是固定的间距字体。 请仔细注意,这些含义与常量名称的含义相反。
TMPF_VECTOR2如果设置了此位,则字体是矢量字体。
TMPF_TRUETYPE4如果设置了此位,则字体为 TrueType 字体。
TMPF_DEVICE8如果设置了此位,则字体是设备字体。

字符集
英文名称数值作用解释
ANSI_CHARSET0    指定英文字符 设置。
DEFAULT_CHARSET1指定字符集 基于当前系统区域设置;例如,当系统区域设置为 美国英语,默认字符集为 ANSI_CHARSET。
SYMBOL_CHARSET2指定 符号。
MAC_CHARSET77指定 Apple Macintosh 字符集。
SHIFTJIS_CHARSET128指定日语 字符集。
HANGUL_CHARSET129也拼写 “韩文”。指定朝鲜语韩文字符集。
JOHAB_CHARSET130也拼写为“Johap”。 指定 Johab 朝鲜语字符集。
GB2312_CHARSET134指定“简化” 中华人民共和国的汉字集。
CHINESEBIG5_CHARSET136指定 “繁体”汉字集,主要在台湾和 香港和澳门特别行政区。
GREEK_CHARSET161指定希腊字符 设置。
TURKISH_CHARSET162指定土耳其语 字符集。
VIETNAMESE_CHARSET163指定越南语 字符集。
HEBREW_CHARSET177指定希伯来语字符 设置
ARABIC_CHARSET178指定阿拉伯字符 设置
BALTIC_CHARSET186指定波罗的海 (东北欧)字符集
RUSSIAN_CHARSET204指定俄语 西里尔字符集。
THAI_CHARSET222指定泰语字符 设置。
EASTEUROPE_CHARSET238指定东部 欧洲字符集。
OEM_CHARSET255指定到以下 OEM 代码页,根据当前系统区域设置。

OEM字符集
英文名称数值作用解释
FS_LATIN10x00000001拉丁语1
FS_LATIN20x00000002拉丁语2
FS_CYRILLIC0x00000004西里尔文
FS_GREEK0x00000008希腊
FS_TURKISH0x00000010土耳其
FS_HEBREW0x00000020希伯来语
FS_ARABIC0x00000040阿拉伯
FS_BALTIC0x00000080波罗的海
FS_VIETNAMESE0x00000100越南
FS_THAI0x00010000泰国
FS_JISJAPAN0x00020000名称
FS_CHINESESIMP0x00040000中文简体
FS_WANSUNG0x00080000韩国
FS_CHINESETRAD0x00100000中文繁体
FS_JOHAB0x00200000朝鲜
FS_SYMBOL0x80000000符号。

代码页位域
代码页说明
01252拉丁语 1
11250拉丁语 2:中欧
21251西里尔语
31253希腊语
41254土耳其语
51255希伯来语
61256阿拉伯语
71257波罗的语
81258越南语
9 - 15为 ANSI 保留
16874泰语
17932日语 (Shift_JIS)
18936简体中文 (中国、新加坡)
19949朝鲜文统一朝鲜文代码 (朝鲜文通汉字代码)
20950繁体中文 (台湾:中国香港特别行政区)
211361韩语(Johab)
22 - 29保留给备用 ANSI 和 OEM
30 - 31按系统保留。
32 - 46保留给 OEM
471258越南语
48869现代希腊语
49866俄语
50865北欧
51864阿拉伯语
52863加拿大法语
53862
54861冰岛语
55860葡萄牙语
56857土耳其语
57855西里尔;主要是俄语
58852拉丁语 2
59775波罗的语
60737希腊语;以前为 437G
61708;720阿拉伯语;ASMO 708
62850多语言拉丁语 1
63437US

枚举物理字体类
中文名字英文名称长度作用解释
枚举物理字体类ENUMTEXTMETRICA421包含有关物理字体的基本信息。
枚举物理字体类——成员表
扩展etmNewTextMetricEx新字体扩展类新字体扩展类 结构,包含有关物理字体的信息。
字轴etmAxesList字轴组类字轴组类结构,包含有关字体轴的信息。 这仅适用于多个母版字体。

新字体扩展类
中文名字英文名称长度作用解释
新字体扩展类NEWTEXTMETRICEXA93包含有关物理字体的信息。
新字体扩展类——成员表
最小ntmTm新物理字体类新物理字体类 结构。
最大ntmFontSig字体签名类用于指示字体覆盖率的 字体签名类 结构。

新物理字体类
中文名字英文名称长度作用解释
新物理字体类NEWTEXTMETRICA69   包含有关物理字体的基本信息。所有大小都以逻辑单元指定;也就是说它们依赖于显示上下文的当前映射模式。
新物理字体类——成员表
高度tmHeight整数字符的高度 (上升 + 下降) 。
上升tmAscent整数上升 (基本线上方的单位) 字符。
下降tmDescent整数下降 (底线下方的单位) 字符。
前导tmInternalLeading整数高度成员设置的(边界内)前导空间量。此区域中可能会出现重音符号和其他音调字符。可将此成员设置为零。
额外tmExternalLeading整数应用程序在行之间添加的额外前导 (空间量) 。此区域位于字体外部,不包含任何标记。可将此成员设置为零。
均宽tmAveCharWidth整数字体中字符的平均宽度 (通常定义为字母 x ) 的宽度。 此值不包括粗体或斜体字符所需的悬垂。
最宽tmMaxCharWidth整数该字体中最宽字符的宽度。
粗细tmWeight整数该字体的粗细。
加宽tmOverhang整数可能添加到一些合成字体中的每个字符串的附加宽度。
横比tmDigitizedAspectX整数该字体的目标设备的水平比例。
纵比tmDigitizedAspectY整数该字体的目标设备的垂直比例。
首字tmFirstChar字节字体中定义的第一个字符的值。
尾字tmLastChar字节在字体中定义的最后一个字符的值。
换字tmDefaultChar字节要替换为非字体字符的字符的值。
分词tmBreakChar字节将用于定义文本对齐的分词符的字符的值。
斜体tmItalic字节如果斜体字体为非零,则指定斜体字体。
下划tmUnderlined字节指定带下划线的字体(如果为非零)。
删除tmStruckOut字节非零字号的删除线字体。
系列tmPitchAndFamily字节指定有关音调、技术和物理字体系列的信息
字集tmCharSet字节字体的字符集
标志ntmFlags整数指定字体是否为斜体、下划线、轮廓、加粗等。可以是字体标志的任意合理组合。
字号ntmSizeEM整数字体的 em 正方形的大小。此值以名义单位表示, (即字体设计) 单位。
字高tmDescent整数字体的高度(以名义单位表示)。
字宽ntmAvgWidth整数字体中字符的平均宽度(以名义单位表示)。

字体标志
名称含义
0NTM_ITALIC斜体
5NTM_BOLD粗体
8NTM_REGULAR普通
16NTM_NONNEGATIVE_AC任何字形中任何大小的字体都没有负 A 或 C 空间。
17NTM_PS_OPENTYPEPostScript OpenType 字体
18NTM_TT_OPENTYPETrueType OpenType 字体
19NTM_MULTIPLEMASTER多母版字体
20NTM_TYPE1键入 1 字体
21NTM_DSIG具有数字签名的字体。 这允许可追溯性,并确保字体已经过测试且未损坏

字体签名类
中文名字英文名称长度作用解释
字体签名类FONTSIGNATURE24   包含标识给定字体为其提供字形的代码页和 Unicode 子范围的信息。
字体签名类——成员表
子集位域fsUsb[4]整数一个 128 位 Unicode 子集位域 (USB) 标识最多 126 个 Unicode 子范围。
码页位域fsCsb[2]整数标识特定字符集或代码页的 64 位代码页位域 (CPB) 。代码页位于此位域的下 32 位中。 高 32 用于非 Windows 代码页。代码页位域

字轴组类
中文名字英文名称长度作用解释
字轴组类AXESLISTA328包含有关多个主控字体的所有轴的信息。
字轴组类——成员表
预留axlReserved整数保留。 必须0x8006C61。
上升axlNumAxes整数指定多主控字体的轴数。
上升axlAxisInfo[16]字体轴类字体轴类 结构的数组。 每个结构都包含指定多个主控字体轴上的信息。这对应于 字轴值类 结构中的 值组 数组。

字体轴类
中文名字英文名称长度作用解释
字体轴类AXISINFOA20包含有关多主控字体轴的信息。
字体轴类——成员表
最小axMinValue整数此轴的最小值。
最大axMaxValue整数此轴的最大值。
名称axAxisName[16]文本轴的名称,指定为字符数组。

字轴值类
中文名字英文名称长度作用解释
字轴值类DESIGNVECTOR72为多个主控字体的轴指定值。
字轴值类——成员表
最小axMinValue整数此轴的最小值。
最大axMaxValue整数此轴的最大值。
值组dvValues[16]整数轴的名称,指定为字符数组。