c++ - SDL2_ttf 是否无法呈现超过两个字节的字符?

标签 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 的已知问题,如果是,是否有任何已知的修复方法。

最佳答案

我最终使用了这个库,它似乎可以按预期呈现所有内容。

https://github.com/akrinke/Font-Stash

关于c++ - SDL2_ttf 是否无法呈现超过两个字节的字符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37598539/

相关文章:

c++ - 在 C++ 中实现哈希表

c++ - std::conditional_variable::notify_all 不唤醒所有线程

c++ - 如何复制不同结构体中同名的成员?

python - 运行时错误 : could not find any library for SDL2_ttf

c++ - 无法使用Dev-C++编译简单的SDL程序

c - SDL2 - 尝试将表面信息复制到结构时发生崩溃。没有给出错误信息

ios - 如何以编程方式在 iOS 中使用自定义字体(例如 : Helvetica CY. ttf)和 Xcode

c++ - 错误 : pointer to incomplete class type is not allowed

html - CSS font-face 字体大小兼容性问题 firefox