PRINTIFI32结构(prntfont.h)

PRINTIFI32结构是 IFIMETRICS 结构的固定大小版本,并定义 GDI 可以使用的给定字样的信息。

语法

typedef struct _PRINTIFI32 {
  ULONG   cjThis;
  ULONG   cjIfiExtra;
  PTRDIFF dpwszFamilyName;
  PTRDIFF dpwszStyleName;
  PTRDIFF dpwszFaceName;
  PTRDIFF dpwszUniqueName;
  PTRDIFF dpFontSim;
  LONG    lEmbedId;
  LONG    lItalicAngle;
  LONG    lCharBias;
  PTRDIFF dpCharSets;
  BYTE    jWinCharSet;
  BYTE    jWinPitchAndFamily;
  USHORT  usWinWeight;
  ULONG   flInfo;
  USHORT  fsSelection;
  USHORT  fsType;
  FWORD   fwdUnitsPerEm;
  FWORD   fwdLowestPPEm;
  FWORD   fwdWinAscender;
  FWORD   fwdWinDescender;
  FWORD   fwdMacAscender;
  FWORD   fwdMacDescender;
  FWORD   fwdMacLineGap;
  FWORD   fwdTypoAscender;
  FWORD   fwdTypoDescender;
  FWORD   fwdTypoLineGap;
  FWORD   fwdAveCharWidth;
  FWORD   fwdMaxCharInc;
  FWORD   fwdCapHeight;
  FWORD   fwdXHeight;
  FWORD   fwdSubscriptXSize;
  FWORD   fwdSubscriptYSize;
  FWORD   fwdSubscriptXOffset;
  FWORD   fwdSubscriptYOffset;
  FWORD   fwdSuperscriptXSize;
  FWORD   fwdSuperscriptYSize;
  FWORD   fwdSuperscriptXOffset;
  FWORD   fwdSuperscriptYOffset;
  FWORD   fwdUnderscoreSize;
  FWORD   fwdUnderscorePosition;
  FWORD   fwdStrikeoutSize;
  FWORD   fwdStrikeoutPosition;
  BYTE    chFirstChar;
  BYTE    chLastChar;
  BYTE    chDefaultChar;
  BYTE    chBreakChar;
  WCHAR   wcFirstChar;
  WCHAR   wcLastChar;
  WCHAR   wcDefaultChar;
  WCHAR   wcBreakChar;
  POINTL  ptlBaseline;
  POINTL  ptlAspect;
  POINTL  ptlCaret;
  RECTL   rclFontBox;
  BYTE    achVendId[4];
  ULONG   cKerningPairs;
  ULONG   ulPanoseCulture;
  PANOSE  panose;
} PRINTIFI32, *PPRINTIFI32;

成员

cjThis

指定此结构的大小(以字节为单位)。 指定的大小包括追加到此结构的末尾的任何 Unicode 字符串,以及可选 IFIEXTRA 结构的大小(以字节为单位)。

cjIfiExtra

指定遵循此结构的 IFIEXTRA 结构的大小(以字节为单位)。 值为零表示不存在 IFIEXTRA 结构。

dpwszFamilyName

指定以 null 结尾的 Unicode 字符串的偏移量(以字节为单位)包含字体的系列名称(例如,“Times Roman”)。 通常,此字符串紧跟此结构。 此字符串应与 Win32 LOGFONT 结构的 lfFaceName 成员中记录的名称相同。

dpwszStyleName

指定以 null 结尾的 Unicode 字符串的偏移量(以字节为单位)描述字体样式(例如“Bold”)。

dpwszFaceName

指定以 null 结尾的 Unicode 字符串的偏移量(以字节为单位)表示字体的唯一和完整名称。 该名称包含字体的家庭和子家庭名称(例如,“时代新罗马粗体”)。

dpwszUniqueName

指定以字节为单位的以 null 结尾的 Unicode 字符串的偏移量,该字符串表示字体的唯一标识符(例如,“Monotype:Times New Roman:1990”)。

dpFontSim

指定从此结构的开头到 FONTSIM 结构的偏移量(以字节为单位)。该结构描述字体支持的模拟。 仅当字体支持加粗、斜体或粗体斜体模拟时,驱动程序才应将此成员设置为非零值;否则,驱动程序应将此设置为零。

