我目前正在为NekoVM创建一个库来创建一个绑定到Freetype 2。它是用简单的c编写的,一切都很好用,除非用户输入一些类似的unicode字符“ü”,“Ä”或“ß”会变成一些丑陋的方形字母
当我从NekoVM收到数据时,您使用val_string
返回char*
。将数据推送到freetype的函数(FT_Load_Char
)需要一个unsigned long作为char代码。 (每封信都是自己处理的。)
怎么做才能正确呈现字符?我还可以选择将它们转换为任何ISO-8859-XX代码页,然后再将它们提交到c语言库中。
答案 0 :(得分:3)
一个小方框意味着您的角色不包含在字体中。这可能意味着两件事:
使用包含这些字符的字体
使用正确的编码。请参阅FT_CharMap和FT_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自己处理所有“编码 - 东西”。