MergeFontPackage 函数 (fontsub.h)

MergeFontPackage 函数操作 CreateFontPackage 创建的字体。 它比其名称可能暗示的稍微灵活一些:它可以适当处理 CreateFontPackage 创建的所有子集字体和字体包。 它可以将字体包转换为工作字体,并且可以将 Delta 字体包合并为适当准备的工作字体。

通常, CreateFontPackage 创建要传递给打印机或打印服务器的子集字体和字体包; MergeFontPackage 在该打印机或打印服务器上运行。

语法

unsigned long MergeFontPackage(
  [in]  const unsigned char  *puchMergeFontBuffer,
  [in]  const unsigned long  ulMergeFontBufferSize,
  [in]  const unsigned char  *puchFontPackageBuffer,
  [in]  const unsigned long  ulFontPackageBufferSize,
  [out] unsigned char        **ppuchDestBuffer,
  [out] unsigned long        *pulDestBufferSize,
  [out] unsigned long        *pulBytesWritten,
  [in]  const unsigned short usMode,
  [in]  CFP_ALLOCPROC        lpfnAllocate,
  [in]  CFP_REALLOCPROC      lpfnReAllocate,
  [in]  CFP_FREEPROC         lpfnFree,
  [in]  void                 *lpvReserved
);

参数

[in] puchMergeFontBuffer

指向包含要合并的字体的缓冲区的指针。 仅当 usMode TTFMFP_DELTA时,才使用此参数。

[in] ulMergeFontBufferSize

指定 *puchMergeFontBuffer 的大小(以字节为单位)。

[in] puchFontPackageBuffer

指向包含字体包的缓冲区的指针。

[in] ulFontPackageBufferSize

指定 *puchMergeFontBuffer 的大小(以字节为单位)。

[out] ppuchDestBuffer

指向无符号 char* 类型的变量的指针。 MergeFontPackage 函数将使用 lpfnAllocate 和 lpfnReAllocate 分配缓冲区 **ppuchDestBuffer 成功返回后,该缓冲区将包含生成的合并或展开字体。 应用程序负责最终释放该缓冲区。

[out] pulDestBufferSize

指向无符号长,成功返回后将指定缓冲区 **ppuchDestBuffer 的分配大小。

[out] pulBytesWritten

指向一个无符号的长,成功返回后,该长将指定缓冲区 **ppuchDestBuffer 中实际使用的字节数。

[in] usMode

指定要执行的进程类型。 选择以下值之一;它们不能组合在一起。

Value 含义
TTFMFP_SUBSET
复制简单的工作字体;请参阅下面的备注。

puchMergeFontBuffer 将被忽略; puchFontPackageBuffer 应包含 由 CreateFontPackage 创建的工作字体,其中 usSubsetFormat 设置为 TTFCFP_SUBSET;此工作字体将直接复制到 ppuchDestBuffer

TTFMFP_SUBSET1
将字体包转换为可合并的工作字体;请参阅下面的备注。

puchMergeFontBuffer 将被忽略; puchFontPackageBuffer 应包含 CreateFontPackage 创建的可合并工作字体,其中 usSubsetFormat 设置为 TTFCFP_SUBSET1。 ppuchDestBuffer 中的结果将是一个工作字体,以后可能会与 合并。

TTFMFP_DELTA
将 Delta 字体包合并为可合并的工作字体;请参阅下面的备注。

*puchFontPackageBuffer 应包含由 CreateFontPackage 创建的字体包, 其中 usSubsetFormat 设置为 TTFCFP_DELTA, puchMergeFontBuffer 应包含之前调用 MergeFontPackage 创建的字体包, usMode 设置为 TTFMFP_SUBSET1 或 TTFMFP_DELTA。 在 **ppuchDestBuffer 中生成的合并字体将是稍后可能合并的工作字体。

[in] lpfnAllocate

用于为 ppuchDestBuffer 和临时缓冲区分配初始内存的回调函数。

[in] lpfnReAllocate

用于为 ppuchDestBuffer 和临时缓冲区重新分配内存的回调函数。

[in] lpfnFree

用于释放 由 lpfnAllocate 和 lpfnReAllocate 分配的内存 回调函数。

[in] lpvReserved

必须设置为 NULL

返回值

如果函数成功,则 返回零。

否则,返回一个非零值。 有关可能的 错误返回,请参阅 Font-Package 函数错误消息

备注

此函数处理四个不同的相关实体,每个实体表示一个子集字体:

实体 生成者 可直接用作字体
简单工作字体 usSubsetFormat 设置为 TFCFP_SUBSET 的 CreateFontPackage
字体包 usSubsetFormat 设置为 TTFCFP_SUBSET1 的 CreateFontPackage
Delta 字体包 usSubsetFormat 设置为 TTFCFP_DELTA 的 CreateFontPackage
可合并的工作字体 usMode 设置为 TTFMFP_SUBSET1 或 TTFMFP_DELTA 的 MergeFontPackage

要求

   
最低受支持的客户端 Windows XP [仅限桌面应用]
最低受支持的服务器 Windows Server 2003 [仅限桌面应用]
目标平台 Windows
标头 fontsub.h
Library FontSub.lib
DLL FontSub.dll

请参阅

CFP_ALLOCPROC

CFP_FREEPROC

CFP_REALLOCPROC

CreateFontPackage