Agora você pode usar sobreposições de recursos de execução (RROs) para mudar fontes. Ao adicionar fontes personalizadas para criar um pacote de fontes, você pode usar fontes em temas e usar RROs para aplicar as personalizações.
Conclua estas tarefas:
- Criar um pacote de fontes
- Criar um pacote de sobreposição de dispositivo
- Usar a família de fontes do sistema adicionada
Uma estrutura de arquivo de exemplo e arquivos de exemplo são fornecidos em custom-fonts.zip. Faça o download e extraia esse arquivo localmente para uso próprio.
Criar um pacote de fontes
Para criar um pacote de fontes:
- Adicione todos os arquivos de fonte
ttf
ao pacote de fontes na partiçãovendor
. Exemplo:vendor/[oem]/fonts/[oem]-sans/
- Crie o arquivo
Android.mk
para o pacote de fontes. Exemplo:vendor/[oem]/fonts/[oem]-[fontname]/Android.mk
- Verifique se o módulo será instalado na partição
product
na pastaetc
. Para fazer isso, confirme se o módulo tem as seguintes flags:LOCAL_MODULE_CLASS := ETC LOCAL_PRODUCT_MODULE := true LOCAL_MODULE_PATH := $(TARGET_OUT_PRODUCT)/fonts
O exemplo de código fornecido acima ilustra uma definição completa de um módulo de pacote de fontes.
- Crie um arquivo chamado
fonts.mk
para o pacote de fontes e adicione os arquivosttf
de fontes aPRODUCT_PACKAGES
. Exemplo:vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk
Exemplo:
PRODUCT_PACKAGES := \ [font name].ttf \
Criar um pacote de sobreposição de dispositivo
- Crie um módulo chamado
fonts_customization.xml
para ser adicionado ao build. Esse módulo aponta para o arquivofonts_customization.xml
que contém as famílias de fontes e chama os arquivos de criação de todos os pacotes de fontes. Exemplo:vendor/[oem]/[device]_overlay/fonts/Android.mk
- Crie as famílias de fontes:
vendor/[oem]/[device]_overlay/fonts/fonts_customization.xml
O nível raiz do arquivo precisa ser uma tag
fonts-modification
. Adicione famílias de fontes para cada um dos pacotes de fontes abaixo deste elemento. Além disso, adicionecustomizationType="new-named-family"
a todas as famílias de fontes e verifique se cada uma delas tem um atributoname
. Esse nome é usado mais tarde para acessar a família de fontes. Esse arquivo precisa ser adicionado ao módulofonts_customizations.xml
definido anteriormente emAndroid.mk
.O exemplo fornecido acima contém um arquivo
fonts_customization.xml
válido. - Crie
fonts.mk
. Exemplo:vendor/[oem]/[device]_overlay/fonts/fonts.mk
- Adicione
fonts_customization.xml
à flagPRODUCT_PACKAGES
. - Chame cada um dos pacotes de fontes criados anteriormente.
$(call inherit-product-if-exists, vendor/[oem]/fonts/[oem]-[fontname]/fonts.mk)
- Adicione o módulo de fonte ao build em
PRODUCT_PACKAGES
e refaça o build. As fontes serão instaladas no sistema. - Verifique se os arquivos de fontes
ttf
estão na pasta/product/fonts
do dispositivo. - Verifique se
fonts_customization.xml
está em/product/etc/
no dispositivo.
Usar a nova família de fontes do sistema
Para usar a nova família de fontes do sistema:
<style name="customstyle"> <item name="android:fontFamily">customfontfamily</item> </style>