首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在OpenGL上使用免费字体呈现非英语unicode文本的问题

在OpenGL上使用免费字体呈现非英语unicode文本的问题
EN

Stack Overflow用户
提问于 2010-02-08 06:30:21
回答 2查看 3.7K关注 0票数 3

我目前正在学习NeHe教程第43课( http://nehe.gamedev.net/data/lessons/lesson.asp?lesson=43)。该代码仅适用于英文文本,而不是统一的语言。幸运的是,我遵循了从NeHe第43课到tutorial.html的链接,并找到了另一个相同的教程示例,只有一个不同之处:它使用w_char,该站点声称您可以在英语以外的语言上运行。

所以我试试看:

代码语言:javascript
运行
复制
freetype::print(our_font, 320, 200, (unsigned short*)L"Active FreeType Text หกโด้กี่ดุ öáæé おはよ。- %7.2f", cnt1);

名称空间freetype的函数打印有第四个参数:*const未签名短**,所以我输入了它。我还在长字符的双引号字符串前面加上了一个L,并在测试中加入了一些亚洲字符。

结果是所有的英文文本都可以很好地显示,但是所有的泰国字符都变成了“[]B[]I[]5 H[]8”。这些[]是方框。据我所知,这意味着字体没有指定的语言,所以我尝试了其他字体,但是所有其他泰国字体都提供了相同的方框。对于日文字体来说,是一样的。所有的盒子和一些英语字符在他们旁边。在没有任何问题的情况下,子字符串就变得很好了。

我是不是忘了什么?我们如何在这里显示非英语Unicode语言?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2010-02-09 06:43:26

幸运的是,作者在他的网站上上传了一个修改后的教程版本(在问题中具体说明),它使用了wchar_t (在原始版本中,作者使用*const未签名的简短**作为打印函数中的一个参数),它允许使用非英语语言。

票数 2
EN

Stack Overflow用户

发布于 2010-02-08 14:28:20

看起来,第43课中的print()甚至都不能接近Unicode。NeHe所做的就是为前256个ASCII字符创建256个显示列表,不接受UTF8字符串并将其转换为UTF32 for FreeType。

音译为C++对我很有帮助。

另外,获取GNU Unifont的一个副本,以确保所有BMP都有象形文字。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2219952

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档