Android字体简述
生活随笔
收集整理的這篇文章主要介紹了
Android字体简述
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
一、Android字體簡述Android是一個典型的Linux內核的操作系統。在Android系統中,主要有DroidSans和 DroidSerif兩大字體陣營,從名字就可以看出來,前者是無襯線字體,后者是襯線字體。具體來說,一共是這幾個字體文件:(位于 /system/fonts 目錄下,需要root權限查看)
上 面提到的這些字體中,除了 DroidSansFallback.tff ,其它的一律不包含中文字體。而 DroidSansFallback 中的中文字體,是一種類似于文泉驛微米黑的字體,只是它的字庫非常小,字符數量很少,估計只有 GB2312 的字符集,稍少見一些的字都是不包含的,比如我同學名字里有“祎”這個字,在聯系人里就顯示為一個方框。
二、替換字體這樣的小字庫是不能令人滿意 的,而且,這種字體看久也覺得厭了,特別是在 iReader (Android電子書閱讀軟件)中看久了,就會覺得筆劃越來越粗,長時間看了就疲勞了。那么替換字體也就顯得很自然了。Android用的是標準的 TrueType字體,因此只要把電腦里滿意的字體改名后直接復制到 /system/fonts 目錄下,用root權限覆蓋掉原來的字體文件就好了。
我在?這篇文章?中提到過,我嘗試了替換字體,我一開始是用的真正的Unicode的微米黑字體(這個字體的大小是4MB,系統原來的是3MB)替換的。但是有一些奇怪的問題。具體表述如下:
這種事情真是非常的令人討厭,我還因為這件事情誤格式化過一次microSD卡。(因為看不見按鈕上的字)
三、 問題何在?出現了這種問題,自然要想辦法去解決。我仔細觀察回想了一下,一般都是開機之后運行了一些比較耗RAM的程序才會出現這種問題。比如開機之后運 行Opera Mini 5,打開12個標簽以上,右上角的時間字體就會消失,Action Bar里的文字也會同時消失,這種問題就重現了。考慮到RAM用了多了之后字體就消失了,我推斷事情是這樣的:開機載入了字體,放在RAM里,但是這種新 替換的字體比系統自帶的字體文件體積大很多,所以需要更多的RAM,而在運行了一些大程序之后,RAM不夠了,字體文件就被踢出了RAM。
真的是這樣嗎?我當時認為的確是這樣的,所以我干脆決定不用新字體了,就用老字體吧,就把之前備份的老字體文件全部用Root Explorer覆蓋回去了,重啟。現在應該沒問題了吧?我故意運行了幾個大程序……結果問題又重現了。
這就奇怪了,最早用老字體是從來沒有這個問題的,換了新字體之后問題出現, ? 但是用備份文件恢復到老字體,怎么還是有問題呢?
在后來相當長的一段時間內,我一直想不通這件事情,甚至還憤怒地把DroidSansFallback.ttf給刪除了……當然,開機不能了。
重新用update.zip恢復了一下,冷靜下來思考,替換前和替換后有什么是改變了的呢?在Root Explorer再仔細看看……似乎是權限改變了!
Linux 文件系統里的文件都是有權限的,且與Windows文件系統里的權限概念有一些區別。三個權限者,Owner, Group, World(Other),每人都有三項權限,分別是 Read(r), Write(w) 和 Execute(x) 。其中代表Read的數字為4,代表Write的數字為2,代表Execute的數字為1,這樣就可以用1-7的自然數還表示不同的權限。比如R+W就是 6,R+W+X就是7,R+X就是5,等等。三個權限者分別排列,就有了755,777等這樣的代表權限組合的數字。
Linux的這套權限系統可以用chmod命令來修改,但是在Root Explorer里修改起來更加方便一些。
長按文件,然后就有一個Permissions的選項,點擊之,打開的窗口里就可以改權限了,當然前提是 mount as r/w。
如下面左圖,這是 /system/fonts 目錄下原生的一個文件,而右圖則是從 /sdcard 里復制進去的文件,對照兩張圖就可以看出權限發生了改變。(由644變成了075)
從圖中可以看到,原來的文件對于User來說是有R/W權限的,而從 /sdcard 里復制進來的文件對于User是沒有R/W權限的。 ? 這 就是問題所在了!這也很容易解釋,為什么最早不會有字體消失問題,然后替換了字體(從外面復制進來權限不正確的字體)后字體就消失了,但是用備份文件恢復 (重新又從外面復制進來字體)后,字體消失問題還是存在!這是因為在復制過程中,由于文件系統的不統一(ext2和FAT32),導致權限錯亂。
四、如何解決?知道了問題的所在,解決起來就非常容易了——在替換完字體之后不要急著重啟,一定要對照其它的文件,把新復制進來的那些文件的權限改成正確的644!
五、特別關照
看 上面這四幅圖,前三張是我在Android上實際截圖得到的,分別是用蘭亭黑、麗黑、雅黑作為默認字體。最后一張是Windows 7里微軟雅黑字體的顯示效果。需要注意的是,雖然我的系統里以注冊表方式加載了GDI++,但是我在截那張圖的時候是用GDI++Inject把 Notepad.exe的GDI++模塊卸載掉的,所以最后一張圖是沒有任何額外渲染的本來效果。
都說實踐出真知,通過這次替換我才真正嘗試出了 最適合Android的字體。同一個字體,在不同的系統里、以不同的方式渲染,顯示出來的效果也是有很大不同的。比如蘭亭黑在Ubuntu下面好看的,在 Android下就很一般,麗黑是Mac OS X的默認字體,有多漂亮大家肯定都見到過,但是在Android上的顯示效果呢?筆劃粗大、粘連,看得時間長了很容易眼疲勞。而微軟雅黑這款MS花了重金 打造的字體呢?它的Windows下的顯示效果……說真的,很差。至少不用第三方字體渲染的情況下很糟糕,可是,當我抱著試試看的態度把它復制到 Android之后,我才發現它的顯示效果如此之好:字面大、筆劃清晰、結構平穩、構架勻稱……簡直是Android下的極品字體啊。
這樣的字體 哪里有?心動的同學就不要到網上去搜索了,網上很多是修改版本的,雖然字體小,但是具體改了什么東西我就不清楚了,我不能保證它能像圖中顯示的那么好看, 所以……大家可以像我一樣,從Windows 7的字體目錄里復制。(默認是 C:\Windows\Fonts )?
- DroidSans-Bold.ttf? 粗體的無襯線字體(拉丁字母等)
- DroidSans.ttf? 常規的無襯線字體(拉丁字母等)
- DroidSansFallback.ttf? 常規的無襯線字體(中文字符等)
- DroidSansMono.ttf? ? 等寬的無襯線字體(拉丁字母等)
- DroidSerif-Bold.ttf? ? 粗體的襯線字體(拉丁字母等)
- DroidSerif-BoldItalic.ttf? ? 粗體+斜體的襯線字體(拉丁字母等)
- DroidSerif-Italic.ttf? ? 斜體的襯線字體(拉丁字母等)
- DroidSerif-Regular.ttf? ? 常規的襯線字體(拉丁字母等)
上 面提到的這些字體中,除了 DroidSansFallback.tff ,其它的一律不包含中文字體。而 DroidSansFallback 中的中文字體,是一種類似于文泉驛微米黑的字體,只是它的字庫非常小,字符數量很少,估計只有 GB2312 的字符集,稍少見一些的字都是不包含的,比如我同學名字里有“祎”這個字,在聯系人里就顯示為一個方框。
二、替換字體這樣的小字庫是不能令人滿意 的,而且,這種字體看久也覺得厭了,特別是在 iReader (Android電子書閱讀軟件)中看久了,就會覺得筆劃越來越粗,長時間看了就疲勞了。那么替換字體也就顯得很自然了。Android用的是標準的 TrueType字體,因此只要把電腦里滿意的字體改名后直接復制到 /system/fonts 目錄下,用root權限覆蓋掉原來的字體文件就好了。
我在?這篇文章?中提到過,我嘗試了替換字體,我一開始是用的真正的Unicode的微米黑字體(這個字體的大小是4MB,系統原來的是3MB)替換的。但是有一些奇怪的問題。具體表述如下:
- 只替換DroidSansFallback.ttf,則一些嘗試調用DroidSans和DroidSans-Bold的地方的字體都會顯示為方框,整個手機只有英文字體和一小部分的中文字體可以顯示,其它大部分都是方框。
- 如 果把 DroidSansFallback, DroidSans, DroidSans-Bold 三個字體文件都替換,則不會有方框,但是系統里再也區分不出粗體與普通字體了。而且還要考慮到字體文件大小的問題,有些版本的ROM刷了之后 /system 下的剩余空間是很小的,放三個大字體根本不現實。(后面要提到的麗黑是8MB,蘭亭黑是7M,雅黑則是14MB到20MB不等)
- 最詭異的來了,替換字體后,剛開機是沒有問題的,問題就在過了一段時間后,所有的字體都會消失!所謂消失,就是所有該有字的地方都變成了空白,空白一片。這種情況出現的沒有任何先兆,一般是開機用了一段時間就會有這種情況出現。如圖:
這種事情真是非常的令人討厭,我還因為這件事情誤格式化過一次microSD卡。(因為看不見按鈕上的字)
三、 問題何在?出現了這種問題,自然要想辦法去解決。我仔細觀察回想了一下,一般都是開機之后運行了一些比較耗RAM的程序才會出現這種問題。比如開機之后運 行Opera Mini 5,打開12個標簽以上,右上角的時間字體就會消失,Action Bar里的文字也會同時消失,這種問題就重現了。考慮到RAM用了多了之后字體就消失了,我推斷事情是這樣的:開機載入了字體,放在RAM里,但是這種新 替換的字體比系統自帶的字體文件體積大很多,所以需要更多的RAM,而在運行了一些大程序之后,RAM不夠了,字體文件就被踢出了RAM。
真的是這樣嗎?我當時認為的確是這樣的,所以我干脆決定不用新字體了,就用老字體吧,就把之前備份的老字體文件全部用Root Explorer覆蓋回去了,重啟。現在應該沒問題了吧?我故意運行了幾個大程序……結果問題又重現了。
這就奇怪了,最早用老字體是從來沒有這個問題的,換了新字體之后問題出現, ? 但是用備份文件恢復到老字體,怎么還是有問題呢?
在后來相當長的一段時間內,我一直想不通這件事情,甚至還憤怒地把DroidSansFallback.ttf給刪除了……當然,開機不能了。
重新用update.zip恢復了一下,冷靜下來思考,替換前和替換后有什么是改變了的呢?在Root Explorer再仔細看看……似乎是權限改變了!
Linux 文件系統里的文件都是有權限的,且與Windows文件系統里的權限概念有一些區別。三個權限者,Owner, Group, World(Other),每人都有三項權限,分別是 Read(r), Write(w) 和 Execute(x) 。其中代表Read的數字為4,代表Write的數字為2,代表Execute的數字為1,這樣就可以用1-7的自然數還表示不同的權限。比如R+W就是 6,R+W+X就是7,R+X就是5,等等。三個權限者分別排列,就有了755,777等這樣的代表權限組合的數字。
Linux的這套權限系統可以用chmod命令來修改,但是在Root Explorer里修改起來更加方便一些。
長按文件,然后就有一個Permissions的選項,點擊之,打開的窗口里就可以改權限了,當然前提是 mount as r/w。
如下面左圖,這是 /system/fonts 目錄下原生的一個文件,而右圖則是從 /sdcard 里復制進去的文件,對照兩張圖就可以看出權限發生了改變。(由644變成了075)
從圖中可以看到,原來的文件對于User來說是有R/W權限的,而從 /sdcard 里復制進來的文件對于User是沒有R/W權限的。 ? 這 就是問題所在了!這也很容易解釋,為什么最早不會有字體消失問題,然后替換了字體(從外面復制進來權限不正確的字體)后字體就消失了,但是用備份文件恢復 (重新又從外面復制進來字體)后,字體消失問題還是存在!這是因為在復制過程中,由于文件系統的不統一(ext2和FAT32),導致權限錯亂。
四、如何解決?知道了問題的所在,解決起來就非常容易了——在替換完字體之后不要急著重啟,一定要對照其它的文件,把新復制進來的那些文件的權限改成正確的644!
五、特別關照
- 字體是放在 /system/fonts 目錄下的,這個目錄屬于 /system 分區,因此你先要確保 /system 分區的剩余空間是夠的。
- /system 分區剩余空間不夠怎么辦?那就刪除自帶的程序。由于我做了Apps2SD,所以我的 /data 分區( /sd-ext 分區)的剩余空間是足夠的,那么就可以把系統自帶的程序移到 /sd-ext 下面?怎么移動呢?參照這篇文章:《如何把Android自帶程序移動到其它分區以騰出 /system 分區的空間》。
- 對 于屏幕顯示來說,還是無襯線字體比較適合,襯線字體么,還是讓它們在印刷上發揮作用吧。我看到有一些人把那些“華康少女簡體”之類的手寫襯線字體當作 Android的默認字體……這實在是不恰當的行為。雖然一開始會覺得很驚艷,但是時間長了之后眼睛會疲勞,對視力并不好。所以還是要選無襯線字體的好。
看 上面這四幅圖,前三張是我在Android上實際截圖得到的,分別是用蘭亭黑、麗黑、雅黑作為默認字體。最后一張是Windows 7里微軟雅黑字體的顯示效果。需要注意的是,雖然我的系統里以注冊表方式加載了GDI++,但是我在截那張圖的時候是用GDI++Inject把 Notepad.exe的GDI++模塊卸載掉的,所以最后一張圖是沒有任何額外渲染的本來效果。
都說實踐出真知,通過這次替換我才真正嘗試出了 最適合Android的字體。同一個字體,在不同的系統里、以不同的方式渲染,顯示出來的效果也是有很大不同的。比如蘭亭黑在Ubuntu下面好看的,在 Android下就很一般,麗黑是Mac OS X的默認字體,有多漂亮大家肯定都見到過,但是在Android上的顯示效果呢?筆劃粗大、粘連,看得時間長了很容易眼疲勞。而微軟雅黑這款MS花了重金 打造的字體呢?它的Windows下的顯示效果……說真的,很差。至少不用第三方字體渲染的情況下很糟糕,可是,當我抱著試試看的態度把它復制到 Android之后,我才發現它的顯示效果如此之好:字面大、筆劃清晰、結構平穩、構架勻稱……簡直是Android下的極品字體啊。
這樣的字體 哪里有?心動的同學就不要到網上去搜索了,網上很多是修改版本的,雖然字體小,但是具體改了什么東西我就不清楚了,我不能保證它能像圖中顯示的那么好看, 所以……大家可以像我一樣,從Windows 7的字體目錄里復制。(默認是 C:\Windows\Fonts )?
總結
以上是生活随笔為你收集整理的Android字体简述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MyCobot六轴机械臂的基本操作(二)
- 下一篇: 社群管理工具汇总,一篇文字全部搞定