6

以下是事实:我在 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
4

3 回答 3

10

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

无法打开 Arial.ttf

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

/图书馆/字体/Arial.ttf

代替 :

宋体.ttf

于 2013-05-07T09:52:50.927 回答
4

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

所以改用这个:

TTF_Font *font = TTF_OpenFont("/path/to/FreeSerif.ttf",20);
于 2013-05-10T08:20:52.140 回答
2
// 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()它返回最后一个错误。

于 2013-05-08T13:30:30.343 回答