请注意,如果字体设计为斜体,驱动程序不应指示斜体模拟的字体支持,尽管它可以指示粗体斜体模拟的字体支持。 同样,如果字体设计为粗体,驱动程序不应指示粗体模拟的字体支持,但可以指示对粗体斜体模拟的字体支持。 如果字体是粗体和斜体,则它不应支持任何模拟。

FONTSIM 结构中的偏移量相对于 FONTSIM 结构的基数。

lEmbedId

指定字体的嵌入 ID。 此值特定于 TrueType,应由所有其他字体提供程序设置为零。

lItalicAngle

指定字体的斜体角度。 此值特定于 TrueType,应由所有其他字体提供程序设置为零。

lCharBias

指定字符偏差。 此值特定于 TrueType,应由所有其他字体提供程序设置为零。

dpCharSets

指定从此结构的开头到包含此字体支持的所有 Windows 字符集列表的数组的偏移量。 数组的大小为 16 字节,并且始终以 DEFAULT_CHARSET 结尾。 数组的第一个值应标识字体中具有最佳且最完整的覆盖率的 Windows 字符集;此值还应存储在 jWinCharSet中。 例如,如果这是还支持 US ANSI 和西里尔字符集的日语字体,则应 将 jWinCharSet 设置为SHIFTJIS_CHARSET,dpCharSet s 标识的数组将包含SHIFTJIS_CHARSET、ANSI_CHARSET、RUSSIAN_CHARSET、DEFAULT_CHARSET。

如果此字体不支持多个 Windows 字符集,dpCharSets 应设置为零。

jWinCharSet

标识此字体最受支持的字符集。 如果字体仅支持单个 Windows 字符集,驱动程序应将相应的值存储在 jWinCharSet中。 驱动程序不应在此字段中存储DEFAULT_CHARSET。 此成员可以是以下值之一:

价值 描述
ANSI_CHARSET 此字体支持 Windows ANSI 字符集。
ARABIC_CHARSET 此字体支持阿拉伯语字符集。
BALTIC_CHARSET 此字体支持波罗的海字符集。
CHINESEBIG5_CHARSET 此字体支持繁体中文(大 5)字符集。
EASTEUROPE_CHARSET 此字体支持东欧字符集。
GB2312_CHARSET 此字体支持简化的(中国)中文字符集。
GREEK_CHARSET 此字体支持希腊字符集。
HANGEUL_CHARSET 此字体支持朝鲜语(朝鲜文)字符集。
HEBREW_CHARSET 此字体支持希伯来语字符集。
JOHAB_CHARSET 此字体支持朝鲜语(Johab)字符集。
OEM_CHARSET 此字体支持特定于 OEM 的字符集。 OEM 字符集依赖于系统。
SHIFTJIS_CHARSET 此字体支持 Shift-JIS(日语行业标准)字符集。
SYMBOL_CHARSET 此字体支持 Windows 符号字符集。
RUSSIAN_CHARSET 此字体支持西里尔文字符集。
THAI_CHARSET 此字体支持泰文字符集。
TURKISH_CHARSET 此字体支持土耳其字符集。
VIETNAMESE_CHARSET 此字体支持越南字符集。

jWinPitchAndFamily

指定字体的间距。 两个低序位指定字体的间距,可以是以下值之一:

价值 描述
FIXED_PITCH 对于固定音调字体
VARIABLE_PITCH 对于可变音调字体

此成员的位 4 到 7 指定字体系列,可以是以下值之一:

价值 描述
FF_DECORATIVE 新奇的字体,如旧英语。
FF_DONTCARE 不要关心或未知。
FF_MODERN 具有固定笔划宽度(固定间距)的字体,带或不带衬线。 固定音调字体通常为现代字体,如 Pica、Elite 和 Courier。
FF_ROMAN 字体具有可变笔划宽度(按比例间距)和 serifs,如 Times Roman、Palatino 和 Century Schoolbook。
FF_SCRIPT 设计为类似于手写的字体,如脚本和 Cursive。
FF_SWISS 具有可变笔划宽度(按比例间距)且不带衬线的字体,如 Helvetica 和 Swiss。

usWinWeight

