我發現freetype2不能正確處理subglyphs的位置(或者我可能錯誤地使用它)。例如,當我嘗試渲染'Ã'時,A上帶有波浪號,我得到:FreeType對字形做了什麼變換?
http://i.imgur.com/3pkYfO3.png忽略小尾巴和紅色文字無處不在;問題是,波浪與A.交叉
當我指定FT_LOAD_NO_RECURSE標誌,然後加上我自己的兩個subglyphs(使用從FT_Get_SubGlyph_Info ARG1和ARG2偏移量),這是正確的:http://i.imgur.com/TrjgHVs.png
這與幾乎所有其他複合字符都是類似的故事。
也許相關:我使用的是精確的電話是:
FT_Library library = { };
FT_Init_FreeType(&library);
...
FT_Face face = { };
FT_New_Face(library, "arial.ttf", 0, &face);
...
FT_Set_Char_Size(face, 10, 10, 72, 72);
...
FT_Load_Glyph(face, glyphIndex, FT_LOAD_NO_BITMAP);
所以,第一個問題:我在某種程度上使用對FreeType2錯了嗎?
如果確實是freetype2中的一個錯誤,而且我必須繼續使用FT_LOAD_NO_RECURSE,那麼我的問題是FT_LOAD_NO_RECURSE意味着FT_LOAD_NO_SCALE和FT_LOAD_IGNORE_TRANSFORM。效果是我的結果字符有非常奇怪的座標。例如,斜線字符, '/',以前有這四點:
- 頂部:28,46
- 權:34,43
- 左:4,1
- 下: 10,-2
但現在沒有縮放或轉換,我得到以下幾點:
- 頂部:901147 4
- 權:1087,1376
- 底部:328,-74
- 左:142,24
主要問題:我怎麼回第一組座標?我要添加/乘以什麼?
非常感謝!