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 dall'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.
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 /system/etc/fonts.xml
. Tieni presente
Ecco tre modi per 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
/system/etc/fonts.xml
come 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 valore
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 FontManger
esegue l'aggiornamento dei caratteri. L'app FontManager
fornisce
lo stato più recente dei caratteri di sistema installati e la possibilità di aggiornare i file dei caratteri
con firme. Per chiamare le app di aggiornamento, aggiungi UPDATE_FONT signature|privileged
autorizzazione per la tua lista consentita delle app,
e al file manifest.
Fornisci l'autorizzazione UPDATE_FONT signature|privileged
al programma di aggiornamento dell'app
personalizzata.