在文件text.txt中我有这个句子:
“Přílišžluťoučkýkůňúpělďábelskéódy。”
(我认为Windows使用Windows-1250代码页来表示此文本。)
在我的程序中,我将其保存到缓冲区
char string[1000]
并使用ttf将字符串渲染到SDL_Surface * surface
surface = TTF_RenderText_Blended(font, string, color);
/*(font is true type and support this text)*/
但它给我的结果不正确:
我需要一些声望点来发布图片 所以我只能描述ř,í,š,ž,ť,ů,ň,ď不能正确显示。
是否可以使用ttf正确渲染此句子?
(我还尝试了TTF_RenderUTF8_Blended,TTF_RenderUNICODE_Solid ......效果更差。)
答案 0 :(得分:1)
TTF_RenderText_Blended的文档说它需要一个Latin-1字符串(Windows-1252) - 这就是它无法正常工作的原因。
您需要将输入文本转换为UTF-8并使用RenderUTF8或UTF-16并使用RenderUNICODE以确保正确解释。
如何执行此操作取决于您的应用程序所针对的平台 - 如果是Windows,那么最简单的方法是使用MultiByteToWideChar Win32 API将其转换为UTF-16,然后使用TTF_RenderUNICODE_Blended绘制它。
答案 1 :(得分:0)
我的解决方案是:
三个输入文件。在第一个文件中,将有一组来自捷克字母表的符号。 第二个文件将是精灵位图文件,其中图形符号将在其中排序 与第一个文件中的顺序相同。在我的程序中,第三个输入文件中的符号将与第一个文件中的符号进行比较,精灵的右侧部分将逐个复制到屏幕上。
我将遗漏sdl_ttf。它有一些优点和缺点,但我认为它可以用于我的目的。
感谢所有回复