如何将字体文件集成(硬编码)到我的程序中

How to integrate (hardcode) a font file into my program?

本文关键字:编码 我的 程序 字体 文件 集成      更新时间:2023-10-16

我目前正在将我的图像硬编码到C++程序中,作为一个结构(可以使用GIMP创建带有像素数据的源代码),如下所示:

static const struct {
  unsigned int   width;
  unsigned int   height;
  unsigned int   bytes_per_pixel;
  unsigned char  pixel_data[16 * 16 * 4 + 1];
} my_icon = {
  16, 16, 4,
  "...", pixel data here
};

这一切都很顺利,我很高兴!但现在我想对我正在使用的字体文件做同样的操作。

由于GIMP为我进行了转换,但显然无法为我转换字体,我现在陷入了困境,不知道如何像处理图像一样对字体.ttf进行硬编码。

如果它有任何相关性,这就是我目前加载字体文件的方式:

sf::Font font;
if (!font.loadFromFile("font.ttf")) {
    std::cout << "Could not load font" << std::endl;
    return -1;
}

有人能帮帮我吗?(字体大小小于25 KB,所以没有问题)

谢谢!!

Font似乎有一个很好的loadFromMemory方法。因此,您可以像前面的示例一样使用它,以字符串文本形式显示数据并将其传递出去。

编写一个程序,将二进制文件转换为类似于\xHH hexdump的适合包含的格式并不困难。

好吧,这是我的解决方案:

我使用了Bin2h工具(http://www.deadnode.org/sw/bin2h/)创建以下代码:

unsigned int fontSize = 22256;
unsigned char fontChar[] = {
0x00,0x01,0x00,...
};

然后我使用

font.loadFromMemory(fontChar, fontSize)

以加载字体。