【发布时间】:2012-06-12 18:02:47
【问题描述】:
我在我的 android 应用程序中使用自定义 .ttf 字体。我以通常的方式加载它:
myTypeface = Typeface.createFromAsset( getAssets(), "myTypeface.ttf");
然后我在我的活动中分配我的字体......非常简单的东西:
TextView tv = (TextView) findViewById(R.id.sample_text);
tv.setTextSize(12);
tv.setTypeface(App.myTypeface);
我遇到的问题是,在某些使用更高版本 API 的设备上(我在 Asus Transformer 的模拟器中特别注意到它),文本看起来稍微粗一些,宽度不太均匀,垂直方向更混乱结盟。在最后一部分,我的意思是某些字符在垂直方向上的位置比其他字符稍高或稍低,给文本带来一点过山车的感觉。
考虑下面的屏幕截图
这是在模拟器上呈现的文本,其分辨率和 dpi 与 Transformer 相同,但使用的是 Google API 级别 8。
看起来很标准,对吧?
现在考虑在具有相同分辨率和 dpi 但使用 Google API 级别 15 的模拟器中呈现的文本:
起初,文本可能看起来很相似,但您可能会注意到它看起来有点粗体。但是,请看“quick”中的“c”。你会注意到它比第一个渲染中的“c”更低,更高。您还会注意到,如果您查看单词“quick”中字符的底部,它们并没有在底部对齐。
这些问题可能看起来很小,但在有大量文字的屏幕上,它开始显得非常不专业。
有人看过这个,或者有解释吗?我希望在以后的 API 中使文本看起来统一。
非常感谢您的宝贵时间!
【问题讨论】:
-
肯定会出现一些不同的字体渲染。可能是抗锯齿,提示关闭。您能否查看 API 级别 8 和 API 级别 15 的
textView.getPaintFlags()的值并进行编辑? (@我,所以我收到通知,我会看看) -
@kcoppock 感谢您的回复。 getPaintFlags() 为两个 API 返回 257。
-
这看起来很相似,或者可能是 stackoverflow.com/questions/9036184/… 的副本。它从未真正得到回答。
-
@HandlerExploit 是的,当我在论坛中搜索此问题时,我查看了该帖子。它看起来确实很相似,但我认为他们从来没有真正指定过他们不喜欢字体的什么……而且从来没有回答过,所以我想我会特别问一下。 =) 不过,感谢您指出这一点。
-
我是提出这个问题的人,这听起来就像我们看到的确切问题。唯一的区别是我没有像你那样精确。
标签: android api fonts rendering typeface