android系统裁剪之原生字体库精简

        字体库精简的目标是精简/system/fonts下的字体文件,达到压缩system大小的目的。

        由于本项目之用到了中英文,所以精简的方法是将其他语言的ttf字库全部去掉,也就是将/frameworks/base/data/fonts目录下的几个配置文件的相关内容全部注掉,之保留中英文的部分。

        最后精简的结果是只保留如下几个文件,其余都可删除,如果想知道字库的具体语种,可以下载fontcreator工具查看,或者直接将ttf名字进行百度。下面几个字库分别代表了中英文的字库。




裁剪文件大小作用是否可裁剪
Roboto-Bold.ttf112.0KDroidSans-Bold.ttf链接到了本字体上,android4.4以后系统实际使用的是本字体文件作为英文加粗的字库不可删除
DroidSans-Bold.ttf0系统默认使用的英文加粗字体,只是一个空壳不可删除
Roboto-Regular.ttf112.0K系统默认使用的英文字体,DroidSans.ttf链接到了本字库上不可删除
DroidSans.ttf0系统默认使用的英文字体,只是一个空壳不可删除
DroidSansFallback.ttf4.3M  系统使用的默认汉字字库不可删除


具体修改一般来讲只需要修改以下三个文件即可。

 frameworks/base/data/fonts/Android.mk
 frameworks/base/data/fonts/fallback_fonts.xml
 frameworks/base/data/fonts/system_fonts.xml
对于frameworks/base/data/fonts/Android.mk中定义的整段的编译,如果不需要的话要将include整个注释掉,如

diff --git a/frameworks/base/data/fonts/Android.mk b/frameworks/base/data/fonts/Android.mk
index 5cb51cd..b71b62d 100644
--- a/frameworks/base/data/fonts/Android.mk
+++ b/frameworks/base/data/fonts/Android.mk
@@ -44,26 +44,26 @@ ifeq ($(SMALLER_FONT_FOOTPRINT),true)
 droidsans_fallback_src := DroidSansFallback.ttf
 extra_font_files := DroidSans.ttf DroidSans-Bold.ttf
 else
-include $(CLEAR_VARS)
-LOCAL_MODULE := DroidSansEthiopic-Regular.ttf
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := MTLmr3m.ttf
-LOCAL_SRC_FILES := $(LOCAL_MODULE)
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_TAGS := optional
-LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
-include $(BUILD_PREBUILT)
+#include $(CLEAR_VARS)
+#LOCAL_MODULE := DroidSansEthiopic-Regular.ttf
+#LOCAL_SRC_FILES := $(LOCAL_MODULE)
+#LOCAL_MODULE_CLASS := ETC
+#LOCAL_MODULE_TAGS := optional
+#LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
+#include $(BUILD_PREBUILT)
+
+#include $(CLEAR_VARS)
+#LOCAL_MODULE := MTLmr3m.ttf
+#LOCAL_SRC_FILES := $(LOCAL_MODULE)
+#LOCAL_MODULE_CLASS := ETC
+#LOCAL_MODULE_TAGS := optional
+#LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts
+#include $(BUILD_PREBUILT)
对于下面extra_font_files和font_src_files定义的,将不用的行注释掉就行,保留中英文的行即可。



对于frameworks/base/data/fonts/fallback_fonts.xml文件,需要以family为单位进行注释,注释掉不需要的family。比如

--- a/frameworks/base/data/fonts/fallback_fonts.xml
+++ b/frameworks/base/data/fonts/fallback_fonts.xml
@@ -29,6 +29,7 @@
     all others.
 -->
 <familyset>
+<!--
     <family>
         <fileset>
             <file variant="elegant">DroidNaskh-Regular.ttf</file>
@@ -230,11 +231,13 @@
             <file>NotoColorEmoji.ttf</file>
         </fileset>
     </family>
+-->
     <family>
         <fileset>
             <file>DroidSansFallback.ttf</file>
         </fileset>
     </family>
+<!--
    <family>
         <fileset>
             <file>NotoSansGurmukhi-Bold.ttf</file>
@@ -300,6 +303,7 @@
             <file lang="ja">MTLmr3m.ttf</file>
         </fileset>
     </family>
+-->

对于frameworks/base/data/fonts/system_fonts.xml文件,只是掉不需要的file标签和family标签即可,方法跟上面类似。

以上修改完之后就可以删除out/。。。/system/fonts目录下的ttf文件,然后进行编译,验证下自己的修改了,如果有发现还有多余的其他字体文件仍然参与了编译,可以查下源码路径下/external目录下是否有其他的字体文件的makefile配置,如果有则进行注释就可以了。我在修改的时候就发现有两个文件NotoSansSymbols-Regular.ttf,NotoColorEmoji.ttf是在/external下进行配置的,注掉即可。

字体精简这部分其实还是挺简单的,只要找到makefile就很好下手。




  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值