您现在可以使用运行时资源叠加 (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的模块,以添加到构建中。此模块指向包含字体系列的fonts_customization.xml文件,并调用所有字体包的 make 文件。例如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下将字体模块添加到构建,然后重新构建。字体将安装在系统上。 - 验证
ttf字体文件是否位于设备上的/product/fonts文件夹中。 - 验证
fonts_customization.xml是否位于设备上的/product/etc/中。
使用新的系统字体系列
使用新的系统字体系列的步骤
<style name="customstyle">
<item name="android:fontFamily">customfontfamily</item>
</style>