指定范围 0 到 1000 中的字体粗细(例如,400 为正常,700 为粗体)。 此值在 Win32 LOGFONT 结构的 lfWeight 成员中提供给应用程序。

flInfo

指定有关字体的其他信息。 此字段可以是以下标志值的组合:

价值

意义

FM_INFO_1BPP

指示字形位图的颜色深度为每像素一位。 对于 Windows NT 3.1,第一个版本的 Windows NT 必须设置此标志。

FM_INFO_4BPP

指示字形位图的颜色深度为每像素四位。 如果字体支持具有 16 个灰色级别的抗锯齿字形位图,驱动程序应设置此设置。

FM_INFO_8BPP

指示字形位图的颜色深度为每像素 8 位。 当前版本的 GDI 将忽略此设置,因为它不支持颜色字体。

FM_INFO_16BPP

指示字形位图的颜色深度为每像素 16 位。 当前版本的 GDI 将忽略此设置,因为它不支持颜色字体。

FM_INFO_24BPP

指示字形位图的颜色深度为每像素 24 位。 当前版本的 GDI 将忽略此设置,因为它不支持颜色字体。

FM_INFO_32BPP

指示字形位图的颜色深度为每像素 32 位。 当前版本的 GDI 将忽略此设置,因为它不支持颜色字体。

FM_INFO_90DEGREE_ROTATIONS

指示可以在原始名义形状的 90 度旋转中实现字体。 GDI 通过在创建字体时传递给驱动程序的设备转换中包含旋转来请求字体的旋转。 仅当尚未设置FM_INFO_ARB_XFORMS标志时,此成员才有意义。

FM_INFO_ANISOTROPIC_SCALING_ONLY

指示字体仅支持任意异性缩放。 也就是说,转换相当于对角矩阵乘以正实数。 如果设置了此标志,则无法设置FM_INFO_ARB_XFORMS和FM_INFO_ISOTROPIC_SCALING_ONLY标志。 如果还设置了FM_INFO_90DEGREE_ROTATIONS标志,则字体支持简单异性缩放组合的转换,后跟旋转 90 度。

FM_INFO_ARB_XFORMS

指示可以在二维线性转换的连续范围下实现字体。

FM_INFO_CONSTANT_WIDTH

指示所有实现下字体的所有字形具有相同的字符增量值。 如果设置了此标志,则还必须设置FM_INFO_OPTICALLY_FIXED_PITCH标志。

FM_INFO_DBCS_FIXED_PITCH

指示此字体的双字节字符是固定的间距。 对于单个字节字符,没有任何暗示。 此标志仅适用于支持双字节字符集(DBCS)的字体,例如 shift JIS。 不支持 DBCS 的字体不应设置此标志。

FM_INFO_DO_NOT_ENUMERATE

指示 Win32 EnumFontFamiliesExEnumFontFamiliesEnumFonts 例程不会枚举此字体。 此外,返回到对 GetTextFace 的 Win32 应用程序调用的字符串将从字符串 dpwszUniqueName中检索。 此标志允许字体提供程序将多个PRINTIFI32结构与其字体之一相关联。

FM_INFO_DSIG

指示字体符合 Unicode 标准。

FM_INFO_FAMILY_EQUIV

指示 PRINTIFI32 中的 dpwszFamilyName 偏移实际上是等效系列名称或别名列表的偏移量。 名字是基名称或实名;后续名称是等效名称或别名。 列表中的每个名称都以 null 结尾;列表以两个零终止。

<base name> <alias 0> <alias 1> ... <alias n>

基于的名称仅用于映射;它们未枚举。

FM_INFO_IGNORE_TC_RA_ABLE

指示对于此字体,将忽略TC_RA_ABLE标志。

FM_INFO_INTEGER_WIDTH

指示所有字形都具有非频繁的前进宽度。 位图字体通常设置此标志。

FM_INFO_INTEGRAL_SCALING

指示字体可以按 x 和 y 方向的整数量缩放。 如果设置了此标志,则驱动程序必须能够在按 x 和 y 方向的整数量缩放设备标志符号的情况下呈现标志符号。 GDI 请求字体的整型缩放,方法是在创建字体时将常规缩放内容包含在设备转换中传递给驱动程序的设备缩放。 仅当尚未设置FM_INFO_ARB_XFORMS标志时,此标志才有意义。

