2010-09-20 108 views
4

我的Android应用程序需要支持各种语言(如中文等)。他们大多数都在Ascender的DroidSansFallback.ttf文件中。Android:字体渲染问题.ttf> 3MB

https://android.googlesource.com/platform/frameworks/base/+/master/data/fonts

在某些Android手机,有DroidSansFallback.ttf,但有许多字形缺失,例如在美国分销的NexusOne上。根本没有亚洲字体字形,大部分只有拉丁字母和相关字符。

那该怎么办?

我向DroidSansFallback.ttf(我也尝试了其他来源的其他字体)的“资产”中添加了它,并在运行时使用Typeface Class对其进行了设置。

随着一些手机和一些.ttf文件,字体渲染完全搞砸了,意味着字母只是一行中的一些点。

经过深入分析,问题归结为:

  1. 小的.ttf文件似乎总是工作(< 200kB的)
  2. 大的.ttf文件不会在所有的(> 3MB)工作
  3. 如果手机安装了完整的DroidSansFallback.ttf(大约3.5MB),即使是1或2MB的字体也会被拧紧。如果手机只安装了一个“Lite”版本的DroidSansDallback.ttf(大约1MB),则3MB字体可以正常工作。

这里有什么问题吗?我错过了什么吗?它看起来像所有安装/使用的字体在一起不能大于somehwat〜4MB。

任何人都遇到过同样的问题?我在NexusOne(2.1),HTC Hero(2.1),SonyEricson Xperia(1.6)和Motorola MileStone(2.0)上试用过它们,都显示出相同的行为。

感谢您的任何提示。

+1

它确实看起来像一个bug。 – 2011-04-01 08:08:15

回答

0

设备上的内存不足。

您列出的所有设备都很旧。这些堆大小约为12MB。

如果可能的话,考虑使用中文文本已经预渲染的PNG。

+0

NexusOne拥有512MB的RAM(安装新内核后)。您是否建议在此系统上加载4MB字体是不可能的? – 2012-04-04 09:37:26

+1

在应用程序爆炸NexusOne之前,我可以分配超过300MB的空间。你为什么认为堆被限制在12MB? 使用重新呈现的PNG不适用于我的应用程序,我需要用户可编辑的文本。 – 2012-04-04 09:45:49