如何在freetype中呈现组合的unicode字符?

如何在freetype中呈现组合的unicode字符?,unicode,fonts,freetype,text-rendering,unicode-normalization,Unicode,Fonts,Freetype,Text Rendering,Unicode Normalization,我在文档中似乎找不到任何关于这方面的信息,一直使用的函数是FT_Get_Char_Index(ftFace,I);,它只接受1个unicode代码点。但是组合字符呢,那些需要多个代码点的字符呢 我知道其中一些字符可以简单地进行unicode规范化,以表示为另一个(单个)代码点,但有些字符不能,对吗?我们如何处理这些问题 我正在制作一个通用文本编辑软件,并希望它支持所有的unicode。但是,也许多码点字符的问题太小,不值得麻烦?这些字符在一些主要的亚洲语言中不是很常见吗 如果不能用freetyp

我在文档中似乎找不到任何关于这方面的信息,一直使用的函数是FT_Get_Char_Index(ftFace,I);,它只接受1个unicode代码点。但是组合字符呢,那些需要多个代码点的字符呢

我知道其中一些字符可以简单地进行unicode规范化,以表示为另一个(单个)代码点,但有些字符不能,对吗?我们如何处理这些问题

我正在制作一个通用文本编辑软件,并希望它支持所有的unicode。但是,也许多码点字符的问题太小,不值得麻烦?这些字符在一些主要的亚洲语言中不是很常见吗


如果不能用freetype正确完成,应该怎么做?

如果我理解正确,如果不另外使用某种布局库,您将无法完成您想要的操作。布局库使用OpenType字体中的补充信息来定位组合标记(以及许多其他内容)。举个例子,假设你有序列U+0041,U+0301(拉丁大写字母A,结合锐标记)。一般来说,您不能将这两个标记与它们在渲染空间中的默认位置放在一起,因为锐角标记将与“A”的形状发生碰撞

布局库将为此序列分析字体的OpenType布局表,并返回可用于正确定位序列中每个项目的定位信息。例如,你给它一个序列,它可能会说,“把‘A’留在原处,向右移动50个单位,向上移动90个单位”(这比这个复杂得多,但希望能给你这个想法)