Implementare caratteri personalizzati

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:

  1. Sostituisci il file NotoColorEmoji.ttf con un carattere emoji con brand OEM.
  2. Modifica il file NotoColorEmoji.ttf in base alle esigenze del tuo mercato locale.
  3. 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:

  1. Inserisci il tuo carattere, chiamato OEMCustomEmoji.ttf, nella partizione /system.
  2. 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:

  1. Crea il tuo file NotoColorEmoji con un nome diverso. ad esempio assegna il nome Modified\_NotoColorEmoji.ttf.
  2. 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.