6

所以,我有一个解析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 中渲染此字形。

现在,我似乎无法使用 cryllic 字符,也无法使用任何中文、日文或越南文,我确信 *p 对应于正确的代码,我会感谢我能得到的任何指示。

对于这些字体,使用了 Microsoft 的 arial.ttf,来自Arch linux 包以及我在 fontviewing 程序中看到的内容,它应该包含我想要的字符。

4

2 回答 2

8

有两点建议:

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

FT_Select_Charmap(face , ft_encoding_unicode);

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

于 2012-07-16T09:56:01.647 回答
2

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

FT_Error err =  FT_Set_Pixel_Sizes(face, (width), (height));
于 2017-06-19T22:51:13.590 回答