字型調研
對於Android系統,是不能自己安裝字型的,要修改字型就得有ROOT許可權,只有獲得了ROOT許可權才可以修改系統檔案(字型)。但是有的國產手機,例如我們配的測試及魅族note3,系統自帶了切換字型的功能,並且有一個字型商店。
什麼是字型(參考)
字型是如何工作的(參考)
字元是用點陣描述的向量構成的,然後通過自己維護的一個 “Character to Glyph Mapping”表來對映到具體的字元編碼上。我們在自己在只做字型檔檔案的時候,要通過專用的軟體在點陣中將每一個字描繪出來。最終打包成一個ttf檔案。
Android系統的內建字型
Android 中字型的單位(如何和畫素進行轉換)
字型格式種類 以及他們的區別
Android 自定義字型遇到的坑
- 字型檔案過大
- 字型重複載入對記憶體的消耗
- 在一行字中選用不同的字型
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…)