2012-01-04 62 views
2

我在想,的优势(除了有不同的字体)并根据使用自定义字体的产品的商标使用它吗?在Android上使用或不使用自定义字体

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

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

感谢

回答

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); 
     } 
    } 
} 
2

有一个在Android 2.1的一个已知的bug,其中WebView不显示自定义字体(通过CSS @字体面指定)。

另外,字体很大,并且相当大地增长APK。低带宽和每个带宽用户会讨厌你。

1

您可以添加自定义字体,使您的应用看起来很漂亮,从人群中脱颖而出,符合某些品牌标识等。另外,打包自己的字体可为您提供最终控制。制造商可以自由地为他们自己的皮肤改变标准主题(包括字体),例如HTC Sense,三星TouchWiz等)。

唯一真正的缺点是,你必须在你的apk文件中加入自定义字体(这会增加下载的大小),并且你需要在使用自定义字体的每个活动中使用样板代码(例如,你不能简单地指定自定义字体到textview/edittext等通过XML)。

旧版本的Android(即< 1.6)可能不支持您的字体,但截至今天,这是< 0.6%的市场。 http://developer.android.com/resources/dashboard/platform-versions.html

4

除了通过现有的回答中引用的缺点,还要考虑:

  • 您需要在法律上允许分发
  • 您需要拥有所有正确的字形字体的字体您打算支持的所有语言(并非所有字体都可以)
  • 以我的经验,Android无法处理每种字体并安静地回退到Droid Sans,因为它不支持它,因此您需要测试字体以确保它实际工作