A partire da Android 15, il rendering dei caratteri variabili
con maggiore efficienza e granularità. Con questo aggiornamento, i fornitori devono
aggiungere nuove configurazioni di caratteri variabili
font_fallback.xml
anziché fonts.xml
, poiché fonts.xml
è in fase di ritiro.
Per ulteriori informazioni, consulta l'articolo Supporto per i caratteri variabili.
In Android 11 e versioni precedenti, aggiornare in AOSP i file dei caratteri installati sul dispositivo (in
/system/fonts
) o le partizioni del fornitore (nella partizione /product/fonts
o
/system/fonts
partizioni) richiede un aggiornamento di sistema dall'OEM. Questo
ha un impatto significativo sulla compatibilità delle emoji. Nella
Android 12, puoi usare il sistema FontManager
servizio per gestire i file dei caratteri installati e aggiornare i file dei caratteri installati nel dispositivo
senza un aggiornamento di sistema.
Android 12 offre tre interazioni di processo:
FontManagerService
, Font Updater
e Application
.
FontManagerService
è il sistema di gestione centrale nel server di sistema.
FontManagerService
memorizza le impostazioni più recenti dei caratteri di sistema per utente.
FontUpdater
è uno strumento per l'aggiornamento dei caratteri collegabile ritenuto affidabile da un
Controllo delle autorizzazioni signature|privileged
. FontUpdater
comunica con
FontManagerService
per recuperare, installare, rimuovere o aggiornare il carattere di sistema corrente
impostazioni. FontUpdater
può trasmettere nuovi contenuti del file dei caratteri tra processi
i meccanismi di comunicazione (IPC). FontManagerService
salva i contenuti in
una posizione di archiviazione leggibile in tutto il mondo, come i file /data/fonts
. Questo
lo spazio di archiviazione è sorvegliato. Può essere scritto solo da FontManagerService
,
criterio SELinux.
All'avvio del corso Application
, le impostazioni dei caratteri di sistema vengono passate come
argomenti del metodo bindApplication
; quindi inizializza le impostazioni del carattere
per l'utilizzo da parte del processo dell'app.
Supporto per caratteri variabili
A partire da Android 15, le configurazioni di caratteri variabili
specificato in
font_fallback.xml
utilizzando il seguente formato:
<family lang="und-Ethi" supportedAxes="wght,ital">
<font>NotoSansEthiopic-VF.ttf</font>
</family>
In questo formato, un carattere variabile ha tutti gli attributi di un carattere statico con
un altro attributo supportedAxes
. Un attributo supportedAxes
è un
elenco separato da virgole di tag asse supportati. Con
Android 15, solo gli assi wght
e ital
possono essere
specificato.
Se l'attributo supportedAxes
non è specificato, il nodo font
funziona come
carattere statico di una singola istanza di un carattere variabile specificato con axis
bambini.
Se viene specificato l'attributo supportedAxes
, il sistema crea in modo dinamico un
per il valore di ponderazione e stile specificati in fase di runtime.
Gli sviluppatori possono utilizzare la android.graphics.fonts.SystemFonts#getAvailableFonts
API Java o ASystemFontIterator_open
API NDK per ottenere un elenco dei file dei caratteri installati dal sistema. Per informazioni su
per gli sviluppatori che supportano questo aggiornamento, consulta
API OpenType Variable Font migliorata
e buildVariableFamily
.
Personalizzare i caratteri
Alcuni OEM installano o sostituiscono i file dei caratteri in AOSP per mostrare i propri brand. Android 12 supporta questa funzionalità, ma aggiunge requisiti per mantenere i caratteri delle emoji aggiornati nei dispositivi. OEM che non modificano o non è necessario utilizzare questa funzionalità per aggiornare i caratteri delle emoji.
Google aggiorna i file dei caratteri, in particolare i file NotoColorEmoji
tramite GMS
Core, quindi non modificare o rimuovere il file NotoColorEmoji.ttf
dalla
/system
e non rimuoverla da
/frameworks/base/data/fonts/fonts.xml
.
Tieni presenti tre modi in cui puoi personalizzare i caratteri:
- Sostituisci il file
NotoColorEmoji.ttf
con un carattere emoji con brand OEM. - Modifica il file
NotoColorEmoji.ttf
in base alle esigenze del tuo mercato locale. - Sostituisci o modifica altri file dei caratteri.
Se non stai modificando i caratteri emoji in AOSP, non è richiesta alcuna azione da parte tua. Se vuoi personalizzare i caratteri delle emoji, segui le istruzioni sezioni.
Sostituisci NotoColorEmoji.ttf con caratteri emoji con brand OEM
Per sostituire il file NotoColorEmoji.ttf
con il file di caratteri di emoji con il brand OEM:
inserisci il carattere dell'emoji appena prima della catena di riserva dei caratteri:
- Inserisci il tuo carattere, chiamato
OEMCustomEmoji.ttf
, nella partizione/system
. Modifica
/frameworks/base/data/fonts/fonts.xml
(e/frameworks/base/data/fonts/font-fallback.xml
pollici Android 15 e versioni successive) come indicato nel seguente codice:<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 per le esigenze del mercato locale
Segui questi passaggi per personalizzare in base alle esigenze del tuo mercato locale:
- Crea il tuo file
NotoColorEmoji
con un nome diverso. ad esempio assegna il nomeModified\_NotoColorEmoji.ttf
. - Posizionalo prima del file
NotoColorEmoji.ttf
originale.
Dopo aver eseguito il passaggio 2, il glifo modificato supportato
Viene visualizzata la lingua Modified\NotoColorEmoji.ttf
anziché l'elemento NotoColorEmoji.ttf
originale.
Google consiglia quanto segue:
- Inserisci solo il glifo necessario in questo carattere.
- Delega i glifi non modificati al file
NotoColorEmoji.ttf
originale in modo che i tuoi dispositivi riceveranno le correzioni al design apportate nelle versioni future delle emoji.
Rimuovi i glifi: per rimuoverli dal file NotoColorEmoji.ttf
, segui
passaggi 1 e 2 e specificare glyph ID = 0
nella mappa.
Usa una bandiera regionale: se il glifo di destinazione è una bandiera regionale, specifica la
ID glifo come codice paese sconosciuto. (Usa country code = "ZZ"
.)
Crea un glifo tofu: se vuoi, puoi specificare esplicitamente un ID glifo tofu.
per usarne uno. Se specifichi glyphID = 0
, l'app correlata lo interpreta come
"glifo non è disponibile". Ad esempio, quando utilizzi questo attributo, il parametro
L'app Paint#hasGlyph
restituisce false
.
Sostituire o modificare altri file di caratteri
Per sostituire o modificare altri caratteri, la personalizzazione è simile a quella per Modificando i file TTF per le esigenze del mercato locale. File di caratteri sconosciuti che sono aggiornati nell'AOSP in fase di runtime vengono ignorati e non vengono aggiornati. Google ignora caratteri sconosciuti del tuo dispositivo. Sono inclusi i file dei caratteri modificati da i caratteri originali in AOSP.
Anche se gli aggiornamenti dei caratteri vengono eseguiti da Google in GMS Core, l'aggiornamento generale dei caratteri meccanismo di attenzione è disponibile per tutti gli OEM. Gli OEM possono installare altri programmi di aggiornamento dei caratteri utilizzando i passaggi in Prerequisiti per la riunione, File dei caratteri di firma, e Aggiornamenti dei caratteri di runtime.
Prerequisiti di Meet
Il meccanismo di aggiornamento dei caratteri utilizza la funzionalità kernel Linux fs-verity
. Verifica che
il tuo dispositivo è conforme a fs-verity
e includi il certificato al suo interno.
File dei caratteri per le firme
Poiché i file dei caratteri sono risorse rischiose, devono essere verificati con chiavi attendibili.
Esamina attentamente tutti i file dei caratteri che devono essere aggiornati e firma con
chiave privata. La firma deve essere compatibile confs-verity
.
Aggiornare i caratteri di runtime
L'app di sistema FontManager
esegue l'aggiornamento dei caratteri. App FontManager
fornisce lo stato più recente dei caratteri di sistema installati e la possibilità di aggiornarli
file con firme. Per chiamare le app di aggiornamento, aggiungi il
l'autorizzazione UPDATE_FONT signature|privileged
per il tuo
lista consentita delle app,
e al file manifest.
Fornisci l'autorizzazione UPDATE_FONT signature|privileged
al programma di aggiornamento dell'app
personalizzata.