0

我目前正在为NekoVM开发一个库,以创建与Freetype 2 的绑定。它是用纯 c 编写的,一切都非常好,除非用户输入一些 unicode 字符,如“ü”、“Ä”或“ß”它们会变成一些丑陋的方形字母。
当我从您使用的 NekoVM 接收数据时,val_string它会返回一个char*. 将数据推送到 freetype的函数 ( FT_Load_Char) 需要一个 unsigned long as char 代码。(每个字母都是单独处理的。)

怎么做才能正确渲染字符?在将它们提交到 c 编写的库之前,我还可以选择将它们转换为任何 ISO-8859-XX 代码页。

4

2 回答 2

3

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

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

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

于 2009-10-06T11:31:06.703 回答
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 可以自己处理所有的“编码材料”。

于 2009-10-12T18:18:42.430 回答