FreeType中的Unicode问题

Jon*_*son 6 c++ unicode fonts freetype

所以,我有一个实现解析一个xml,其中包括维基百科主页的位置和字符串.使用rapidxml进行解析,然后通过http://utfcpp.sourceforge.net/将字符串从UTF-8转换为UTF-32 .然后在freetype中使用UTF-32代码:

unsigned long c = FT_Get_Char_Index(face,*p);
FT_Load_Glyph(face,c,FT_LOAD_RENDER);
Run Code Online (Sandbox Code Playgroud)

其中*p是UTF-32字符代码.然后在OpenGL中呈现此字形.

现在,我似乎无法让哭泣的角色工作,也没有任何中文或日文或者viet,我确信*p对应于正确的代码,我会感谢我能得到的任何指针.

对于这些字体使用了微软arial.ttf,从Arch linux包和我在fontviewing程序中看到的,它应该包含我想要的字符.

Rod*_*ddy 7

建议两件事:

首先,您是否已调用FT_Select_Charmap来指定您使用的是Unicode编码?

FT_Select_Charmap(face , ft_encoding_unicode);
Run Code Online (Sandbox Code Playgroud)

其次,并非所有Arial字体都具有所有字符,并且某些字体查看器(在Windows上,无论如何)可以通过自动替换来自不同面的字形来误导.如果你能找到它,试试ArialUni.ttf.

  • 你能尝试构建一个失败的最小例子吗?`FT_Library库; FT_Face脸; FT_Init_FreeType(&library); FT_New_Face(library,"monofont.ttf",0,&face); FT_Get_Char_Index(face,0x43f);` - 但是在每种情况下都会检查错误! (2认同)
  • 我提出了自己的答案,谢谢你的帮助,它让我犯了错误.是的,最小的构建工作. (2认同)