使用 C cairo api 或 pangocairo api 如何加载自定义 ttf 字体文件?
如何选择渲染某些文本时使用的字体?
并且..我可以从 RAM 而不是文件路径加载字体吗?
技巧是使用 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 敏感 >:(