如何在 libharu 中为 ttf 字体使用 Qt 资源?

How to use Qt resource for ttf font in libharu?

我正在创建一个使用 libharu 编写 pdf 文件的 Qt 应用程序。 pdf 文件中使用的 true-type-font 应嵌入到二进制文件中,因此它在所有平台上都可用。为此,我想使用Qt资源系统。

字体文件使用方法如下

const char* fontName = HPDF_LoadTTFontFromFile(doc,"path/to/myfont.ttf",HPDF_TRUE);
documentFont = HPDF_GetFont(doc,fontName,"ISO8859-2");

我希望将文件名和路径替换为资源名称(例如 :/fonts/myfont.ttf)。 有办法实现吗?

我想到的选项:

还有其他更简单的解决方案吗?谢谢。

解决方案:

实际上第二个选项比预期的要容易。通过 robin.thoni and this question 的回答,我得到了这个非常简单的解决方案:

std::string fontFile = std::tmpnam(nullptr);
QFile::copy(":/fonts/myfont.ttf",QString::fromStdString(fontFile));
const char* fontName = HPDF_LoadTTFontFromFile(doc,fontFile.c_str(),HPDF_TRUE);

如你所见How to access resource image with fopen?, there's no way to 'open' a Qt resource file using standard open/fopen, so you won't be able to craft a valid path to it. You will need to use your second option. You could use std::tmpnam实现它。