以下是事实:我在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
答案 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()
它返回最后一个错误。