0

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

4

2 回答 2

1

TTF_RenderText_Blend 的文档说它需要一个 Latin-1 字符串(Windows-1252)——这就是它不起作用的原因。

您需要将输入文本转换为 UTF-8 并使用 RenderUTF8,或转换为 UTF-16 并使用 RenderUNICODE 以确保其被正确解释。

如何执行此操作取决于您的应用程序所针对的平台 - 如果是 Windows,那么最简单的方法是使用 MultiByteToWideChar Win32 API 将其转换为 UTF-16,然后使用 TTF_RenderUNICODE_Blend 绘制它。

于 2014-09-14T18:50:51.127 回答
0

我的解决方案是:

三个输入文件。在第一个文件中会有一组来自捷克字母的符号。第二个文件将是精灵位图文件,其中图形符号将按与第一个文件相同的顺序排序。在我的程序中,来自第三个输入文件的符号将与来自第一个文件的符号进行比较,精灵的右侧部分将一个一个地复制到屏幕上。

我将省略 sdl_ttf。它有一些优点和缺点,但我认为它适用于我的目的。

感谢所有回复

于 2014-09-16T06:42:31.363 回答