在Android中支持使用OpenType字体的复杂文本布局

我想要什么

我想在我的assets文件夹中放入一个OpenType字体,并使用Typeface.createFromAsset在我的Android应用程序中为使用complex text layout (CTL)的语言呈现Unicode文本.

背景

我想在traditional *n script这样做,但对于其他语言,如泰语,阿拉伯语,印度语和许多少数民族语言,它是同一个问题(我听说). OpenType font已包含正确显示文本所需的信息.问题是并非所有软件都支持OpenType渲染. Some do,但其他人没有.从我可以收集到的,Android不习惯,但也许现在呢?

我的问题

Android Lollipop现在已经发布了. Android中是否支持OpenType字体?

如果还没有什么容易的话,那么过程是什么?我听说过Pango和Harfbuzz(which claims to work with Android)之类的东西,但我没有找到任何关于如何实现它们的简单说明或教程.我发现的最接近的是Indic text renderer,但它很难理解.

有关*的相关问题

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

> Use OpenType font features in Android
> Display interception and support non-latin or complex scripting language in Andorid
> CTL (Complex Text Language) support in Android(原文如此)
> Indic Language Support for SDK but not PhoneGap
> HarfBuzz getting started
> indic-text-renderer using harfbuzz and freetype

我试过了什么

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

解决方法:

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

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

上一篇:python – 让Anaconda的tkinter知道系统字体或为Anaconda安装新字体


下一篇:java – 在jdialog框中格式化文本