2012-01-04 30 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,因爲它不支持它,因此您需要測試字體以確保它實際工作
相關問題