【发布时间】:2016-07-16 06:10:45
【问题描述】:
我正在尝试将几个 API 结合在一起以促进 XPS 打印。由于 True Type 字体有时会受限于它们的使用方式,因此建议您向操作系统 (Windows) 查询与字体关联的许可证。我发现这样做的禁止方法如下所示:
HDC hDC = CreateDC(L"DISPLAY", NULL, NULL, NULL);
// logfont is a valid instance of LOGFONTW
HGDIOBJ hfont = ::CreateFontIndirect(&logfont);
if (!SelectObject(hDC, hfont))
return;
ULONG privstatus = 0;
LONG ttStatus;
ttStatus = TTGetEmbeddingType(hDC, &privstatus);
此时 ttStatus 应该是 E_NONE 如果 TTGetEmbeddingType 成功并且 privstatus 应该是 {EMBED_PREVIEWPRINT, EMBED_EDITABLE, EMBED_INSTALLABLE, EMBED_NOEMBEDDING} 之一。我有这个例子在星期五工作。今天,当我运行我的可执行文件时,TTGetEmbeddingType 返回0x0A (E_NOTATRUETYPEFONT) 而不是E_NONE。笏?我是否遗漏了有关操作系统确定字体是否可以嵌入的基本知识?
【问题讨论】:
-
您还有其他事情要做。这是一个非常基本的错误,表明您的应用程序或环境严重损坏了某些东西。而且我无论如何都不相信这个错误是正确的。它甚至没有被列为函数族可以返回的错误之一。