A partir de Android 15, las fuentes variables se renderizan en
y un entorno de ejecución
con mayor eficiencia y nivel de detalle. Con esta actualización, los proveedores
agregar nuevas configuraciones de fuentes variables a
font_fallback.xml
en lugar de fonts.xml
, ya que fonts.xml
dejará de estar disponible.
Consulta Compatibilidad con fuentes variables para obtener más información.
En Android 11 y versiones anteriores, actualizar archivos de fuentes instalados en el dispositivo en AOSP (en el
/system/fonts
) o las particiones del proveedor (en la partición /product/fonts
o
/system/fonts
particiones) requiere una actualización del sistema por parte del OEM. Esta
tiene un impacto significativo en la compatibilidad de los emojis. En
Android 12 puedes usar el sistema de FontManager
para administrar los archivos de fuentes instalados y actualizar los archivos de fuentes instalados en el dispositivo
sin una actualización del sistema.
Android 12 presenta tres interacciones de procesos:
FontManagerService
, Font Updater
y Application
.
FontManagerService
es el sistema de administración central en el servidor del sistema.
FontManagerService
almacena la última configuración de fuentes del sistema por usuario.
FontUpdater
es un actualizador de fuentes conectable que cuenta con la confianza de
Verificación de permisos de signature|privileged
. El FontUpdater
se comunica con el
FontManagerService
para obtener, instalar, quitar o actualizar la fuente actual del sistema
configuración. FontUpdater
puede pasar contenido nuevo del archivo de fuentes entre procesos.
de comunicación tradicional (IPC). FontManagerService
guarda el contenido en
una ubicación de almacenamiento legible en todo el mundo, como en los archivos /data/fonts
Esta
el almacenamiento esté protegido. Solo la puede escribir FontManagerService
mediante
Política de SELinux.
Cuando se inicia la clase Application
, pasa la configuración de la fuente del sistema como
Los argumentos del método bindApplication
. luego, inicializa la configuración de la fuente
para que los use el proceso de la app.
Compatibilidad con fuentes variables
A partir de Android 15, las configuraciones de fuentes variables son
especificadas en
font_fallback.xml
con el siguiente formato:
<family lang="und-Ethi" supportedAxes="wght,ital">
<font>NotoSansEthiopic-VF.ttf</font>
</family>
En este formato, una fuente variable tiene todos los atributos de una fuente estática con
un atributo supportedAxes
adicional. Un atributo supportedAxes
es un
Lista de etiquetas de ejes compatibles separadas por comas. Con
En Android 15, solo se pueden usar los ejes wght
y ital
especificada.
Si no se especifica el atributo supportedAxes
, el nodo font
funciona como un
fuente estática de una sola instancia de una fuente variable especificada con axis
hijos o hijas.
Si se especifica el atributo supportedAxes
, el sistema crea dinámicamente un
instancia de fuente para el valor de grosor y estilo dados en el tiempo de ejecución.
Los desarrolladores pueden usar la android.graphics.fonts.SystemFonts#getAvailableFonts
La API de Java o la ASystemFontIterator_open
API de NDK para obtener una lista de los archivos de fuentes instalados por el sistema. Para obtener información sobre
para desarrolladores que admiten esta actualización, consulta
API de OpenType Variable Font mejorada
y buildVariableFamily
.
Personalizar fuentes
Algunos OEMs instalan o reemplazan archivos de fuentes en AOSP para mostrar sus marcas. Android 12 admite esta función, pero agrega para mantener actualizadas las fuentes de emojis en los dispositivos. los OEM que no modifican ni actualizar los archivos de fuente de emojis no necesitan usar esta función.
Google actualiza los archivos de fuente, en especial los archivos NotoColorEmoji
, a través de GMS
Core, por lo que no debes modificar ni quitar el archivo NotoColorEmoji.ttf
del
/system
y no la quites de
/frameworks/base/data/fonts/fonts.xml
Ten en cuenta las siguientes tres formas en las que puedes personalizar tus fuentes:
- Reemplaza el archivo
NotoColorEmoji.ttf
con una fuente de emojis de la marca OEM. - Modifica el archivo
NotoColorEmoji.ttf
según las necesidades de tu mercado local. - Reemplaza o modifica otros archivos de fuente.
Si no modificas las fuentes de emojis en el AOSP, no es necesario que realices ninguna acción. Si si quieres personalizar las fuentes de emojis, sigue las instrucciones de la siguiente secciones.
Reemplaza NotoColorEmoji.ttf con fuentes de emojis de la marca OEM.
Para reemplazar el archivo NotoColorEmoji.ttf
por el archivo de fuentes de emojis de la marca OEM, haz lo siguiente:
Coloca la fuente de emojis justo antes de la cadena de resguardo de la fuente:
- Coloca tu propia fuente, llamada
OEMCustomEmoji.ttf
, en la partición/system
. Modifica
/frameworks/base/data/fonts/fonts.xml
(y/frameworks/base/data/fonts/font-fallback.xml
in Android 15 y versiones posteriores) como en el siguiente 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 NotoColorEmoji.ttf para las necesidades del mercado local
Sigue estos pasos para personalizar las campañas según las necesidades de tu mercado local:
- Crea tu propio archivo
NotoColorEmoji
con un nombre diferente. por ejemplo, Asígnale el nombreModified\_NotoColorEmoji.ttf
. - Colócalo antes del archivo
NotoColorEmoji.ttf
original.
Después de realizar el paso 2, el glifo modificado admitido por
Modified\NotoColorEmoji.ttf
en lugar del NotoColorEmoji.ttf
original.
Google recomienda lo siguiente:
- Solo debes tener el glifo necesario en esta fuente.
- Delega glifos sin modificar al archivo
NotoColorEmoji.ttf
original para que tus dispositivos recibirán las correcciones de diseño que se hagan en futuras versiones de emojis.
Quitar glifos: Para quitar glifos del archivo NotoColorEmoji.ttf
, sigue estos pasos:
los pasos 1 y 2, y especifica glyph ID = 0
en tu cmap.
Usa una marca regional: Si el glifo de destino es una marca regional, especifica la
ID del glifo como un código de país desconocido. (Usa country code = "ZZ"
).
Crear un glifo de tofu: si lo deseas, puedes especificar explícitamente un ID de glifo de tofu
de usar uno. Cuando especificas glyphID = 0
, la app relacionada lo interpreta como
"el glifo no está disponible". Por ejemplo, si usas este atributo, el
La app de Paint#hasGlyph
muestra false
.
Cómo reemplazar o modificar otros archivos de fuente
Para reemplazar o modificar otras fuentes, la personalización es similar a la de modificar los archivos TTF según las necesidades del mercado local Archivos de fuentes desconocidas que se en el AOSP durante el tiempo de ejecución se ignoran y no se actualizan. Google ignora fuentes desconocidas en tu dispositivo. Esto incluye los archivos de fuentes que se modificaron las fuentes originales en AOSP.
Si bien Google realiza las actualizaciones de fuentes en GMS Core, la actualización general de atención al público está disponible para todos los OEM. Los OEMs pueden instalar actualizadores de fuentes adicionales usando los pasos en Cumplir con los requisitos previos, Firmar archivos de fuentes, y Cómo realizar actualizaciones de fuentes durante el tiempo de ejecución.
Cumpla con los requisitos previos
El mecanismo de actualización de fuentes usa la función del kernel de Linux fs-verity
. Verifica lo siguiente:
tu dispositivo cumple con fs-verity
y debe incluir el certificado en el dispositivo.
Firmar archivos de fuentes
Dado que los archivos de fuentes son recursos riesgosos, se deben verificar con claves de confianza.
Revisa cuidadosamente todos los archivos de fuentes que deseas actualizar y fírmalos con tu
privada. La firma debe ser compatible con fs-verity
.
Cómo realizar actualizaciones de fuentes de tiempo de ejecución
La app del sistema FontManager
realiza actualizaciones de la fuente. La app de FontManager
proporciona el estado de la fuente del sistema instalado más reciente y la capacidad de actualizar la fuente
archivos con firmas. Para llamar a apps de actualización, agrega
UPDATE_FONT signature|privileged
a tu
lista de apps permitidas,
y en tu manifiesto.
Otorga el permiso UPDATE_FONT signature|privileged
al actualizador de la app
.