在 cairo 或 pangocairo 加载自定义 ttf

问题描述 投票:0回答:1

使用 C cairo api 或 pangocairo api 如何加载自定义 ttf 字体文件?

如何选择渲染某些文本时使用的字体?

并且..我可以从 RAM 而不是文件路径加载字体吗?

c cairo pango
1个回答
0
投票

技巧是使用 lib freetype。

#include <fontconfig/fontconfig.h>

然后创建一个新的字体配置,其中包含所需字体的路径。 此字体配置仅适用于此应用程序。稍后 cairo/pangocairo 会在这里搜索字体

int set_application_fonts() {
    // force empty font config with only liberation sans
    FcConfig *fc = FcConfigCreate();
    if (!fc)
        return -1;

    if (!FcConfigSetCurrent(fc))
        return -1;

    if (!FcConfigAppFontAddDir(fc, (uint8_t *)"./LiberationSans"))
        return -1;
    // NOTE: fc is leaked
    return 0;
}

记住使用适当的标志进行编译/链接

pkg-config --cflags --libs fontconfig

遗憾的是,不可能将字体文件内容作为内存中的 blob 提供。因此,您必须确保该路径包含字体文件。这意味着,如果使用相对路径,则应用程序对其执行的 CWD 敏感 >:(

© www.soinside.com 2019 - 2024. All rights reserved.