簡單模式和組合模式的蘭亭黑字體對比結(jié)論
先給數(shù)據(jù)對比和結(jié)論會讓文章顯得更有價值企垦。
簡單模式的蘭亭黑字體(GBK編碼)帖渠,7MB桑涎,才22026個字即硼,如下兩圖逃片。
組合模式的蘭亭黑字體(GB18030編碼),2MB裂允,共35727個字损离。如下兩圖。
兩者的Unity真機Android進行Profile結(jié)果,如下兩圖窟勃。
構(gòu)建apk包結(jié)果秉氧,如下兩圖眷昆。
真機體驗和進行Profile,兩者并無明顯顯示差異汁咏、cpu time/gpu time并無明顯差別亚斋。
結(jié)論也就是說,換成組合模式的蘭亭黑后梆暖,我們多了CJK3國語言伞访,多了10000多個字,卻反倒節(jié)省了5MB內(nèi)存和2MB外存:洳怠:裰馈!
什么是簡單模式字體级解、什么是組合模式字體
簡單模式下的每一個字冒黑,都以字為單位進行矢量描述。如下圖勤哗。
組合模式下的每一個字,會進行部件拆分芒划,以部件為單位進行矢量描述冬竟,不同的字公用某些部件。如下圖民逼。
因為中文出現(xiàn)非常多公用的偏旁部首拼苍,所以笑诅,部件共享,為中文省下了異常多的矢量描述疮鲫。
更進一步的具體原理可參考Composite glyphs and functions - Microsoft吆你。
至于性能差異不大的原因個人推測主要兩個:
-
在Unity中文字運行時都是bake到紋理進行展示的。
- 簡單模式組合模式的消耗主要集中在矢量轉(zhuǎn)位圖俊犯,至于組合模式的部件索引妇多、部件偏移這兩個額外處理,可以實現(xiàn)得幾乎可以忽略不計瘫析。