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 指向的缓冲区。

如果 pvNULL,则返回值为缓冲区所需的大小(以字节为单位)。

QFD_TT_GRAY1_BITMAP 实现的字体应以灰度 ((即黑白) )的每像素一位呈现。
QFD_TT_GRAY2_BITMAP 实现的字体应以灰度每像素两位呈现。
QFD_TT_GRAY4_BITMAP 实现的字体应以灰度每像素四位呈现。
QFD_TT_GRAY8_BITMAP 实现的字体应以灰度每像素八位呈现。
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值,驱动程序在 pv 参数指定的位置写入FD_DEVICEMETRICS结构的内容。

对于使用特定于设备的字体或特定于驱动程序的字体驱动程序和驱动程序,需要 DrvQueryFontData

要求

   
目标平台 台式机
标头 winddi.h (包括 Winddi.h)

另请参阅

DrvEnablePDEV

DrvQueryFontFile

FD_DEVICEMETRICS

FONTOBJ

GLYPHBITS

GLYPHDATA

PATHOBJ