TTF_OpenFont()返回NULL

时间:2012-12-26 16:41:16

标签: macos qt ubuntu null sdl-ttf

以下是事实:我在Ubuntu上使用代码块。我已经安装了SDL和SDL_ttf并已成功包含和链接它们。我想将文本渲染到字体的屏幕FreeSerif。

问题在于:当程序到达行TTF_OpenFont(" FreeSerif.ttf,20")时,它返回NULL,如果传递给TTF_RenderText_Solid函数,则会导致段错误。我已将字体文件添加到项目中,但仍无效。

这是代码:
    TTF_Init();

TTF_Font *font = TTF_OpenFont("FreeSerif.ttf",20); //This returns NULL 

if(!font){printf("Unable to open font");exit(1);} //The program exits here

3 个答案:

答案 0 :(得分:6)

我遇到了同样的问题而且它似乎是一个路径错误,TTF_GetError()抛出这个:

  

无法打开Arial.ttf

您应该使用绝对路径设置字体,而不是相对路径。对我来说,它是

  

/Library/Fonts/Arial.ttf

而不是:

  

ARIAL.TTF

答案 1 :(得分:4)

您必须指定完整路径名称。那,或者您必须确定该文件位于程序的当前目录中(与可执行文件的目录不同)。

所以请改用:

TTF_Font *font = TTF_OpenFont("/path/to/FreeSerif.ttf",20);

答案 2 :(得分:1)

// load font.ttf at size 20 into font

TTF_Font *font;

font=TTF_OpenFont("font.ttf", 20);

if(!font) {
    printf("TTF_OpenFont: %s\n", TTF_GetError());
   // handle error
}

font.ttf路径未找到它返回NULL值

if(!font) not check null value and TTF_GetError()它返回最后一个错误。