Android修改系统默认字体

本文介绍了如何在Android系统中修改默认字体,通过创建custom_fonts.xml配置文件,编译自定义字体ttf文件,修改系统编译脚本和代码,实现加载新字体,避免直接修改源生fonts.xml文件,降低耦合。
摘要由CSDN通过智能技术生成


前言

Android系统中的字体配置文件为/system/etc/fonts.xml
关于fonts.xml文件的解读可以参考
Android fonts相关知识以及fonts.xml解读
在这里插入图片描述
从图上可以看出,Android系统默认字体名为sans-serif,所使用的是Roboto系列的字体文件。如果不做另外的设置,那么我们写的程序默认会使用的就是sans-serif,也即是Roboto系列的字体。
因此,要修改系统默认的字体,一般的方法也即是修改/system/etc/fonts.xml文件,修改其中的sans-serif为使用其他的ttf文件。
我们在这里不修改源生的fonts.xml文件,而是新增custom_fonts.xml配置文件。主旨是要将字体配置文件以及对应的ttf文件放到vendor下以减小和源码的耦合。

一、方案

方案的主要工作是:

  • 将定制的custom_fonts.xml配置文件编译到系统中。
  • 将自定义的字体ttf文件编译到系统中。
  • 修改系统代码,使得优先加载使用custom_fonts.xml

1、将定制的custom_fonts.xml配置文件编译到系统中

/vendor/XXX/fonts/mydevice_overlay/fonts/Android.mk
这个mk指定了编译custom_fonts.xml模块,会将custom_fonts.xml文件编译到/system/etc/custom_fonts.xml

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := custom_fonts.xml
LOCAL_MODULE_CLASS := ETC
LOCAL_PREBUILT_MODULE_FILE := $(LOCAL_PATH)/custom_fonts.xml

include $(BUILD_PREBUILT)

/vendor/XXX/fonts/mydevice_overlay/fonts/fonts.mk
该mk用于添加custom_fonts.xml模块到系统,并引用了vendor/XXX/fonts/oem-lobster/fonts.mk

PRODUCT_PACKAGES := \
    custom_fonts.xml \

$(call inherit-product-if-exists, vendor/XXX/fonts/oem-lobster/fonts.mk)

/vendor/XXX/fonts/mydevice_overlay/fonts/custom_fonts.xml
custom_fonts.xml是从/system/etc/fonts.xml拷贝而来,我们对其进行一些修改,将调整默认字体从roboto调整为为其他(这里举例为Lobster-Regular.ttf)。如果有别的字体定义内容,也可以一并在此修改。

<familyset version="23">
    <!-- first font is default -->
    <family name="sans-serif">
        <font weight="100"
  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值