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

时间:2013-07-01 14:18:29

标签: c++ fonts struct sfml hardcode

我目前正在将我的图像硬编码到我的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为我做了转换,但显然无法为我转换字体,我现在卡住了,不知道怎么去硬编码font.ttf,就像我对图像一样。

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

sf::Font font;
if (!font.loadFromFile("font.ttf")) {
    std::cout << "Could not load font" << std::endl;
    return -1;
}
有人可以帮帮我吗? (字体大小小于25 KB,所以没问题)

谢谢!

2 个答案:

答案 0 :(得分:1)

It seem Font有一个很好的loadFromMemory方法。因此,您可以完全按照上一个示例使用它,以字符串文字显示数据并将其传递。

编写一个能够以适合包含的\ xHH hexdump格式转换二进制文件的程序并不难。

答案 1 :(得分:0)

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

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

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

然后我用

font.loadFromMemory(fontChar, fontSize)

加载字体。