1

我想在应用程序中呈现 Unicode 字符,并且我大致了解如何使用 freetype 处理标准拉丁字符。但是,对于具有不同布局和形状的其他语言,我不确定如何从 UTF-8 编码字符串中获得的一组字符变为:

  1. 选择合适的字体来显示字符

  2. 为角色选择正确的布局(LTR、RTL、TTB)

这些数据是否包含在 unicode 字符本身中(我不确定 Web 浏览器之类的其他应用程序如何弄清楚如何呈现文本)?

对于给定的 Unicode 字符,如何确定第 1 点和第 2 点?Freetype 有一些很棒的文档,并且谈论了很多关于使用不同布局的内容,但我没有看到您将如何从角色本身中提取所述信息。

我还快速浏览了 Harfbuzz,但找不到任何文档。有一个示例显示如何设置和使用 Harfbuzz 来布局某些语言,使用 Freetype 渲染字形,但该示例明确将布局、字体和语言信息传递给 Harfbuzz。

当你事先不知道这些事情时,你会怎么做?

这适用于移动应用程序,理想情况下,使用的库/解决方案将具有许可许可证。

4

1 回答 1

2

Unicode 字符代码点只对字符本身进行编码;它没有提供有关要使用的字体、布局或其他任何信息的信息。为了获取有关布局等的信息,Unicode 提供了许多文件,例如UnicodeData.txt,您可以下载和使用这些文件。至于字体,每种字体都应该提供某种描述符文件,例如每个字符的宽度、高度和深度;这些文件还可用于确定字体支持哪些字符。

于 2014-04-10T17:43:18.160 回答