通过Harfbuzz&amp ;;在文本编辑器中显示混合复杂脚本的FreeType

时间:2014-05-07 04:13:11

标签: text-editor freetype opentype harfbuzz

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

我需要一些指南:

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

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

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

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

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

    提前感谢您的帮助。

1 个答案:

答案 0 :(得分:3)

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

  2. 我不知道,我建议单独提问。

  3. 从整形器开始创建文本编辑器并非易事。你应该做双向,包线和...所有都有他们的挑战。我建议使用更高级别的抽象(pango)。例如,浏览器在支持这些方面做了很多工作。