iPhone 發來的顏文字在 Android 手機上顯示為方塊,如何解決?

如圖所示,這應該是Android用戶長期以來的一大痛苦了吧……

(請不要用「換iPhone」當解決方法)


問題問的是顏文字,和 emoji 沒有關係的。

這種問題最有可能的原因就是你的手機修改過字體,使用了字符集較小的字體,不包含那些特殊符號(顏文字使用到了很多特殊符號)。之前在 G+ 上某用戶發了一個截圖,說他的手機連「屌」字都顯示成方框了,大家一看就指出系統字體被修改過(恐怖的是用戶自己都不知道)。

Android 系統包含很多字體,一般對應了各種語言,系統顯示文字的時候,會對照系統內的字體 fallback(回退)順序,如果某個字體不包含某個字元,就到序列中的下一個字體中去找,以此類推,如果按順序找遍所有字體,都無法顯示某個字元,就會顯示成方塊。

在這個 fallback 序列中排最後的就是 DroidSansFallback.ttf,它包含了漢字和各種特殊符號,總共五萬多個字元。而某些定製 ROM 或者字體修改軟體,為了修改系統字體,會用一些字符集比較小的常見中文字體(比如華康少女體),替換掉原來的 DroidSansFallback.ttf。這樣有些本來能正常顯示的特殊符號就顯示成方塊了。解決的方法,就是到一個沒有修改過的系統中拷一個原版的 DroidSansFallback.ttf,替換掉現在的字體,並設置相應許可權(用一些改字體軟體也可以做到。)

參考:

  • 字體話題中說的 fallback 具體是什麼意思?
  • 怎樣科學地給 Android(4.x)換字體 - 王成的專欄 - 知乎專欄

* * *

既然牽扯到了 emoji 那就多說幾句。理論上 Android 從 4.1 開始就是原生支持 emoji 的(AndroidEmoji.ttf),4.4 之前是黑白的機器人,4.4 開始黃色的大拇指(Google+ 風格),但是無論那種都比蘋果風格的可愛一萬倍有木有!!!所以我覺得很多應用內嵌了蘋果風格的 emoji,直接無視了 Android 自帶的更可愛的 emoji,是很反人類的!!!


盡量使用跨平台的顏文字.


你這不是有圖了嘛,拿來對照著看不就好了。


花費數小時,各種搜索、碰壁與試錯……終於成功。

試錯:
1)試了目前排名第一 @王成 的方法,替換
DroidSansFallback.ttf 回到原生 Android 版本,雖然解決了某些符號變方塊的問題,但在我的華為 EMUI3.1 系統上,又出現新的「中」字變方塊的副作用;
2)試了 @倪焱石 的方法,安裝 Google 鍵盤,再啟用「 Emoji For English Words 」,但我安裝了, Google 鍵盤並沒有這一項供啟用。
3)試了 迷途知返 來自應用 iFont愛字體 的評論 的方法,替換漢儀旗黑,但事實證明,這位網友也不懂,以訛傳訛。

最終,親自試驗成功,且尚未見到副作用 的方法,敘述如下:
1)先把 Symbola.ttf、unifont.ttf、Quivira.otf 這三個包含特殊符號最全的字體,複製進 /system/fonts/ 下。字體文件下載地址:baidu.com 的頁面
2)修改/system/etc/ 下的 fonts.xml 和 fallback_fonts.xml 兩個配置文件(如果 Android5.0 以下,則只需修改 fallback_fonts.xml 即可)。搜索DroidSansFallback.ttf,在對應 DroidSansFallback.ttf 段落緊接著的下面,模仿原文件的格式,添加上面三個符號字體的對應段落,使得符號字體在字體fallback序列中。
(如果你看不懂這一步怎麼改,請先閱讀 如何在 Android Lollipop (Android 5.0) 下更換字體? - 王成的回答,裡面詳細說了這兩個xml的格式)
3)重啟手機,大功告成! 這時打開該頁面 迷途知返 來自應用 iFont愛字體 的評論 測試,所有符號應該全部正常顯示。

總結:該方法僅添加了符號字體到 Fallback 最末端,理論上無副作用,不干擾原先的中英文字體,而且能切實解決 顏文字/emoji/特殊符號(隨便怎麼稱呼,本質都是Unicode) 變方塊的問題。


第三那項…你的手機連一二三也顯示不了嗎…快換字體吧…


我拿到安卓機第一件事就是把字體更換成微軟雅黑,所以沒發現還有這個問題。我不僅自己在用,我還推薦給所有我認識的人用。經我手裡刷機的,我也全給換成了微軟雅黑。
我相信,我用完以後是這個樣子,你們用完以後也是這個樣子!


其實就是個字體文件問題。你手機上的默認字體不支持emoji。下載個支持emoji的字體換到原生的就可以了。比如用這個DroidSansFallback.ttf換掉原來的/system/fonts下面的字體文件就行(需要root)

簡單點的,如果是原生的安卓4.1以上版本,可以通過設置-&>語言和輸入法-&>Google鍵盤(設置)-&>附加詞典-&>Emoji For English Words。安裝了就可以看了。不過顯示的效果不完全和iPhone上一樣。安卓上大部分都是胖胖的。
其他版本,可以想辦法裝emoji字體或者鍵盤,比如下面這些(可能需要Root)
Emoji Keyboard
Handcent Emoji Plugin
Emoji For Android Install ROOT
Emoji Font Updater (root)


推薦閱讀:

為什麼用戶很長時間不更新 app?
小米公司為什麼不按照 GPL 協議要求公開手機的內核?
Andriod 遊戲中成功的有哪些?
開發者到底需不需要重視 Android 平板?怎樣做才能避免錯過市場趨勢,又不會過早地投入資源?
Android 市場目前最大的尷尬不是軟體數量,而是質量及安全,Google 如何才能扭轉這一被蘋果鄙視的困局呢?

TAG:iOS | Android | iOSvsAndroid | 字元表情 |