Mic*_*ski 6 c++ sdl truetype sdl-ttf
我正在程序中从SFML切换到SDL2,我开始使用SDL2_ttf以UTF-8格式呈现文本.我使用函数TTF_RenderUTF8_Solid.我注意到一些字符不再正确呈现.一个例子是''(U + 1F70D).我确认该字体包含这些字符.
我尝试使用SDL2_ttf中包含的glfont示例程序,它也不会渲染这些字符.
我转到了SDL2_ttf源代码,并查看了SDL_ttf.c中的函数TTF_RenderUTF8_Solid,并注意到这一行:
    Uint16 c = UTF8_getch(&text, &textlen);
,而UTF8_getch返回Uint32.因此,丢弃较高的两个字节(并且不会在代码中的任何其他位置读取它们),这解释了为什么''没有呈现(它不适合Uint16).我将'c'的类型更改为Uint32,并正确分配了0x1F70D.它仍然没有呈现.很可能其他地方不考虑长度超过两个字节的字符.
我的问题是,这只是我对SDL2_ttf的误解还是已知的问题,如果有的话,是否有任何已知的修复方法.