FM_INFO_ISOTROPIC_SCALING_ONLY

指示字体仅支持任意变性缩放。 也就是说,转换等效于标识矩阵乘以正实数。 如果设置了此标志,则既不能设置FM_INFO_ARB_XFORMS,也不能设置FM_INFO_ANISOTROPIC_SCALING_ONLY标志。 如果设置了FM_INFO_90DEGREE_ROTATIONS标志,则字体支持等效于异性缩放的转换,后跟 90 度旋转的转换。

FM_INFO_OPTICALLY_FIXED_PITCH

指示此字体按版式视为固定音调。 这是字体的光学质量,不一定指示字体的所有字形都具有相同的字符增量。

FM_INFO_NONNEGATIVE_AC

指示此字体的所有字形 c 间距。 也就是说,字形黑匣子从不延伸到字符原点和字符串联点边框的区域之外。

FM_INFO_NOT_CONTIGUOUS

指示支持的字符集不是连续的。

FM_INFO_RETURNS_BITMAPS

指示字体包含有效的数字签名。

FM_INFO_RETURNS_OUTLINES

指示对于驱动程序支持的任何字形,GDI 可以请求描述该字形轮廓的 PATHOBJ 结构。 如果可能,使用 GDI 的路径填充约定填充轮廓时,生成的位图应与驱动程序返回的位图相同。 无法同时设置FM_INFO_RETURNS_OUTLINES和FM_INFO_RETURNS_STOKES标志。

FM_INFO_RETURNS_STROKES

指示对于驱动程序支持的任何字形,GDI 可以请求描述字形的样条的 PATHOBJ 结构。 无法填充此路径,但可以进行笔划,以便提供字形的表示形式。 无法同时设置FM_INFO_RETURNS_OUTLINES和FM_INFO_RETURNS_STOKES标志。

FM_INFO_RIGHT_HANDED

指示字体的上升方向从基线方向逆时针 90 度。 上升方向是测量高度的方向,始终与基线方向垂直。

FM_INFO_TECH_BITMAP

指示字体是位图字体。

FM_INFO_TECH_CFF

指示字体是一个 Pscript OpenType 字体,其中包含压缩字体格式 (CFF) 表。

FM_INFO_TECH_MM

指示这是多主控形状(MM)字体。

FM_INFO_TECH_OUTLINE_NOT_TRUETYPE

指示字体基于使用大纲路径的可缩放字体技术,但不基于 TrueType。 此标志不指定是否应填充或笔划此字体返回的路径;使用者应检查此信息的FM_INFO_RETURNS_STROKES和FM_INFO_RETURNS_OUTLINES标志。

FM_INFO_TECH_STROKE

指示字体基于笔划字体技术。 此标志不指定是否应填充或笔划此字体返回的路径;使用者应检查此信息的FM_INFO_RETURNS_STROKES和FM_INFO_RETURNS_OUTLINES标志。

FM_INFO_TECH_TRUETYPE

指示字体为 TrueType 字体。

FM_INFO_TECH_TYPE1

指示此字体是 PostScript 屏幕字体(Type1 或 OpenType PostScript)。

fsSelection

指定以下标志的组合:

价值 描述
FM_SEL_BOLD 如果字体的字符为粗体,则设置。
FM_SEL_ITALIC 设置字体的字符是否为斜体。
FM_SEL_NEGATIVE 如果字体的字符具有前景色和背景,则设置。
FM_SEL_OUTLINED 如果字体的字符为空心,则设置。
FM_SEL_REGULAR 设置字体的字符是否为普通粗细。
FM_SEL_STRIKEOUT 设置字体的字符在默认情况下被击出时:否则必须模拟罢工。
FM_SEL_UNDERSCORE 设置字体的所有字符默认为下划线;否则必须模拟不足。

fsType

这是一个特定于 TrueType 的位域,用于指示字体的某些属性,例如字体嵌入和字体许可权限。 可嵌入字体可以存储在文档中。 在未安装字体的系统(远程系统)上打开带有嵌入字体的文档时,可以通过嵌入感知应用程序加载嵌入字体,以便临时(在某些情况下永久)在该系统上使用。 嵌入许可权限由字体供应商授予。 可以设置以下标志:

