TTLoadEmbeddedFont 函数 (t2embapi.h)

从文档流中读取嵌入字体并安装它。 还允许客户端进一步限制字体的嵌入权限。

语法

LONG TTLoadEmbeddedFont(
  [out]          HANDLE        *phFontReference,
  [in]           ULONG         ulFlags,
  [out]          ULONG         *pulPrivStatus,
  [in]           ULONG         ulPrivs,
  [out]          ULONG         *pulStatus,
  [in]           READEMBEDPROC lpfnReadFromStream,
  [in]           LPVOID        lpvReadStream,
  [in, optional] LPWSTR        szWinFamilyName,
  [in, optional] LPSTR         szMacFamilyName,
  [in, optional] TTLOADINFO    *pTTLoadInfo
);

参数

[out] phFontReference

指向标识已安装嵌入字体的句柄的指针。 此句柄引用内部结构,而不是 Hfont。

[in] ulFlags

指定加载和安装选项的标志。 目前,此标志可以设置为零或以下值:

含义
TTLOAD_PRIVATE
加载字体,使其不枚举给用户。 如果字体不可安装,它将保持私密。

[out] pulPrivStatus

指向标志的指针,指示字体的嵌入权限。 此标志在完成此函数后编写,可以具有以下值之一。 此函数返回授予的限制最少的许可证。

含义
EMBED_PREVIEWPRINT
预览和打印嵌入。 字体可以嵌入文档中,但只能暂时安装在远程系统上。 包含此类型字体的文档只能以只读方式打开。 应用程序不得允许用户编辑文档。 只能查看和/或打印文档。
EMBED_EDITABLE
可编辑的嵌入。 字体可以嵌入文档中,但只能暂时安装在远程系统上。 包含此类型字体的文档可以打开“读/写”,并允许编辑。
EMBED_INSTALLABLE
可安装嵌入。 该字体可以嵌入并永久安装在远程系统上。 远程系统的用户与字体的原始购买者一样,获得该字体的相同权利、义务和许可证,并受与原始购买者相同的最终用户许可协议、版权、设计专利和/或商标的约束。
EMBED_NOEMBEDDING
受限许可证嵌入。 未经法律所有者的许可,不得以任何方式修改、嵌入或交换字体。

[in] ulPrivs

一个标志,指示由加载字体的客户端施加的嵌入权限的进一步限制。 此标志必须具有以下值之一。

含义
LICENSE_PREVIEWPRINT
预览和打印嵌入。
LICENSE_EDITABLE
可编辑的嵌入。
LICENSE_INSTALLABLE
可安装嵌入。
LICENSE_NOEMBEDDING
受限许可证嵌入。
LICENSE_DEFAULT
使用默认嵌入级别。

[out] pulStatus

指向位字段的指针,其中包含有关 TTLoadEmbeddedFont 请求的状态信息。 此字段在完成此函数后填充,可以具有零个或多个以下值。

含义
TTLOAD_FONT_SUBSETTED
加载的字体是原始字体的子集。
TTLOAD_FONT_IN_SYSSTARTUP
加载的字体标记为“可安装”,并已添加到注册表中,因此在启动时可以使用该字体。

[in] lpfnReadFromStream

指向从文档流读取字体结构的客户端定义的回调函数的指针。

[in] lpvReadStream

指向流 (字体结构的指针) 。

[in, optional] szWinFamilyName

指向字体的新 16 位字符 Unicode Microsoft Windows 系列名称的指针。 设置为 NULL 以使用现有名称。 在加载时更改字体名称时,必须同时提供此参数和 szMacFamilyName 参数。

[in, optional] szMacFamilyName

指向字体的新 8 位字符 Macintosh 系列名称的指针。 设置为 NULL 以使用现有名称。 在加载时更改字体名称时,必须同时提供此参数和 szWinFamilyName 参数。

[in, optional] pTTLoadInfo

指向 TTLOADINFO 结构的指针,该结构包含已从中获取嵌入字体对象的 URL。 如果此值与 TTEMBEDINFO 结构中包含的值之一不匹配,则字体将无法成功加载。

返回值

如果成功,则返回E_NONE。

如果字体加载成功,则使用 szWinFamilyName 和 szMacFamilyName 中引用的名称从字体结构创建 phFontReference 指示的字体设置 pulPrivStatus ,指示字体的嵌入权限;和 pulStatus 可以设置为指示有关字体加载操作的状态信息。

否则,返回 嵌入函数错误消息中所述的错误代码。

注解

为了帮助客户端确定系统中是否已安装嵌入字体,字体加载功能将返回一条错误消息,指示系统中存在同名字体 (E_FONTNAMEALREADYEXISTS) ,并且该字体是否与嵌入字体 (E_FONTALREADYEXISTS) 具有相同的校验和。 然后,客户端有两个选项:

  1. 假设安装的字体实际上与嵌入的字体相同,并且涵盖相同的子集。
  2. 强制使用其他名称安装嵌入字体,以避免与系统上已有的字体不兼容。
若要在安装之前更改嵌入字体的名称,客户端必须同时提供 8 位字符和 16 位字符名称字符串作为参数。 将在新安装字体的名称表中更改字体名称。 新名称仅适用于客户端,不会枚举给用户。

若要使用嵌入字体的现有名称,需要将名称字符串参数设置为 NULL

要求

要求
最低受支持的客户端 Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器 Windows 2000 Server [仅限桌面应用]
目标平台 Windows
标头 t2embapi.h
Library T2embed.lib
DLL T2embed.dll

另请参阅

TTDeleteEmbeddedFont

TTEMBEDINFO

TTGetEmbeddingType

TTGetNewFontName

TTLOADINFO