1

我想要什么

我想将 OpenType 字体放在我的资产文件夹中,并用于在我的 Android 应用程序中为使用复杂文本布局 (CTL)Typeface.createFromAsset的语言呈现 Unicode 文本。

背景

我想为传统的蒙古文字做这个,但对于其他语言,如泰语、阿拉伯语、印度语和许多少数民族语言,这是同样的问题(所以我听说)。OpenType 字体已经包含正确显示文本所需的信息。问题是并非所有软件都支持 OpenType 渲染。有些会,但有些不会。据我所知,Android 过去没有,但现在可能有?

我的问题

Android Lollipop 现已推出。Android 中是否支持 OpenType 字体?

如果仍然没有什么容易的,那么过程是什么?我听说过 Pango 和 Harfbuzz(声称可以与 Android 一起使用)之类的东西,但我还没有找到任何简单的说明或教程来说明如何实现它们。我发现的最接近的东西是Indic text renderer,但它远非易于理解。

StackOverflow 上的相关问题

这些问题表明人们对这个话题很感兴趣,但在我看来,这些问题并没有得到令人满意的回答。其中一些也已过时。我想知道是否有当前的解决方案。

我试过的

我编写了自己的渲染引擎来显示传统的蒙古语 Unicode 文本。但是,如果已经有可用的 OpenType 字体,那么为特定语言编写渲染引擎就是在重新发明轮子。此外,它不容易适应其他语言。

4

2 回答 2

2

如果您想使用 Harfbuzz 来执行此操作,我已经编写了使用 Harfbuzz 实现文本整形器的简单指南:http ://www.simon-cozens.org/content/duffers-guide-fontconfig-and-harfbuzz

这应该让您从字体选择到知道应该使用哪些字形以及将它们放在输出中的什么位置。

于 2015-01-07T06:40:04.000 回答
0

我对蒙古语没有特别的经验,但 Lollipop 终于介绍了Paint.setFontFeatureSettings()它采用遵循CSS 格式的字符串,提供“对 OpenType 字体功能的低级控制”!

于 2014-12-27T20:26:51.733 回答