价值 描述
FM_EDITABLE_EMBED 设置字体是否可以嵌入并临时加载在其他系统上。 可以打开包含可编辑字体的文档进行阅读和写入。
FM_READONLY_EMBED 如果不允许读/写嵌入,则设置;仅允许“预览和打印”封装。 设置此位后,可以嵌入字体并在远程系统上临时加载。 包含“预览和打印”字体的文档必须打开“只读;”不能对文档应用任何编辑。
FM_TYPE_LICENSED、FM_NO_EMBEDDING 设置字体是否为受限许可证字体。 仅设置此位时,不得以任何方式修改、嵌入或交换此字体 ,而无需首先获得法定所有者的许可。 要使受限许可证嵌入生效,它必须是选择的唯一嵌入级别。

具有FM_READONLY_EMBED位集的字体指示它们可以嵌入到文档中,但必须仅在远程系统上临时 安装它们。 任何包含FM_READONLY_EMBED字体的文档都必须打开“只读”。也就是说,应用程序可以让用户查看和/或打印文档,但不能对其进行编辑。

具有FM_EDITABLE_EMBED位集的字体指示它们可以嵌入到文档中,但必须仅 临时安装在远程系统上。 与FM_READONLY_EMBED字体不同,允许打开包含可编辑字体的文档“可读/写;”编辑,并且可以保存更改。

未设置 fsType 的字体 位表示应用程序可以嵌入并永久安装在远程系统上。 远程系统的用户获取该字体作为字体的原始购买者相同的权利、义务和许可证,并且受与原始购买者相同的最终用户许可协议、版权、设计专利和/或商标的约束。

通过使用字体嵌入 DLL 或其他方式实现对字体嵌入的支持的应用程序不得嵌入不允许嵌入的字体。 此外,加载嵌入字体以供临时使用的应用程序 必须在关闭包含嵌入字体的文档时 删除字体。

如果设置了多个嵌入位,则授予 最少 限制性许可证优先。 例如,如果设置了位 1 和 3,则位 3 优先于位 1,字体可以嵌入“可编辑”权限。 出于兼容性目的,大多数授予可编辑嵌入权限的供应商也会设置预览版 & 打印位(0x000C)。 这允许仅支持预览版 & 打印嵌入的应用程序来检测允许字体嵌入。

fwdUnitsPerEm

指定字体的 em 高度。

fwdLowestPPEm

指定字体的最小可读大小(以像素为单位)。 位图字体将忽略此值。

fwdWinAscender

指定字体的 Windows 升序值。

fwdWinDescender

指定字体的 Windows 降序值。

fwdMacAscender

指定字体的 Macintosh 升序值。

fwdMacDescender

指定字体的 Macintosh 后代值。 此数字通常小于零。 它测量 Macintosh 字符集中最低降序的底线的带符号偏移量。

fwdMacLineGap

指定字体的 Macintosh 线条间距。 建议的 Macintosh 隔行间距等于 fwdMacLineGap + fwdMacAscender âˆ' fwdMacDescender

fwdTypoAscender

指定字体的版式升序值。

fwdTypoDescender

指定字体的版式后代值。 此值指定基线中最低降序的有符号偏移量。

fwdTypoLineGap

指定字体的版式线条间距。

fwdAveCharWidth

指定 26 个小写字母“a”到拉丁字母的“z”和空格字符的所有宽度的算术平均值。 如果不存在 26 个小写字母中的任何一个,则应将此成员设置为字体中所有字形的加权平均值。

fwdMaxCharInc

指定字体中所有字形的最大字符增量。

fwdCapHeight

指定在字体单位(FUnits)中描述大写“H”顶部的光学线的高度。 这可能与大写“H”的测量高度不同。 如果此信息不存在,fwdCapHeight 应设置为零,这表示它未定义。

fwdXHeight

指定以字体单位描述小写“x”高度的光学线的高度。 这可能与小写“x”的测量高度不同。 值为零表示此成员未定义。

fwdSubscriptXSize

指定下标字体的建议字符宽度(沿基线方向的大小)。

fwdSubscriptYSize

