Android添加系统字体fonts

文章目录

  • 一、product下预置新字体
    • 1.预置fonts_customization.xml文件
    • 2.预置ttf文件
    • 3.在系统的编译mk中添加对此新增mk的引用
  • 二、字体使用


一、product下预置新字体

系统源生提供了定制化增加字体文件的方式,可以在不修改源生代码的情况下进行定制增加。

product下的预置参考了google提供的预置方式。
Adding Custom Fonts | Android Open Source Project
模板代码文件为custom-fonts.zip文件

方案的主要工作是:

  • 将定制的fonts_customization.xml配置文件编译到系统中。
  • 将自定义的字体ttf文件编译到系统中。

Android添加系统字体fonts_第1张图片

1.预置fonts_customization.xml文件

mydevice_overlay/fonts/Android.mk

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_MODULE := fonts_customization.xml
LOCAL_MODULE_CLASS := ETC
LOCAL_PREBUILT_MODULE_FILE := $(LOCAL_PATH)/fonts_customization.xml
LOCAL_PRODUCT_MODULE := true

include $(BUILD_PREBUILT)

mydevice_overlay/fonts/fonts.mk

PRODUCT_PACKAGES := \
    fonts_customization.xml \

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

mydevice_overlay/fonts/fonts_customization.xml
这个文件是增加了一个名为lobster的字体,使用的字体文件为Lobster-Regular.ttf

<fonts-modification version="1">
        <family customizationType="new-named-family" name="lobster">
                <font weight="400" style="normal">Lobster-Regular.ttffont>
        family>
fonts-modification>

2.预置ttf文件

/fonts/oem-lobster/fonts.mk

PRODUCT_PACKAGES := \
    Lobster-Regular.ttf \

/fonts/oem-lobster/Android.mk

LOCAL_PATH := $(call my-dir)

# 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_PRODUCT)/fonts)\
$(eval LOCAL_PRODUCT_MODULE := true) \
$(eval include $(BUILD_PREBUILT))
endef

font_src_files := \
    Lobster-Regular.ttf \

$(foreach f, $(font_src_files), $(call build-one-font-module, $(f)))

build-one-font-module :=
font_src_files :=

上传/fonts/oem-lobster/Lobster-Regular.ttf文件

3.在系统的编译mk中添加对此新增mk的引用

例如/device/common/common.mk

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

二、字体使用

之后,在应用中便能够使用lobster字体了

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="text"
        android:fontFamily="lobster"/>

你可能感兴趣的:(android)