我一直在用 FreeType 渲染文本。尤其是非 ascii 字符让我头疼。经过反复试验,我设法渲染了一些文本,但我的变音符号没有显示:
std::string text = "Hauptmenü";
for(std::string::iterator it = text.begin(); it != text.end(); ++it) {
std::cout << *it;
FT_Face face = loadFace(faceName);
FT_Set_Pixel_Sizes(face, 0, fontSize);
if(FT_Load_Char(face, *it, FT_LOAD_DEFAULT)) {
std::cout << "Could not load character '" << character << "'" << std::endl;
}
FT_Get_Glyph(face->glyph, &glyph);
FT_Glyph_To_Bitmap(&glyph, FT_RENDER_MODE_NORMAL, 0, 1);
//render the glyphs to screen and so on
}
加载字体、获取字形等基本上可以工作,但没有渲染“ü”。这是我的输出的样子:
显示除“ü”以外的所有字符!
这最终出现在我的控制台中,所以我猜我对字符串的迭代一定有问题,因为“ü”被分成两个字符。我为最后两个字符获得的字形位图的宽度和高度均为 0。
我怎样才能解决这个问题?