在Android上使用或不使用自定义字体

时间:2012-01-04 18:17:28

标签: android fonts

我想知道,优点(除了有不同的字体外)是什么,并根据使用自定义字体的产品的商标使用它?

但更重要的是,真正的缺点是什么?我在这个答案https://stackoverflow.com/a/4734610/327011中读到,至少OTF存在问题,根据PPI,其中一些问题在特定设备中表现得更多。

那么,对于那些有用的人和那些没有使用的人,因为他们认为不应该,你有什么意见和论点?

由于

4 个答案:

答案 0 :(得分:4)

除了现有答案引用的缺点之外,还要考虑:

  • 您需要一种法律允许分发的字体
  • 你需要一个字体,其中包含你想要支持的所有语言的所有正确的字形(并非所有字体都支持)
  • 根据我的经验,Android无法处理所有字体并且悄然回到Droid Sans那些不支持的字体,所以你需要测试你的字体以确保它真正起作用

答案 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);
        }
    }
}