您现在可以使用运行时资源叠加层 (RRO) 来更改字体。通过添加自定义字体来制作字体包,您可以在主题背景中使用字体,并使用 RRO 应用自定义设置。
完成以下任务:
custom-fonts.zip 中提供了示例文件结构及示例文件。请下载此文件,然后将其解压缩到本地位置,以供您自己使用。
制作字体包
如需制作字体包,请执行以下操作:
- 将所有字体
ttf
文件添加到vendor
分区中的字体包内。例如:vendor/[oem]/fonts/[oem]-sans/
- 为字体包创建
Android.mk
文件。例如:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- 确保模块将安装在
product
分区的etc
文件夹中。为此,请确认该模块是否具有以下标志:LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
上面提供的示例代码展示了字体包模块的完整定义。
- 为字体包创建一个名为
fonts.mk
的文件,然后将字体ttf
文件添加到PRODUCT_PACKAGES
中。例如:vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
例如:
PRODUCT_PACKAGES := \ [font name].ttf \
创建设备叠加层软件包
- 创建一个名为
fonts_customization.xml
的模块,以供添加到 build 中。此模块指向包含字体系列的fonts_customization.xml
文件,并会调用所有字体包的 Makefile。例如:vendor/[oem]/[device]_overlay/fonts/Android.mk
- 创建字体系列:
vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml
该文件的根级别必须是
fonts-modification
标记。为此元素下的每个字体包添加字体系列。此外,请向每个字体系列添加customizationType="new-named-family"
,并确保每个字体系列都具有name
属性。此名称稍后将用于访问相应的字体系列。必须将此文件添加到先前在Android.mk
中定义的fonts_customizations.xml
模块内。上面提供的示例包含有效的
fonts_customization.xml
文件。 - 创建
fonts.mk
。例如:vendor/[oem]/[device]_overlay/fonts/fonts.mk
- 在
PRODUCT_PACKAGES
标志下添加fonts_customization.xml
。 - 调用先前创建的每个字体包。
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- 将字体模块添加到
PRODUCT_PACKAGES
下的 build 中,然后重新构建。相应字体将安装到系统中。 - 验证
ttf
字体文件是否位于设备上的/product/fonts
文件夹中。 - 验证
fonts_customization.xml
是否位于设备上的/product/etc/
文件夹中。
使用新的系统字体系列
如需使用新的系统字体系列,请使用以下代码:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>