Recursos de fuente

Un recurso de fuente define una fuente personalizada que puedes usar en tu app. Las fuentes pueden ser archivos individuales o una colección de varios, conocido como "familia de fuentes" y definido en XML.

También consulta cómo definir fuentes en XML o usar fuentes descargables.

Paquete de fuentes

Puedes agrupar las fuentes como recursos de una app. Las fuentes se compilan en un archivo R y están disponibles automáticamente en el sistema como recurso. Luego, puedes acceder a ellas con la ayuda del tipo de recurso font.

ubicación del archivo:
res/font/filename.ttf (.ttf, .ttc, .otf o .xml)
Se usa el nombre del archivo como el ID de recurso.
referencia del recurso:
En XML: @[package:]font/font_name
sintaxis:
    <?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>
Obligatorio. Este debe ser el nodo raíz.

Sin atributos.

<font>
Define una sola fuente dentro de una familia. No contiene nodos secundarios.

atributos:

android:fontStyle
Palabra clave. Define el estilo de fuente. Cuando se carga la fuente en la pila de fuentes, se usa este atributo, que anula cualquier información de estilo en las tablas de encabezado de la fuente. Si no especifica el atributo, la app usa el valor de las tablas de encabezado de la fuente. El valor constante debe ser normal o italic.
android:fontWeight
Entero. El grosor de la fuente. Cuando se carga la fuente en la pila de fuentes, se usa este atributo, que anula cualquier información de grosor incluida en las tablas del encabezado de la fuente. El valor del atributo debe ser un número positivo, múltiplo de 100, y estar entre 100 y 900 inclusive. Si no especificas el atributo, la app usa el valor que aparece en las tablas del encabezado de la fuente. Los valores más comunes son 400 para el grosor habitual y 700 para la negrita.
ejemplo:
Archivo XML guardado en 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>
    

El archivo XML que aplica la fuente a un TextView se guarda en res/layout/:

    <?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!" />
    

Fuente descargable

Un recurso de fuente descargable define una fuente personalizada que puedes usar en una app. Esta fuente no está disponible en la app, sino que se recupera de un proveedor de fuentes.

ubicación del archivo:
res/font/filename.xml Se utiliza el nombre del archivo como ID de recurso.
referencia del recurso:
En XML:@[package:]font/font_name
sintaxis:
    <?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>
Obligatorio. Este debe ser el nodo raíz.

atributos:

android:fontProviderAuthority
String. Obligatoria. Es la autoridad del proveedor de fuentes que define la solicitud.
android:fontProviderPackage
String. Obligatoria. Es el nombre del paquete del proveedor de fuentes que se utilizará para la solicitud. Se usa para verificar la identidad del proveedor.
android:fontProviderQuery
String. Obligatoria. Es la consulta de string de la fuente. Consulta la documentación de tu proveedor de fuentes para obtener más información sobre el formato de esta string.
android:fontProviderCerts
Recurso de arreglo. Obligatorio. Define los conjuntos de hashes de los certificados que se usan para firmar este proveedor. Se usa para verificar la identidad del proveedor y solo es necesario si ese proveedor no es parte de la imagen del sistema. El valor puede apuntar a una sola lista (recurso de arreglo de string) o una lista de listas (recurso de arreglo), donde cada lista individual representa una colección de hashes de firma. Consulta la documentación de tu proveedor de fuentes para obtener estos valores.
ejemplo:
Archivo XML guardado en 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>
    

El archivo XML que define el arreglo de cert se guarda en res/values/:

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

El archivo XML que aplica la fuente a un TextView se guarda en res/layout/:

    <?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!" />