drvLoadFontFile 函数 (winddi.h)

DrvLoadFontFile 函数从 GDI 接收与加载和映射字体文件相关的信息。

语法

ULONG_PTR DrvLoadFontFile(
  ULONG        cFiles,
  ULONG_PTR    *piFile,
  PVOID        *ppvView,
  ULONG        *pcjView,
  DESIGNVECTOR *pdv,
  ULONG        ulLangID,
  ULONG        ulFastCheckSum
);

参数

cFiles

调用方提供的值,该值指示与字体关联的文件数。

piFile

调用方提供的指向 cFiles 大小的文件句柄数组的指针。 每个句柄都表示与字体关联的文件之一。 文件句柄可以单独传递到 EngMapFontFileFD

ppvView

调用方提供的指向 cFiles 大小的数组的指针,该数组包含每个字体文件已映射到的内存空间的起始地址。

pcjView

调用方提供的指向 cFiles 大小的数组的指针,该数组包含每个字体文件已映射到的内存空间的大小。

pdv

对于 Adobe Multiple Master 字体,这是调用方提供的指向 DESIGNVECTOR 结构的指针, (标识 Multiple Master 实例) Microsoft Windows SDK文档中所述。 否则,此参数为 NULL

ulLangID

调用方提供的语言标识符,从注册表获取。

ulFastCheckSum

为字体指定 GDI 提供的校验和。 如果此参数不为零,则可以使用 GDI 字体缓存引擎来更快地访问字体。 如果此参数为零,则无法使用 GDI 字体引擎。

返回值

如果操作成功,它应返回指向唯一标识字体的驱动程序定义值的指针。 驱动程序随后接收此指针作为 DrvQueryFont、DrvQueryFontFileDrvQueryFontTree 等函数的输入参数。 如果遇到错误,该函数应返回HFF_INVALID。

注解

需要字体驱动程序才能提供 DrvLoadFontFile 函数。 函数的目的是允许字体驱动程序接收正在加载和映射字体关联文件的通知。 驱动程序可以存储输入参数供以后使用。

加载和映射字体文件需要调用 EngMapFontFileFD。 当应用程序调用 Windows SDK 文档) 中所述的 AddFontResource 或 AddFontResourceEx (时,GDI 调用 EngMapFontFileFD,然后调用 DrvLoadFontFileDrvLoadFontFile 函数的 ppvViewpcjView 参数提供 EngMapFontFileFD 返回的每个文件的映射的位置和大小。

当 DrvLoadFontFile 返回时,GDI 将取消映射文件。 如果驱动程序稍后需要重新映射文件,以响应来自 GDI 的后续调用,它可以在保存 cFiles 和 piFile 参数的情况下调用 EngMapFontFileFD 本身。

当 GDI 字体引擎调用字体驱动程序的 DrvLoadFontFile DDI 时,它会在 ulFastCheckSum 参数中传递字体的校验和。 如果此参数为非零值并且已缓存了所讨论的字体, 则 DrvLoadFontFile 可以通过调用 EngFntCacheLookUp 获取指向字体数据的指针。 字体驱动程序获取指向字体数据的指针后,可以加载字体数据。 如果尚未缓存字体,字体驱动程序可以通过先为字体缓存分配内存,使用 对 EngFntCacheAlloc 的调用来缓存字体,然后将字体数据写入该内存。 如果字体驱动程序在读取或写入字体数据时遇到问题,可以通过调用 EngFntCacheFault 来通知 GDI 字体引擎。

如果 GDI 字体引擎名为 DrvLoadFontFile ,并为 ulFastCheckSum 参数传入了值零,则表示 GDI 字体引擎未运行,并且字体驱动程序不需要执行任何操作。

要求

要求
目标平台 桌面
标头 winddi.h (包括 Winddi.h)

另请参阅

DrvUnloadFontFile

EngFntCacheAlloc

EngFntCacheFault

EngFntCacheLookUp