Recursos de fonte

Um recurso de fonte define uma fonte personalizada que você pode usar no seu app. As fontes podem ser arquivos individuais ou um conjunto de arquivos, conhecido como uma família de fontes e definido em XML.

Confira também como definir fontes em XML ou usar Fontes para download.

Pacote de fontes

Você pode agrupar fontes como recursos em um app. As fontes são compiladas em arquivos R e ficam disponíveis automaticamente no sistema como um recurso. É possível acessar essas fontes com ajuda do tipo de recurso font.

localização do arquivo:
res/font/filename.ttf (.ttf, .ttc, .otf ou .xml)
O nome do arquivo é usado como ID de recurso.
referência de recurso:
Em XML: @[package:]font/font_name
Sintaxe:
<?xml version="1.0" encoding="utf-8"?>
<font-family>
  <font
    android:font="@[package:]font/font_to_include"
    android:fontStyle=["normal" | "italic"]
    android:fontWeight="weight_value" />
</font-family>
elementos:
<font-family>
Obrigatório. Precisa ser o nó raiz.

Nenhum atributo.

<font>
Define uma única fonte dentro de uma família. Não contém nós filhos.

Atributos:

android:fontStyle
Palavra-chave. Define o estilo da fonte. Esse atributo é usado quando a fonte é carregada na pilha de fontes e substitui qualquer informação de estilo nas tabelas de cabeçalho da fonte. Se você não especificar o atributo, o app usará o valor das tabelas de cabeçalho da fonte. O valor constante é normal ou italic.
android:fontWeight
Número inteiro. A espessura da fonte. Esse atributo é usado quando a fonte é carregada na pilha de fontes e substitui qualquer informação de espessura nas tabelas de cabeçalho da fonte. O valor do atributo precisa ser um múltiplo de 100 de 100 até 900. Se você não especificar o atributo, o app usará o valor das tabelas de cabeçalho da fonte. Os valores mais comuns são 400 para peso normal e 700 para negrito.
Exemplo:
Arquivo XML salvo em res/font/lobster.xml:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/lobster_regular" />
    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/lobster_italic" />
</font-family>

Arquivo XML salvo em res/layout/ que aplica a fonte a uma TextView:

<?xml version="1.0" encoding="utf-8"?>
<EditText
    android:fontFamily="@font/lobster"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello, World!" />

Fonte para download

Um recurso de fonte disponível para download define uma fonte personalizada que você pode usar em um app. Esta fonte não está disponível no app. Em vez disso, a fonte é extraída de um provedor de fontes.

localização do arquivo:
res/font/filename.xml O nome do arquivo é o ID do recurso.
referência de recurso:
Em XML:@[package:]font/font_name
Sintaxe:
<?xml version="1.0" encoding="utf-8"?>
<font-family
    android:fontProviderAuthority="authority"
    android:fontProviderPackage="package"
    android:fontProviderQuery="query"
    android:fontProviderCerts="@[package:]array/array_resource" />
elementos:
<font-family>
Obrigatório. Precisa ser o nó raiz.

atributos:

android:fontProviderAuthority
String. Obrigatório. É a autoridade do provedor da fonte que define a solicitação da fonte.
android:fontProviderPackage
String. Obrigatório. O nome do pacote do provedor da fonte que vai ser usado para a solicitação. É usado para verificar a identidade do provedor.
android:fontProviderQuery
String. Obrigatório. A consulta de string da fonte. Consulte a documentação do provedor de fontes em relação ao formato dessa string.
android:fontProviderCerts
Recurso de matriz. Obrigatório. Define os conjuntos de hashes dos certificados usados para autorizar esse provedor. Isso é usado para verificar a identidade do provedor e só será necessário se o provedor não fizer parte da imagem do sistema. O valor pode apontar para uma lista única (recurso de matriz de string) ou uma lista de listas (recurso de matriz), em que cada lista representa um conjunto de hashes de assinatura. Consulte a documentação do seu provedor de fontes para conferir esses valores.
Exemplo:
Arquivo XML salvo em res/font/lobster.xml:
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android"
    android:fontProviderAuthority="com.example.fontprovider.authority"
    android:fontProviderPackage="com.example.fontprovider"
    android:fontProviderQuery="Lobster"
    android:fontProviderCerts="@array/certs">
</font-family>

Arquivo XML salvo em res/values/ que define a matriz do certificado:

<?xml version="1.0" encoding="utf-8"?>
<resources>
    <string-array name="certs">
      <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
    </string-array>
</resources>

Arquivo XML salvo em res/layout/ que aplica a fonte a uma TextView:

<?xml version="1.0" encoding="utf-8"?>
<EditText
    android:fontFamily="@font/lobster"
    android:layout_width="fill_parent"
    android:layout_height="wrap_content"
    android:text="Hello, World!" />