Google berkomitmen untuk mendorong terwujudnya keadilan ras bagi komunitas Kulit Hitam. Lihat caranya.

Menerapkan Penggantian Font Kustom

Di Android 11 dan menurunkan, memperbarui file font perangkat-dipasang di AOSP (di /system/fonts partisi) atau partisi penjual (dalam /product/fonts atau /system/fonts partisi) memerlukan pembaruan sistem dari OEM. Persyaratan ini memiliki dampak signifikan pada kompatibilitas emoji. Di Android 12 Anda dapat menggunakan FontManager layanan sistem untuk mengelola file font yang terinstall dan file font perangkat-instal pembaruan tanpa update sistem.

Android 12 menampilkan tiga interaksi proses; FontManagerService , Font Updater , dan Application .

The FontManagerService adalah sistem manajemen pusat di sistem server. FontManagerService menyimpan terbaru pengaturan font sistem per-user.

The FontUpdater adalah updater font yang pluggable yang dipercaya oleh signature|privileged cek izin. The FontUpdater berkomunikasi dengan FontManagerService untuk mendapatkan, menginstal, menghapus, atau memperbarui pengaturan font sistem saat ini. The FontUpdater bisa lewat isi file font baru dengan antar-proses komunikasi (IPC) mekanisme. The FontManagerService menyimpan isi ke lokasi penyimpanan dunia dapat dibaca, seperti di /data/fonts file. Penyimpanan ini dijaga. Hal ini dapat ditulis oleh FontManagerService saja, dengan kebijakan SELinux.

Ketika Application peluncuran kelas, melewati pengaturan font sistem sebagai argumen dari bindApplication metode; kemudian menginisialisasi pengaturan font untuk digunakan oleh proses aplikasi.

Menerapkan font khusus

Beberapa OEM menginstal atau mengganti file font di AOSP untuk menunjukkan merek mereka. Android 12 mendukung fungsi ini, tetapi menambahkan persyaratan untuk terus memperbarui font emoji di perangkat. OEM yang tidak mengubah atau memperbarui file font emoji tidak perlu menggunakan fitur ini.

Google update file font, terutama NotoColorEmoji file melalui GMS Core, jadi jangan mengubah atau menghapus NotoColorEmoji.ttf file dari /system partisi, dan tidak menghapusnya dari /system/etc/fonts.xml . Perhatikan tiga cara berikut yang Anda dapat menyesuaikan font Anda:

  1. Mengganti NotoColorEmoji.ttf berkas dengan font emoji OEM-merek.
  2. Memodifikasi NotoColorEmoji.ttf file untuk kebutuhan pasar lokal Anda.
  3. Ganti atau ubah file font lainnya.

Jika Anda tidak mengubah font emoji di AOSP, Anda tidak perlu mengambil tindakan. Jika Anda ingin menyesuaikan font emoji, gunakan petunjuk di bagian berikut.

Mengganti NotoColorEmoji.ttf dengan font emoji bermerek OEM

Untuk mengganti NotoColorEmoji.ttf berkas dengan OEM-merek berkas font emoji Anda, menempatkan font emoji sebelum rantai font yang fallback:

  1. Menempatkan font sendiri, yang disebut OEMCustomEmoji.ttf , dalam /system partisi.
  2. Modifikasi /system/etc/fonts.xml seperti dalam kode berikut:

    <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>
    

Modifikasi NotoColorEmoji.ttf untuk kebutuhan pasar lokal

Ikuti langkah-langkah ini untuk menyesuaikan kebutuhan pasar lokal Anda:

  1. Buat Anda sendiri NotoColorEmoji file dengan nama yang berbeda; misalnya, nama itu Modified\_NotoColorEmoji.ttf .
  2. Tempat itu sebelum asli NotoColorEmoji.ttf berkas.

Setelah Anda melakukan langkah 2, mesin terbang yang dimodifikasi didukung oleh Modified\NotoColorEmoji.ttf menunjukkan bukan asli NotoColorEmoji.ttf . Google merekomendasikan hal berikut:

  • Hanya memiliki mesin terbang yang diperlukan dalam font ini.
  • Delegasikan mesin terbang dimodifikasi dengan aslinya NotoColorEmoji.ttf file sehingga perangkat Anda menerima perbaikan desain yang dibuat di masa emoji rilis.

Hapus mesin terbang: Untuk menghapus mesin terbang dari NotoColorEmoji.ttf berkas, ikuti langkah 1 dan 2, dan menentukan glyph ID = 0 di CMAP Anda.

Gunakan bendera daerah: Jika target mesin terbang adalah bendera daerah, menentukan ID mesin terbang sebagai kode negara yang tidak diketahui. (Gunakan country code = "ZZ" .)

Membuat mesin terbang tahu: Anda secara eksplisit dapat menentukan ID tofu mesin terbang jika Anda ingin menggunakan salah satu. Ketika Anda menentukan glyphID = 0 , yang menafsirkan aplikasi terkait yang sebagai “mesin terbang tidak tersedia”. Sebagai contoh, ketika Anda menggunakan atribut ini, Paint#hasGlyph aplikasi mengembalikan false .

Ganti atau ubah file font lainnya

Untuk mengganti atau memodifikasi font lain, kustomisasi yang mirip dengan yang untuk memodifikasi tff file untuk kebutuhan pasar lokal. File font tidak dikenal yang diperbarui di AOSP saat runtime diabaikan, dan tidak diperbarui. Google mengabaikan font yang tidak dikenal di perangkat Anda. Ini termasuk file font yang dimodifikasi dari font asli di AOSP.

Meskipun pembaruan font dilakukan oleh Google di GMS Core, mekanisme pembaruan font umum terbuka untuk semua OEM. OEM dapat menginstal updaters huruf tambahan menggunakan langkah-langkah dalam prasyarat Rapat , Penandatanganan file font , dan Pembuatan update huruf runtime .

Prasyarat pertemuan

Mekanisme update font yang menggunakan fs-verity fitur kernel Linux. Pastikan perangkat Anda adalah fs-verity compliant dan termasuk sertifikat pada perangkat Anda.

Menandatangani file font

Karena file font adalah sumber daya yang berisiko, mereka harus diverifikasi dengan kunci tepercaya. Tinjau dengan cermat semua file font yang akan diperbarui, dan tanda tangani dengan kunci pribadi Anda. Tanda tangan harus fs-verity yang kompatibel.

Membuat pembaruan font waktu proses

The FontManger Sistem dijalankan aplikasi font yang update. The FontManager aplikasi menyediakan terbaru Status sistem font diinstal dan kemampuan untuk file update font dengan tanda tangan. Untuk memanggil update aplikasi, tambahkan UPDATE_FONT signature|privileged izin untuk Anda allowlist aplikasi , dan untuk mewujudkan Anda .

Memberikan UPDATE_FONT signature|privileged izin untuk fungsi updater aplikasi Anda.