drvQueryFontData 函数 (winddi.h)
DrvQueryFontData 函数检索有关已实现字体的信息。
语法
LONG DrvQueryFontData(
DHPDEV dhpdev,
FONTOBJ *pfo,
ULONG iMode,
HGLYPH hg,
GLYPHDATA *pgd,
[out] PVOID pv,
ULONG cjSize
);
参数
dhpdev
从先前调用 DrvEnablePDEV 返回的物理设备的 PDEV 的句柄。
pfo
指向用于定义字体实现的 FONTOBJ 结构的指针。
iMode
指定所请求的信息的类型。 此参数可能是以下值之一:
值 | 含义 |
---|---|
QFD_GLYPHANDBITMAP |
如果 pgd 不为 NULL,则驱动程序应使用 hg 指定的标志符号的指标填充 GLYPHDATA 结构。
如果 pv 不为 NULL,则应在此地址写入 GLYPHBITS 结构。 驱动程序应将 hg 指定的标志符号对应的字形位图复制到此结构中。 结构的大小由 cjSize 指定。 如果驱动程序不支持字形位图,则仅在 pv 设置为 NULL 的情况下调用此函数。 如果驱动程序支持字形位图,则返回值是字形位图的大小(以字节为单位)。 否则为零。 必须支持此模式。 |
QFD_GLYPHANDOUTLINE |
如果 pgd 不为 NULL,则驱动程序应使用 hg 指定的标志符号的指标填充 GLYPHDATA 结构。
如果 pv 不为 NULL,则应在此地址写入 PATHOBJ 结构。 驱动程序将此 PATHOBJ 传递给 PATHOBJ_Xxx 服务,以便为 hg 指定的字形创建轮廓。 应忽略 cjSize 参数。 如果函数成功,则返回值为零。 否则,它将FD_ERROR。 只有提供字形轮廓的字体驱动程序才需要支持此模式。 |
QFD_MAXEXTENTS |
如果 pv 不为 NULL,驱动程序应将 FD_DEVICEMETRICS 结构写入 pv 指向的缓冲区。
如果 pv 为 NULL,则返回值是缓冲区所需的大小(以字节为单位)。 |
QFD_TT_GRAY1_BITMAP | 实现的字体应以每像素一位的灰度 (呈现,即黑色或白色) 。 |
QFD_TT_GRAY2_BITMAP | 实现的字体应以每像素 2 位灰度呈现。 |
QFD_TT_GRAY4_BITMAP | 实现的字体应以每像素 4 位灰度呈现。 |
QFD_TT_GRAY8_BITMAP | 实现的字体应以每像素 8 位灰度呈现。 |
QFD_TT_MONO_BITMAP | 与 QFD_TT_GRAY1_BITMAP 相同。 |
hg
字形的句柄。
pgd
指向 GLYPHDATA 结构的指针。 此参数可以为 NULL。
[out] pv
指向数据缓冲区的指针。 写入此缓冲区的数据类型取决于 iMode。 此参数可以为 NULL。
cjSize
指定 pv 指向的缓冲区的大小。
返回值
返回值取决于 iMode 参数的值。 如果发生错误,则返回值FD_ERROR,并记录错误代码。
注解
对于 iMode 参数的QFD_GLYPHANDBITMAP和QFD_GLYPHANDOUTLINE值,GDI 提供指向 pgd 参数) 中 (GLYPHDATA 结构的指针。 驱动程序在此结构中放置有关字形指标的信息,并将 GLYPHBITS 结构或 PATHOBJ 结构的内容写入 pv 参数指定的位置,具体取决于字体是位图字体还是轮廓字体。 对于 iMode 参数的QFD_MAXEXTENTS值,驱动程序会将FD_DEVICEMETRICS结构的内容写入 pv 参数指定的位置。
DrvQueryFontData 是字体驱动程序和使用设备特定字体或驱动程序特定字体的驱动程序所必需的。
要求
要求 | 值 |
---|---|
目标平台 | 桌面 |
标头 | winddi.h (包括 Winddi.h) |