我有一个解析XML的实现,其中包括维基百科主页的位置和字符串等信息。解析过程使用rapidxml完成,之后使用http://utfcpp.sourceforge.net/将字符串从UTF-8转换为UTF-32编码。然后,该UTF-32编码用于freetype的相关操作:
unsigned long c = FT_Get_Char_Index(face,*p);
FT_Load_Glyph(face,c,FT_LOAD_RENDER);
*p是UTF-32字符代码,然后在OpenGL中呈现该字形。
我似乎无法使西里尔字符正常工作,也不能使任何中文、日文或越南文正常工作,我确定*p对应正确的代码,并且我会感激您能给我任何指针。
对于这些字体,使用Microsoft的arial.ttf字体,从Arch Linux包中获取,从我在字体查看程序中看到的情况来看,它应该包含我想要的字符。
FT_Get_Char_Index
之前设置断点并检查你传递了什么代码点。也许你在使用 rapidxml 或 utfcpp 时出现了 bug。 - Roddy