Android 5.0 (API 21) 无法呈现自定义字体/字体

Android 5.0 (API 21) fails to render custom fonts / typefaces

Android 5.0 似乎无法呈现自定义字体。此问题不会出现在 Android 5.0 之前,也不会出现在 Android 5.1 (API 22) 中。这是一个使用名为 "coaster" 的字体的示例,可在此处获取:http://www.dafont.com/coaster.font

API 21:

API 22:

有什么解释吗?

Google 承认这是 Android 5.0 中的一个问题,并已在 Android 5.1 中修复它:https://code.google.com/p/android-developer-preview/issues/detail?id=608&thanks=608&ts=1404735239

至于让自定义字体在 Android 5.0 上工作,在我上面链接的问题页面中有一个推荐的解决方法。这是 post #16 的问题。您需要将 TTF 字体文件转换为 TTX,然后再将其从 TTX 转换为 TTF。您可以使用此工具执行此操作:https://github.com/behdad/fonttools/

我发现这些指南对设置 fonttools 很有帮助:

Windows: http://glyphrstudio.com/ttx/

OSX:http://www.fontgeek.net/blog/?p=435

安装后,在终端或命令提示符中导航到您的 TTF 文件所在的目录,然后 运行 命令:

ttx font_file.ttf

其中 "font_file" 是您的字体文件的名称。这将在您当前所在的目录中输出一个 font_file.ttx 文件。然后,在这个新的 font_file.ttx 文件上,只需 运行 命令:

ttx font_file.ttx

这将输出一个新的字体 TTF 文件,您可以在 Android 项目中使用它。这些步骤对我有用。