freetype(C)的Unicode问题

时间:2009-10-06 10:50:18

标签: c linux unicode freetype neko

我目前正在为NekoVM创建一个库来创建一个绑定到Freetype 2。它是用简单的c编写的,一切都很好用,除非用户输入一些类似的unicode字符“ü”,“Ä”或“ß”会变成一些丑陋的方形字母 当我从NekoVM收到数据时,您使用val_string返回char*。将数据推送到freetype的函数(FT_Load_Char)需要一个unsigned long作为char代码。 (每封信都是自己处理的。)

怎么做才能正确呈现字符?我还可以选择将它们转换为任何ISO-8859-XX代码页,然后再将它们提交到c语言库中。

2 个答案:

答案 0 :(得分:3)

一个小方框意味着您的角色不包含在字体中。这可能意味着两件事:

  1. 使用包含这些字符的字体

  2. 使用正确的编码。请参阅FT_CharMapFT_Encoding

答案 1 :(得分:3)

解决方案非常简单:

for (i=0;i<l;i++) {
    unsigned long c = FT_Get_Char_Index(face,r[i]);
    FT_Load_Glyph(face,uc,FT_LOAD_RENDER);
    ....
}

这使得freetype自己处理所有“编码 - 东西”。