本文主要是介绍Android 4.4.2 系统源码字体库精简、添加,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
字体加载原理
首先先来阐述一下Android的字体加载原理,Android系统的字体配置文件位于workspace/frameworks/base/data/fonts/
文件夹下,分为 system_fonts.xml
和 fallback_fonts.xml
两个文件。当系统需要加载字体时,会优先从 system_fonts.xml
文件开始查找,如果没有找到再进入 fallback_fonts.xml
查找。以下是 system_fonts.xml
的部分文件:
<family><nameset><name>sans-serif</name><name>arial</name><name>helvetica</name><name>tahoma</name><name>verdana</name></nameset><fileset><file>Roboto-Regular.ttf</file><file>Roboto-Bold.ttf</file><file>Roboto-Italic.ttf</file><file>Roboto-BoldItalic.ttf</file></fileset>
</family>
我们称 <family> </family>
之间的内容为一个字体族, <nameset></nameset>
之间的内容为字体的名称,<fileset></fileset>
之间的内容为实际调用的字体文件,包括粗体,斜体等。Android字体调用的顺序便是从第一个字体族开始逐个字体族寻找,直到匹配上可以使用的字体便停止寻找。也就是说如果你想添加一些字体并让它显示的话,则要添加到能匹配它的字体之前,这是后话。
总之,Android对于字体就是这样的调用流程,明白了这个后面无论添加还是删除都会好理解一些。
精简字体库
一般来说, system_fonts.xml
下的字体是为英文等拉丁文字准备的,同上不予以精简(毕竟英语的使用面很广),对于字体的精简大都集中在 fallback_fonts.xml
文件上(看名字也知道这是备用的),这里包括了很多地区的字体以及各种表情符号等。
精简字体的方法:在 fallback_fonts.xml
文件中注释掉该字体所在的整个字体族,并找到调用他的 Android.mk
和fonts.mk
文件也将他注释掉,如
fallback_fonts.xml<!--
<family><fileset><file variant="elegant">DroidNaskh-Regular.ttf</file></fileset>
</family>
-->
fonts.mk# DroidNaskh-Regular.ttf \
Android.mk(要注释掉整个include)#include $(CLEAR_VARS)
#LOCAL_MODULE := NotoSansMalayalam-Regular.ttf
#LOCAL_SRC_FILES := $(LOCAL_MODULE)
#LOCAL_MODULE_CLASS := ETC
#LOCAL_MODULE_TAGS := optional
#LOCAL_MODULE_PATH := $(PRODUCT_OUT)/vendor/fonts
#include $(BUILD_PREBUILT)
精简完以后将整个系统源码 make
一下就可以刷入手机或虚拟机了
附上每个字体对应的语言及所在位置
混合字库(workspace/frameworks/base/data/fonts
)
- 显示不同的时间格式
- AndroidClock.ttf
- AndroidClock_Highlight.ttf
- AndroidClock_Solid.ttf
- 锁屏时钟
- Clockopia.ttf
- Emoji表情符号
- AndroidEmoji.ttf
- 波斯语、阿拉伯语、乌尔都语字库
- DroidNaskhRegular.ttf
- DroidNaskhUIRegular.ttf
- 亚美尼亚语
- DroidSansArmenian.ttf
- 阿姆哈拉语、提格雷语(埃塞俄比亚)
- DroidSansEthiopicRegular.ttf
- 中日韩字库,包含完整中文
- DroidSansFallback.ttf
- 格鲁吉亚语
- DroidSansGeorgian.ttf
- 希伯来语
- DroidSansHebrewBold.ttf
- DroidSansHebrewRegular.ttf
- 西里尔和拉丁字母扩充附加
- DroidSansMono.ttf
- 拉丁字母:衬线体
- DroidSerifBold.ttf
- DroidSerifBoldItalic.ttf
- DroidSerifItalic.ttf
- DroidSerifRegular.ttf
- 繁体中文字库
- MTLmr3m.ttf
- 谚文字母(朝鲜语、韩语)
- NanumGothic.ttf
- 官方缅甸语字库
- padauk.ttf
- 民间缅甸语字库
- ZawgyiOne.ttf
- 欧洲使用的拉丁、西里尔字母
- Roboto-Regular.ttf
- Roboto-Bold.ttf
- Roboto-Italic.ttf
- Roboto-BoldItalic.ttf
- Roboto-Light.ttf
- Roboto-LightItalic.ttf
- Roboto-Thin.ttf
- Roboto-ThinItalic.ttf
- RobotoCondensed-Regular.ttf
- RobotoCondensed-Bold.ttf
- RobotoCondensed-Italic.ttf
- RobotoCondensed-BoldItalic.ttf
Noto字库: workspace/external/noto-fonts
- 表情字符
- NotoColorEmoji.ttf
- 孟加拉语字库
- NotoSansBengali-Regular.ttf
- NotoSansBengali-Bold.ttf
- NotoSansBengaliUIBold.ttf
- NotoSansBengaliUIRegular.ttf
- 印度语字库
- NotoSansDevanagari-Regular.ttf
- NotoSansDevanagari-Bold.ttf
- NotoSansDevanagariUIBold.ttf
- NotoSansDevanagariUIRegular.ttf
- NotoSansDevanagari-Regular.ttf
- 卡纳达语字库(印度)
- NotoSansKannada-Regular.ttf
- NotoSansKannada-Bold.ttf
- NotoSansKannadaUIBold.ttf
- NotoSansKannadaUIRegular.ttf
- 高棉语字库(柬埔寨)
- NotoSansKhmer-Regular.ttf
- NotoSansKhmer-Bold.ttf
- NotoSansKhmerUIBold.ttf
- NotoSansKhmerUIRegular.ttf
- 老挝语字库
- NotoSansLao-Regular.ttf
- NotoSansLao-Bold.ttf
- NotoSansLaoUIBold.ttf
- NotoSansLaoUIRegular.ttf
- 马拉雅拉姆文字库(印度)
- NotoSansMalayalam-Regular.ttf
- NotoSansMalayalam-Bold.ttf
- NotoSansMalayalamUIBold.ttf
- NotoSansMalayalamUIRegular.ttf
- 泰米尔语字库(印度、斯里兰卡、新加坡)
- NotoSansTamil-Regular.ttf
- NotoSansTamil-Bold.ttf
- NotoSansTamilUIBold.ttf
- NotoSansTamilUIRegular.ttf
- 泰卢固语(印度)
- NotoSansTelugu-Regular.ttf
- NotoSansTelugu-Bold.ttf
- NotoSansTeluguUIBold.ttf
- NotoSansTeluguUIRegular.ttf
- 泰语字库
- NotoSansThai-Regular.ttf
- NotoSansThai-Bold.ttf
- NotoSansThaiUIBold.ttf
- NotoSansThaiUIRegular.ttf
NanumGothic(workspace/external/naver-fonts
)
- 韩文字体
- NanumGothic.ttf
- NanumGothicBold.ttf
添加字体
添加字体这块我就直接给个链接啦,因为本人也没有尝试过,所以不敢妄言啊。
- 优雅并极客地添加/更改Android系统的字体
- 安卓深入字体配置文件
ICU语言包精简
最后,如果大家还想要对语言包进行精简的话,可以参考我的另一篇文章
Android 4.4.2 ICU 语言包 精简、裁剪、定制、本地化
参考资料
Android字库文件简介
原文链接:http://chenggoi.com/2015/01/07/Android_Fonts_Customizing/,转载请注明出处。
这篇关于Android 4.4.2 系统源码字体库精简、添加的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!