如何更换Android系统默认字体(Android6.0)
16lz
2022-04-17
Android系统中通过Typeface.java加载字体:
frameworks/base/graphics/java/android/graphics/Typeface.java
private static void init() { // Load font config and initialize Minikin state File systemFontConfigLocation = getSystemFontConfigLocation(); File configFilename = new File(systemFontConfigLocation, FONTS_CONFIG);...}
该类初始化时File configFilename = new File(systemFontConfigLocation, FONTS_CONFIG);的FONTS_CONFIG为字体的配置文件:
static Typeface sDefaultTypeface; ... static final String FONTS_CONFIG = "fonts.xml";
该fonts.xml位于frameworks/base/data/fonts/fonts.xml
<?xml version="1.0" encoding="utf-8"?>.... NotoSansSC-Regular.otf NotoSansTC-Regular.otf ...
从该xml中发现zh-Hans字段代表中文简体的字体,zh-Hant字段代表中文繁体的字体,目前我们需要将其中的字体NotoSansSC-Regular.otf替换成想要的字体。
实例:将系统默认中文字体修改为宋体常规(simsun.ttc)。
1.把字体simsun.ttc文件copy到frameworks\base\data\fonts目录
2.修改frameworks/base/data/fonts/fonts.xml
simsun.ttc
2.修改frameworks\base\data\fonts\Android.mk
################################# Build the rest of font files as prebuilt.# $(1): The source file name in LOCAL_PATH.# It also serves as the module name and the dest file name.define build-one-font-module$(eval include $(CLEAR_VARS))\$(eval LOCAL_MODULE := $(1))\$(eval LOCAL_SRC_FILES := $(1))\$(eval LOCAL_MODULE_CLASS := ETC)\$(eval LOCAL_MODULE_TAGS := optional)\$(eval LOCAL_MODULE_PATH := $(TARGET_OUT)/fonts)\$(eval include $(BUILD_PREBUILT))endeffont_src_files := \ Clockopia.ttf \ AndroidClock.ttf \ AndroidClock_Highlight.ttf \ AndroidClock_Solid.ttf \ simsun.ttc
3.修改frameworks\base\data\fonts\fonts.mk文件
... ...PRODUCT_PACKAGES := \ DroidSansFallback.ttf \ DroidSansMono.ttf \ Clockopia.ttf \ AndroidClock.ttf \ AndroidClock_Highlight.ttf \ AndroidClock_Solid.ttf \ simsun.ttc \
4..在frameworks/base/data/fonts目录下单编,执行mm,将生成到对应项目的simsun.ttc文件push到system/fonts下。
5.将修改后的frameworks/base/data/fonts/fonts.xml push 到system/etc目录下,重启设备,系统默认字体就被替换为宋体常规(simsun.ttc)了。
更多相关文章
- Android文件图片上传的详细讲解(三)---模式回调类
- Android(安卓)Bluetooth 文件接收路径修改方法
- Android(安卓)Studio导入Android平台源码
- 看Android(安卓)短信的一些关键字
- Android(安卓)编译之android.mk
- Android(安卓)VideoView简单播放视频
- Android开发高级进阶02
- 用Android(安卓)NDK编译FFmpeg
- NPM 和webpack 的基础使用