我不确定这是否是最佳选择,但我想不出更好的地方

我已经“制作”了一个低分辨率的font。 (奖励积分,如果您知道它的实际来源)

字体在gedit中可以正常工作:

但是,当尝试使用SDL_ttf呈现字体时,除某些多字节unicode字符(特别是'æ'和'')外,它通常可以工作,而其他非ASCII字符则可以正常工作。但是(!),所有这些字符都可以与其他字体一起正常工作(我一直在使用DejaVu Sans)



其他字体可以正常工作的事实表明该代码不是罪魁祸首,只是为了以防万一:

SDL_Surface *surf = TTF_RenderUTF8_Solid(this->font, (const char *)text, col);
if (surf == nullptr) {
    fprintf(stderr, "Rendering text failed (%s)\n", TTF_GetError());
    return;
}

if (surf->format->BitsPerPixel != 8 || surf->format->BytesPerPixel != 1) {
    fprintf(stderr, "Rendering text failed (Wrong surface format)\n");
    return;
}

(文本为const uint8 *)显然,这些错误均未触发

我注意到特别是这两个字符比其余两个字符宽,这可能是原因吗?

根据下面的注释,该字体似乎可以与SDL_TTF“latin-1”演示一起正常使用:

最佳答案

我..我不知道怎么了。我只是再次尝试了,并且效果很好。

我确定要检查使用的字体是否正确。或者在生成字体时可能更改了某些内容

谢谢您的帮助,无论:)

10-07 19:17
查看更多