【问题标题】:Android: Font Rendering Problems with .ttf >3MBAndroid:.ttf >3MB 的字体呈现问题
【发布时间】:2011-04-14 18:48:51
【问题描述】:

我的 Android 应用程序需要支持各种语言(如中文等)。其中大部分位于 Ascender 的 DroidSansFallback.ttf 文件中。

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

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

那该怎么办?

我将自己的 DroidSansFallback.ttf 副本添加到“资产”中(我还尝试了其他来源的其他字体)并在运行时使用字体类进行设置。

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

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

  1. 小 .ttf 文件似乎总能正常工作 (
  2. 大 .ttf 文件根本不起作用 (>3MB)
  3. 如果手机安装了完整的 DroidSansFallback.ttf(大约 3.5MB),即使是 1 或 2MB 的字体也会出错。如果手机只安装了 DroidSansDallback.ttf 的“精简版”(大约 1MB),则 3MB 字体可以正常工作。

这里有什么问题?我错过了什么吗?看起来所有已安装/使用的字体加起来不能超过 somehwat ~4MB。

有人遇到过同样的问题吗?我在 NexusOne (2.1)、HTC Hero(2.1)、SonyEricson Xperia (1.6) 和 Motorola MileStone(2.0) 上尝试过,都表现出相同的行为。

感谢任何提示。

【问题讨论】:

  • 它在我看来确实像一个错误。

标签: android fonts rendering


【解决方案1】:

您的设备内存不足。

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

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

【讨论】:

  • NexusOne 有 512MB 内存(安装新内核后)。您是否建议在此系统上无法加载 4MB 字体?
  • 在应用程序在 NexusOne 上崩溃之前,我可以分配超过 300MB 的空间。为什么你认为堆被限制为 12MB?使用重新渲染的 PNG 不是我的应用程序的选项,我需要用户可编辑的文本。
猜你喜欢
  • 2014-07-23
  • 1970-01-01
  • 1970-01-01
  • 2011-08-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多