【问题标题】:How to render combined unicode characters in freetype?如何在freetype中呈现组合的unicode字符?
【发布时间】:2012-04-16 15:20:42
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: unicode fonts freetype text-rendering unicode-normalization


    【解决方案1】:

    如果我理解正确,如果不额外使用某种布局库,您将无法做您想做的事。布局库使用 OpenType 字体中的补充信息来定位组合标记(以及许多其他内容)。例如,假设您有序列 U+0041、U+0301(拉丁文大写 A,结合 Acute Mark)。一般来说,您不能将这两者与它们在渲染空间中的默认位置一起拍打,因为 Acute Mark 会与“A”的形状发生碰撞。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-05-12
      • 2011-08-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多