gpt4 book ai didi

c++ - 使用 FTGL 在 openGL 中呈现复合字符字体的问题

转载 作者:行者123 更新时间:2023-11-28 02:11:12 28 4
gpt4 key购买 nike

在我的应用程序中,FTGL 可以很好地呈现 true type 字体的 unicode 字符,复合字符除外。复合字符是 unicode 辅音和元音的组合。

例如,在印度语泰米尔语中,输入以下字符串

“கா கி கீ கு கூ கெ கே கை கொ கோ கௌ”

显示为

"tamil compound characters in openGL"

openGL 查看器中。

某些字符的输出与输入不同。

有人可以帮忙吗?

我的代码片段,

    std::ifstream fontFile("latha.ttf", std::ios::binary);//tamil unicode font
if (fontFile.fail())
return NULL;
fontFile.seekg(0, std::ios::end);
std::fstream::pos_type fontFileSize = fontFile.tellg();
fontFile.seekg(0);
unsigned char *fontBuffer = new unsigned char[fontFileSize];
fontFile.read((char *)fontBuffer, fontFileSize);

FTBitmapFont* m_pFTFont = new FTBitmapFont(fontBuffer, fontFileSize);
m_pFTFont->Render("கா கி கீ கு கூ கெ கே கை கொ கோ கௌ");

最佳答案

欢迎来到“complex text layout”的精彩世界。祝您住宿愉快 ;)

简单地说,使用复杂文本布局的脚本在 Unicode 代码点和要呈现的字形之间没有简单的 1:1 映射。而泰米尔语就是这样一个脚本。

FTGL 只处理布局简单的脚本,因为复杂的文本布局复杂(非常复杂)。所以它无法正确地重现泰米尔文字。

您将需要使用类似 Harfbuzz 的布局引擎布局您的文本。 FTGL 仍然可以呈现脚本,但您需要 Harfbuzz 来告诉您要呈现字体中的哪些字形。

关于c++ - 使用 FTGL 在 openGL 中呈现复合字符字体的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35605714/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com