指定下标字体的推荐字符高度(沿升序方向的大小)。

fwdSubscriptXOffset

指定下标字符的基线方向的建议偏移量。 偏移量与基字符的字符原点有关。

fwdSubscriptYOffset

指定下标字符的基线方向的建议偏移量。 偏移量取自基字符的字符原点。

fwdSuperscriptXSize

指定上标字体的建议字符宽度(沿基线方向的大小)。

fwdSuperscriptYSize

指定上标字体上标字体的推荐字符高度(沿升序方向的大小)。

fwdSuperscriptXOffset

指定上标字符的基线方向的建议偏移量。 偏移量取自基字符的字符原点。

fwdSuperscriptYOffset

指定上标字符的基线方向的建议偏移量。 偏移量取自基字符的字符原点。

fwdUnderscoreSize

以字体单位指定下划线条的建议宽度。

fwdUnderscorePosition

指定从下划线条的底线到下划线中间的建议排量(以字体单位为单位)。

fwdStrikeoutSize

以字体坐标指定删除线条的建议宽度。

fwdStrikeoutPosition

指定基线中罢工栏中间的建议偏移量。

chFirstChar

指定 jWinCharSet中指定的代码页中支持的最低字符。 此字段用于 Windows 3.1 兼容性。

chLastChar

指定 jWinCharSet中指定的代码页中支持的最高字符。 此字段用于 Windows 3.1 兼容性。

chDefaultChar

指定在 jWinCharSet中指定的代码页中的默认字符。 此字段用于 Windows 3.1 兼容性。

chBreakChar

指定在 jWinCharSet中指定的代码页中的断字符。 此字段用于 Windows 3.1 兼容性。

wcFirstChar

使用最小的 Unicode 字符代码指定支持的字符。

wcLastChar

指定具有最大 Unicode 字符代码的受支持字符。

wcDefaultChar

指定当应用程序请求字体不支持的字符时要替换的字符。

wcBreakChar

指定空格字符或其等效项的代码点。

ptlBaseline

指定 POINTL 结构,该结构包含此字体的预期书写方向。 例如,典型的拉丁文字体指定值 (1,0)。

ptlAspect

指定一个 POINTL 结构,该结构包含设计位图字体的像素中心纵横比。 此值仅由位图字体使用。

ptlCaret

指定包含字体升序方向的 POINTL 结构。 例如,非数字拉丁字体的值为 (0,1),而斜体拉丁字体可能指定值 (2,5)。

rclFontBox

指定一个 RECTL 结构,该结构描述设计空间中字体中所有字形的边界框。

achVendId[4]

指定字体供应商的四个字符标识符。 标识符记录在 Microsoft TrueType 规范中。

cKerningPairs

指定与此字体关联的字距对数。

ulPanoseCulture

指定要解释平移数的方式。 对于基于拉丁语的字体,此数字应设置为FM_PANOSE_CULTURE_LATIN。 有关 PANOSE 结构的信息,请参阅 Microsoft Window SDK 文档。

panose

一个由 10 个字节表示的数组,用于描述给定字面的视觉特征。 然后,这些特征用于将字体与其他外观相似的字体相关联,其名称不同。 有关 PANOSE 结构的信息,请参阅 Window SDK 文档。

言论

Windows Server 2003 SP1 及更高版本中提供了PRINTIFI32结构。 由于此结构大小固定,因此可以保证不跨体系结构或作系统版本更改,因此它可用于二进制文件布局。 Unidrv UFM 文件以此结构中所述的格式布局,适用于所有平台。 Pscript5 NTF 文件使用特定于平台的此结构版本。

可以在 IFIEXTRA 结构中指定字样的其他信息。

驱动程序的 DrvQueryFont 例程填充,并将 IFIMETRICS 结构返回到 GDI。

PRINTIFI32结构定义 GDI 理解的字样的所有信息。 大多数成员都是 FWORD 值,这些值在设计空间中签名 16 位数量。 如果字体是光栅字体,则设计空间和设备空间相同,字体单位相当于像素之间的距离。

字体/表示空间中的坐标系使 y 坐标在向上方向增加,x 坐标向右增加。

要求

要求 价值
标头 prntfont.h (包括 Prntfont.h)

另请参阅

IFIMETRICS