3

这里有一些背景: 我已经下载了这个例子并让它在我的 Ubuntu 上运行。一切安好。我将自己的 OpenType 字体放入项目中,它也可以正常工作!我确保HarfBuzz 支持我的字体和我的语言。现在我需要更进一步。

我需要一些指南:

  1. 在上面的例子中,三种语言都有自己的字体来支持显示。我的意思是,这三种语言是分开渲染的(就我对代码的理解而言)。

    那么,如何让HarfBuzz在多种语言混合在一起时选择正确的字体并一次渲染呢?我的意思是,没有制作支持世界上所有语言的字体文件。

  2. 在这个例子中,中文脚本是垂直显示的(这正是我想要的),但是如果我将拉丁脚本的 text_directions 设置为HB_DIRECTION_TTB,这当然不是我想要的。我希望整个单词“拉丁”旋转 90 度。

那么,我该如何实现呢?如何在不破坏中文布局的情况下实现这一目标?

3 .最后但同样重要的是,在解决了上述问题后,我想制作一个文本编辑器来同时显示和编辑多种语言,同一个地方。我不知道我是否需要在 HarfBuzz 或 FreeType 上做一些工作,或者实现一个支持这种复杂文本布局的文本编辑器?有什么可以参考的例子吗?

提前感谢您的帮助。

4

1 回答 1

3
  1. HarfBuzz 只是在相同的脚本和方向性上进行整形,您应该首先拆分文本,猜测或找到该块的语言和方向(使用 ICU 或 smt else)然后将其发送到整形器。通常在 Linux 上为脚本查找正确安装的字体,您可以使用 fontconfig。

  2. 我不知道,我建议为此提出单独的问题。

  3. 从 shaper 开始制作文本编辑器并非易事。你应该做比迪烟、换行和……这些都有他们的挑战。我建议使用更高级别的抽象(pango)。例如浏览器做了很多来支持这些。

于 2014-05-07T06:43:59.920 回答