FreeType中的Unicode问题

时间:2012-07-16 09:12:59

标签: 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);

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

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

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

2 个答案:

答案 0 :(得分:7)

有两点需要建议:

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

FT_Select_Charmap(face , ft_encoding_unicode);

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

答案 1 :(得分:1)

不要忘记在加载脸部后立即设置字体大小。

FT_Error err =  FT_Set_Pixel_Sizes(face, (width), (height));