Android 字型

sunbird89629發表於2017-10-10

字型調研

對於Android系統,是不能自己安裝字型的,要修改字型就得有ROOT許可權,只有獲得了ROOT許可權才可以修改系統檔案(字型)。但是有的國產手機,例如我們配的測試及魅族note3,系統自帶了切換字型的功能,並且有一個字型商店。

字型是如何工作的(參考

字元是用點陣描述的向量構成的,然後通過自己維護的一個 “Character to Glyph Mapping”表來對映到具體的字元編碼上。我們在自己在只做字型檔檔案的時候,要通過專用的軟體在點陣中將每一個字描繪出來。最終打包成一個ttf檔案。

Android系統的內建字型

Android 中字型的單位(如何和畫素進行轉換)

字型格式種類 以及他們的區別

Android 自定義字型遇到的坑

  1. 字型檔案過大
  2. 字型重複載入對記憶體的消耗
  3. 在一行字中選用不同的字型

Android 系統中字型的適配

Android -全自動將APP的字型替換系統包含的任意字型

關於(fontello.com/)

Android 直裝字型庫apk,經兩臺手機(samsung note4 和 魅族note3)測試,均不可用。

android字型大小多螢幕適配(參考)

Android程式碼中使用自定義字型的幾種方式:

為什麼開啟字型檔案(*.ttf)的時候有好多問號(如下圖):

因為這個字型檔只實現了部分的字型,問號的地方是沒有實現的文字

字型格式

字型的單位分析(sp)(參考)

An sp is the same base unit (as dp), but is scaled by the user's preferred text size (it’s a scale-independent pixel), so you should use this measurement unit when defining text size (but never for layout sizes).
sp是和dp一樣的基本單位,但是他會按照使用者的系統設定進行縮放,所以你應該用他來定義字型的大小,但一定不要用他來定義View的大小。
所以當我們系統設定的字型大小是預設的時候,sp 和 dp的單位是一樣的。但當系統設定的字型大小是超大的時候,sp單位對應的字就會按一定比例放大。我們通多下面的程式碼就可以看到:
這個方法實現了將各種單位的尺寸轉換成畫素的功能,我們對比下dip和sp的轉換過程可以發現這一點

public static float applyDimension(int unit, float value,  
                                   DisplayMetrics metrics)  
{  
    switch (unit) {  
    case COMPLEX_UNIT_PX:  
        return value;  
    case COMPLEX_UNIT_DIP:  
        return value * metrics.density;  
    case COMPLEX_UNIT_SP:  
         return value * metrics.scaledDensity;  
     case COMPLEX_UNIT_PT:  
         return value * metrics.xdpi * (1.0f/72);  
     case COMPLEX_UNIT_IN:  
         return value * metrics.xdpi;  
     case COMPLEX_UNIT_MM:  
         return value * metrics.xdpi * (1.0f/25.4f);  
     }  
     return 0;  
}複製程式碼

(stackoverflow.com/questions/2…)

參考資料:

相關文章