我想知道,优点(除了有不同的字体外)是什么,并根据使用自定义字体的产品的商标使用它?
但更重要的是,真正的缺点是什么?我在这个答案https://stackoverflow.com/a/4734610/327011中读到,至少OTF存在问题,根据PPI,其中一些问题在特定设备中表现得更多。
那么,对于那些有用的人和那些没有使用的人,因为他们认为不应该,你有什么意见和论点?
由于
答案 0 :(得分:4)
除了现有答案引用的缺点之外,还要考虑:
答案 1 :(得分:2)
Android 2.1中存在一个已知错误,其中WebView
不显示自定义字体(通过CSS @ font-face指定)。
此外,字体很大并且大大增加了APK。低带宽和按带宽付费的用户会讨厌你。
答案 2 :(得分:1)
您可以添加自定义字体,让您的应用看起来漂亮,脱颖而出,符合某些品牌标识等。另外,打包您自己的字体可让您获得最终控制权。制造商可以自由更改自己皮肤的标准主题(包括字体),例如HTC Sense,三星TouchWiz等。
唯一真正的缺点是你必须在apk中包含自定义字体(这会增加下载大小),并且在每个使用自定义字体的活动中都需要样板代码(即你不能简单地将自定义字体分配给textview / edittext等通过xml)。
较旧版本的Android(即&lt; 1.6)可能不支持您的字体,但截至目前为止<0.6%的市场。 http://developer.android.com/resources/dashboard/platform-versions.html
答案 3 :(得分:1)
除了CommonsWare所说的(这是我第一个接受的答案),我发现了一个主要的错误,在使用自定义字体时会造成内存泄漏:
http://code.google.com/p/android/issues/detail?id=9904#c7
因此,我倾向于认为使用它们不是一个好的意识形态..或者至少在你使用它们时要小心!
如果确实需要使用它们,可以使用它来避免内存泄漏的最大部分:
public class Typefaces {
private static final String TAG = "Typefaces";
private static final Hashtable<String, Typeface> cache = new Hashtable<String, Typeface>();
public static Typeface get(Context c, String assetPath) {
synchronized (cache) {
if (!cache.containsKey(assetPath)) {
try {
Typeface t = Typeface.createFromAsset(c.getAssets(),
assetPath);
cache.put(assetPath, t);
} catch (Exception e) {
Log.e(TAG, "Could not get typeface '" + assetPath
+ "' because " + e.getMessage());
return null;
}
}
return cache.get(assetPath);
}
}
}