我一直在尝试让 FreeType 在我的游戏中工作,但每当我尝试从字体加载字符时,它似乎都不起作用。我在网上看了一堆教程,据我所知,代码似乎没有任何问题。
我尝试过使用不同的字体,但它们会产生相同的错误。
这是失败的代码:
int errorCode = FT_New_Face(freetype, filename.c_str(), 0, &face);
if (errorCode != 0)
{
std::cerr << "Failed to load font: " << filename << ". Error code: " << errorCode << std::endl;
}
for (char i = 0; i < 256; i++)
{
errorCode = FT_Load_Char(face, i, FT_LOAD_RENDER); // This returns 36 when i is 0
if (errorCode != 0)
{
std::cerr << filename << ": Failed to load character '" << i << "'. Error code: " << errorCode << std::endl;
}
}
这打印出来:
FreeSans.ttf: 未能加载字符“”。错误代码:36
我在 FreeType 标头中查找了错误代码 36,它似乎是“Invalid_Size_Handle”。这让我感到困惑,因为在函数中传递的没有大小句柄。我能想到的唯一尺寸句柄是 face->size 属性,但它不应该有任何问题,因为 face 结构是在 FT_New_Face 函数中初始化的。
是的,我确实在代码中早些时候初始化了 FreeType。
那么,有人知道我做错了什么以及我能做些什么来解决这个问题吗?