O Google tem o compromisso de promover a igualdade racial para as comunidades negras. Saiba como.

Implementando Fallback de fonte personalizada

Em Android 11 e inferior, atualizando arquivos de fontes instalado em dispositivos em AOSP (no /system/fonts partição) ou as partições de fornecedores (nos /product/fonts ou /system/fonts partições) requer uma atualização do sistema do OEM. Esse requisito tem um impacto significativo na compatibilidade de emoji. Em Android 12 você pode usar o FontManager serviço do sistema para gerenciar arquivos de fontes instaladas e arquivos de fontes instaladas em dispositivo de atualização sem uma atualização do sistema.

O Android 12 apresenta três interações de processo; FontManagerService , Font Updater , e Application .

O FontManagerService é o sistema de gerenciamento central no servidor do sistema. FontManagerService armazena as últimas configurações de fonte do sistema pelo usuário por.

O FontUpdater é um atualizador fonte conectável que é confiável por uma signature|privileged verificação de permissão. Os FontUpdater comunica com o FontManagerService para obter, instalar, remover ou atualizar as configurações de fonte do sistema atual. O FontUpdater pode passar novos conteúdos de arquivos de fontes de comunicação mecanismos (IPC) entre processos. O FontManagerService salva o conteúdo para um local de armazenamento de leitura público, como nos /data/fonts arquivos. Este armazenamento é protegido. Ele pode ser escrito pelo FontManagerService somente, pela política do SELinux.

Quando os Application lançamentos de classe, ele passa as configurações de fonte do sistema como argumentos da bindApplication método; em seguida, ele inicializa as configurações de fonte para uso pelo processo de aplicação.

Implementando fontes personalizadas

Alguns OEMs instalam ou substituem arquivos de fontes no AOSP para mostrar suas marcas. O Android 12 oferece suporte a essa funcionalidade, mas adiciona requisitos para manter as fontes de emoji atualizadas nos dispositivos. Os OEMs que não modificam ou atualizam arquivos de fonte emoji não precisam usar este recurso.

Google atualiza os arquivos de fontes, especialmente os NotoColorEmoji arquivos através de GMS Core, por isso não modificar ou remover o NotoColorEmoji.ttf arquivo do /system partição, e não removê-lo a partir /system/etc/fonts.xml . Observe os seguintes três maneiras que você pode personalizar suas fontes:

  1. Substitua o NotoColorEmoji.ttf arquivo com uma fonte emoji da marca OEM.
  2. Modificar a NotoColorEmoji.ttf arquivo para suas necessidades do mercado local.
  3. Substitua ou modifique outros arquivos de fonte.

Se você não está modificando as fontes de emoji no AOSP, não é necessário fazer nada. Se você quiser personalizar fontes de emoji, use as instruções nas seções a seguir.

Substituindo NotoColorEmoji.ttf por fontes emoji da marca OEM

Para substituir o NotoColorEmoji.ttf arquivo com seu arquivo fontes emoji da marca OEM, coloque a fonte emoji pouco antes da cadeia fonte de recurso:

  1. Coloque o seu tipo de letra, chamado OEMCustomEmoji.ttf , no /system partição.
  2. Modificar /system/etc/fonts.xml como no seguinte código:

    <family lang="ko">
    <font weight="400" style="normal" index="1">NotoSansCJK-Regular.ttc</font>
    </family>
    <!-- ADD FOLLOWING LINE -->
    <family lang="und-Zsye">
       <font weight="400" style="normal">OEMCustomEmoji.ttf</font>
    </family>
    <!-- END OF MODIFICATION -->
    <family lang="und-Zsye">
       <font weight="400" style="normal">NotoColorEmoji.ttf</font>
    </family>
    <family lang="und-Zsym">
       <font weight="400" style="normal">NotoSansSymbols-Regular-Subsetted2.ttf</font>
    </family>
    

Modificação de NotoColorEmoji.ttf para necessidades do mercado local

Siga estas etapas para personalizar de acordo com as necessidades do mercado local:

  1. Crie a sua própria NotoColorEmoji arquivo com um nome diferente; por exemplo, nomeá-lo Modified\_NotoColorEmoji.ttf .
  2. Coloque-o antes do original NotoColorEmoji.ttf arquivo.

Depois de executar o passo 2, o glifo modificado apoiado por Modified\NotoColorEmoji.ttf mostra em vez do original NotoColorEmoji.ttf . O Google recomenda o seguinte:

  • Tenha apenas o glifo necessário nesta fonte.
  • Delegar glifos não modificados ao original NotoColorEmoji.ttf arquivo para que os seus dispositivos de receber quaisquer correções de design feitas em versões futuras emoji.

Remover glifos: Para remover glifos do NotoColorEmoji.ttf arquivo, siga os passos 1 e 2, e especificar glyph ID = 0 em sua cmap.

Use uma bandeira regional: Se o glifo alvo é uma bandeira regional, especificar o ID glifo como um código de país desconhecido. (Use country code = "ZZ" .)

Faça um glifo tofu: Você pode especificar explicitamente uma ID tofu glifo se você quiser usar um. Ao especificar glyphID = 0 , os interpreta de aplicativos relacionados que como “glifo não está disponível”. Por exemplo, quando você usa esse atributo, a Paint#hasGlyph aplicativo retorna false .

Substitua ou modifique outros arquivos de fonte

Para substituir ou modificar outras fontes, a personalização é semelhante ao que para modificar as tff arquivos para as necessidades do mercado local. Arquivos de fonte desconhecidos que são atualizados no AOSP em tempo de execução são ignorados e não são atualizados. O Google ignora fontes desconhecidas em seu dispositivo. Isso inclui arquivos de fontes que foram modificados a partir das fontes originais no AOSP.

Embora as atualizações de fontes sejam feitas pelo Google no GMS Core, o mecanismo geral de atualização de fontes está aberto a todos os OEMs. OEMs podem instalar updaters fontes adicionais usando as etapas pré-requisitos Reunião , Assinando arquivos de fontes , e Fazendo runtime fonte atualizações .

Pré-requisitos de reunião

O mecanismo de atualização da fonte usa o fs-verity recurso do kernel Linux. Verifique se o dispositivo é fs-verity compatível e incluir o certificado em seu dispositivo.

Arquivos de fonte de assinatura

Como os arquivos de fontes são recursos arriscados, eles devem ser verificados com chaves confiáveis. Reveja cuidadosamente todos os arquivos de fontes que devem ser atualizados e assine com sua chave privada. A assinatura deve ser fs-verity compatível.

Fazendo atualizações de fontes em tempo de execução

Os FontManger executa aplicativos sistema de fontes atualizações. O FontManager aplicativo fornece o status mais recente fonte do sistema instalado e a capacidade de arquivos de fonte de atualização com as assinaturas. Para chamar aplicativos de atualização, adicione a UPDATE_FONT signature|privileged permissão para o seu allowlist aplicativo , e para o seu manifesto .

Fornecer a UPDATE_FONT signature|privileged permissão para função atualizador do seu aplicativo.