sdl ttf windows-1250编码

时间:2014-09-14 18:43:22

标签: c encoding sdl sdl-ttf

在文件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 ......效果更差。)

2 个答案:

答案 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。它有一些优点和缺点,但我认为它可以用于我的目的。

感谢所有回复