我目前正在学习 NeHe 教程第 43 课(http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=43)。该代码仅适用于英文文本,而不适用于 Unicoded 语言。幸运的是,我从 NeHe 第 43 课链接到http://www.cs.northwestern.edu/~sco590/fonts_tutorial.html并找到了另一个相同的教程示例,只有一个区别:它使用 w_char,并且该站点声称您可以在英语以外的语言上运行。
所以我试一试:
freetype::print(our_font, 320, 200, (unsigned short*)L"Active FreeType Text หกโด้กี่ดุ öáæé おはよ。- %7.2f", cnt1);
命名空间freetype的函数print的第四个参数是 *const unsigned short** 所以我对它进行了类型转换。我还在长字符的双引号字符串前面放了一个 L,并放入了一些亚洲字符用于测试目的。
结果是所有的英文文本都可以正常显示,但是所有的泰文字符都变成了“[]B[]I[]5H[]8”。[] 是方框。据我了解,这意味着该字体没有指定的语言,所以我尝试了其他字体,但所有其他泰语字体都给出了这些相同的方框。对于日文字体,也是如此。所有方框以及旁边的一些英文字符。子字符串 öáæé 渲染得很好,没有任何问题。
我在这里忘记了什么吗?我们如何在这里显示非英语的 Unicode 语言?