SDL TTF_OpenFont在第二次尝试时返回NULL

时间:2013-07-04 14:59:34

标签: sdl sdl-ttf

我正在尝试使用以下代码将字体加载到不同的TTF_Fonts(针对不同大小)两次:

char const* fontString;
char const* titleFontString;    
//load the string values using libconfig    
try
    {
        fontString = cfg.lookup("font_string");
}
catch(const SettingNotFoundException &nfex)
{
}
try
{
   titleFontString = cfg.lookup("title_font_string");
}
catch(const SettingNotFoundException &nfex)
{}
font = TTF_OpenFont( fontString, STREAMER_FONT_SIZE/SCREEN_DIMENSION_DIVIDER );
pictureTitleFont = TTF_OpenFont( titleFontString, PICTURE_TITLE_FONT_SIZE/SCREEN_DIMENSION_DIVIDER );'

第一个将加载但第二个返回null。我称之为哪个顺序并不重要,总是第二个失败。这是为什么?

2 个答案:

答案 0 :(得分:1)

您应该测试TTF_OpenFont的返回值,如果失败,请使用TTF_GetError来了解错误的原因。我个人从未遇到过问题,但如果字体无法支持字体大小,可能会失败?有关更多(非常少)的信息,请参阅文档here

答案 1 :(得分:0)

好的,谢谢你的帮助。

我无法找到为什么会这样,但似乎在调用TTF_OpenFont()时,两个字符串的值都在变化。 为了解决这个问题,我在调用特定字体之前获取每个字符串的值。不理想,但问题似乎已经消失了。

如果时间允许,我会做进一步的调查,看看能不知道为什么会这样。

再次感谢。