Özel Yazı Tipi Geri Dönüşünü Uygulama

Android 11 ve önceki sürümlerde, AOSP'de ( /system/fonts bölümünde) veya satıcı bölümlerinde ( /product/fonts veya /system/fonts bölümlerinde) aygıta yüklenen yazı tipi dosyalarının güncellenmesi, OEM'den bir sistem güncellemesi gerektirir. Bu gereksinimin emoji uyumluluğu üzerinde önemli bir etkisi vardır. Android 12'de, yüklü yazı tipi dosyalarını yönetmek ve cihazda yüklü yazı tipi dosyalarını sistem güncellemesi olmadan güncellemek için FontManager sistem hizmetini kullanabilirsiniz.

Android 12, üç işlem etkileşimine sahiptir; FontManagerService , Font Updater ve Application .

FontManagerService , sistem sunucusundaki merkezi yönetim sistemidir. FontManagerService , kullanıcı başına en son sistem yazı tipi ayarlarını depolar.

FontUpdater , signature|privileged izin denetimi tarafından güvenilen, takılabilir bir yazı tipi güncelleyicidir. FontUpdater , mevcut sistem font ayarlarını almak, yüklemek, kaldırmak veya güncellemek için FontManagerService ile iletişim kurar. FontUpdater , süreçler arası iletişim (IPC) mekanizmalarıyla yeni yazı tipi dosyası içeriklerini iletebilir. FontManagerService , içeriği /data/fonts dosyaları gibi dünya çapında okunabilir bir depolama konumuna kaydeder. Bu depo korunuyor. Yalnızca FontManagerService tarafından SELinux ilkesiyle yazılabilir.

Application sınıfı başlatıldığında, sistem yazı tipi ayarlarını bindApplication yönteminin bağımsız değişkenleri olarak iletir; daha sonra uygulama işlemi tarafından kullanılmak üzere yazı tipi ayarlarını başlatır.

Özel yazı tiplerini uygulama

Bazı OEM'ler, markalarını göstermek için yazı tipi dosyalarını AOSP'ye yükler veya değiştirir. Android 12 bu işlevi destekler, ancak cihazlarda emoji yazı tiplerini güncel tutmak için gereksinimler ekler. Emoji yazı tipi dosyalarını değiştirmeyen veya güncellemeyen OEM'lerin bu özelliği kullanmasına gerek yoktur.

Google, yazı tipi dosyalarını, özellikle NotoColorEmoji dosyalarını GMS Core aracılığıyla günceller, bu nedenle NotoColorEmoji.ttf dosyasını /system bölümünden değiştirmeyin veya kaldırmayın ve /system/etc/fonts.xml dosyasından kaldırmayın. Yazı tiplerinizi özelleştirebileceğiniz aşağıdaki üç yolu not edin:

  1. NotoColorEmoji.ttf dosyasını OEM markalı bir emoji yazı tipiyle değiştirin.
  2. NotoColorEmoji.ttf dosyasını yerel pazar ihtiyaçlarınız için değiştirin.
  3. Diğer yazı tipi dosyalarını değiştirin veya değiştirin.

AOSP'de emoji yazı tiplerini değiştirmiyorsanız, işlem yapmanız gerekmez. Emoji yazı tiplerini özelleştirmek istiyorsanız aşağıdaki bölümlerdeki talimatları kullanın.

NotoColorEmoji.ttf'nin OEM markalı emoji yazı tipleriyle değiştirilmesi

NotoColorEmoji.ttf dosyasını OEM markalı emoji yazı tipi dosyanızla değiştirmek için emoji yazı tipini yazı tipi geri dönüş zincirinin hemen önüne koyun:

  1. OEMCustomEmoji.ttf adlı kendi yazı tipinizi /system bölümüne yerleştirin.
  2. /system/etc/fonts.xml aşağıdaki koddaki gibi değiştirin:

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

NotoColorEmoji.ttf'yi yerel pazar ihtiyaçları için değiştirme

Yerel pazar ihtiyaçlarınıza göre özelleştirmek için şu adımları izleyin:

  1. Farklı bir adla kendi NotoColorEmoji dosyanızı oluşturun; örneğin, Modified\_NotoColorEmoji.ttf olarak adlandırın.
  2. Orijinal NotoColorEmoji.ttf dosyasının önüne yerleştirin.

2. adımı gerçekleştirdikten sonra, orijinal NotoColorEmoji.ttf yerine Modified\NotoColorEmoji.ttf tarafından desteklenen değiştirilmiş glif gösterilir. Google aşağıdakileri önerir:

  • Bu yazı tipinde yalnızca gerekli glifi kullanın.
  • Cihazlarınızın gelecekteki emoji sürümlerinde yapılan tasarım düzeltmelerini alması için değiştirilmemiş glifleri orijinal NotoColorEmoji.ttf dosyasına atayın.

Glifleri kaldırın: NotoColorEmoji.ttf dosyasından glifleri kaldırmak için 1. ve 2. adımları izleyin ve cmap'inizde glyph ID = 0 belirtin.

Bölgesel bayrak kullanın: Hedef glif bölgesel bir bayraksa glif kimliğini bilinmeyen bir ülke kodu olarak belirtin. ( country code = "ZZ" kullanın.)

Tofu glifi yap: Kullanmak istiyorsanız, açıkça bir tofu glifi kimliği belirtebilirsiniz. glyphID = 0 belirttiğinizde, ilgili uygulama bunu “glif mevcut değil” olarak yorumlar. Örneğin, bu özniteliği kullandığınızda Paint#hasGlyph uygulaması false döndürür.

Diğer yazı tipi dosyalarını değiştirin veya değiştirin

Diğer yazı tiplerini değiştirmek veya değiştirmek için özelleştirme, yerel pazar ihtiyaçları için tff dosyalarını değiştirmeye benzer. Çalışma zamanında AOSP'de güncellenen bilinmeyen yazı tipi dosyaları yok sayılır ve güncellenmez. Google, cihazınızdaki bilinmeyen yazı tiplerini yok sayar. Bu, AOSP'deki orijinal yazı tiplerinden değiştirilen yazı tipi dosyalarını içerir.

GMS Core'da font güncellemeleri Google tarafından yapılsa da genel font güncelleme mekanizması tüm OEM'lere açıktır. OEM'ler, Önkoşulların karşılanması, Yazı tipi dosyalarının imzalanması ve Çalışma zamanı yazı tipi güncellemelerinin yapılması bölümlerindeki adımları kullanarak ek yazı tipi güncelleyicileri yükleyebilir.

Toplantı önkoşulları

Yazı tipi güncelleme mekanizması, fs-verity Linux çekirdeği özelliğini kullanır. Cihazınızın fs-verity uyumlu olduğunu doğrulayın ve sertifikayı cihazınıza ekleyin.

Yazı tipi dosyalarını imzalama

Yazı tipi dosyaları riskli kaynaklar olduğundan güvenilir anahtarlarla doğrulanmaları gerekir. Güncellenecek tüm yazı tipi dosyalarını dikkatlice inceleyin ve özel anahtarınızla imzalayın. İmza fs-verity uyumlu olmalıdır.

Çalışma zamanı yazı tipi güncellemeleri yapma

FontManger System uygulaması, font güncellemelerini gerçekleştirir. FontManager uygulaması, en son yüklenen sistem yazı tipi durumunu ve yazı tipi dosyalarını imzalarla güncelleme olanağı sağlar. Güncelleme uygulamalarını çağırmak için, uygulama izin verilenler listenize ve bildiriminize UPDATE_FONT signature|privileged izni ekleyin.

UPDATE_FONT signature|privileged izin verin.