Özel yazı tiplerini 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) cihaza yüklenen yazı tipi dosyalarını güncellemek için OEM'den bir sistem güncellemesi yapılması gerekir. 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'de üç süreç etkileşimi bulunur; FontManagerService , Font Updater ve Application .

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

FontUpdater signature|privileged izin kontrolüyle güvenilen, takılabilir bir yazı tipi güncelleyicisidir. FontUpdater geçerli sistem yazı tipi ayarlarını almak, yüklemek, kaldırmak veya güncellemek için FontManagerService ile iletişim kurar. FontUpdater yeni yazı tipi dosyası içeriklerini işlemler arası iletişim (IPC) mekanizmalarıyla aktarabilir. FontManagerService , içerikleri /data/fonts dosyaları gibi herkesin okuyabileceği bir depolama konumuna kaydeder. Bu depo korunuyor. Yalnızca FontManagerService tarafından, SELinux politikasıyla yazılabilir.

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

Yazı tiplerini özelleştirin

Bazı OEM'ler markalarını göstermek için AOSP'ye yazı tipi dosyalarını yükler veya değiştirir. Android 12 bu işlevi destekler ancak cihazlarda emoji yazı tiplerinin güncel tutulmasına yönelik 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 de NotoColorEmoji dosyalarını GMS Core aracılığıyla günceller, bu nedenle NotoColorEmoji.ttf dosyasını /system bölümünde değiştirmeyin veya kaldırmayın ve onu /system/etc/fonts.xml bölümünden kaldırmayın. Yazı tiplerinizi özelleştirmenin aşağıdaki üç yoluna dikkat 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ıza göre 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 herhangi bir işlem yapmanıza gerek yoktur. Emoji yazı tiplerini özelleştirmek istiyorsanız aşağıdaki bölümlerdeki talimatları kullanın.

NotoColorEmoji.ttf dosyasını OEM markalı emoji yazı tipleriyle değiştirin

NotoColorEmoji.ttf dosyasını OEM markalı emoji yazı tipleri dosyanızla değiştirmek için emoji yazı tipini, yazı tipi yedek zincirinin hemen öncesine yerleştirin:

  1. OEMCustomEmoji.ttf adlı kendi yazı tipinizi /system bölümüne yerleştirin.
  2. /system/etc/fonts.xml dosyasını 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 dosyasını yerel pazar ihtiyaçları için değiştirin

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 glif bulunsun.
  • Cihazlarınızın gelecekteki emoji sürümlerinde yapılacak tasarım düzeltmelerini alması için değiştirilmemiş glifleri orijinal NotoColorEmoji.ttf dosyasına aktarın.

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

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

Tofu glifi yapın: Kullanmak istiyorsanız açıkça bir tofu glif kimliği belirtebilirsiniz. glyphID = 0 belirttiğinizde ilgili uygulama bunu “glif mevcut değil” olarak yorumluyor. Örneğin, bu niteliğ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 yapılan özelleştirme, yerel pazar ihtiyaçları için TTF 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. Buna, AOSP'deki orijinal yazı tiplerinden değiştirilen yazı tipi dosyaları da dahildir.

Yazı tipi güncellemeleri GMS Core'da Google tarafından yapılsa da genel yazı tipi güncelleme mekanizması tüm OEM'lere açıktır. OEM'ler, Toplantı önkoşulları , Yazı tipi dosyalarını imzalama ve Çalışma zamanı yazı tipi güncellemelerini yapma bölümündeki adımları kullanarak ek yazı tipi güncelleyicileri yükleyebilir.

Önkoşulları karşılayın

Yazı tipi güncelleme mekanizması fs-verity Linux çekirdek ö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ı imzala

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. İmzanın fs-verity uyumlu olması gerekir.

Çalışma zamanı yazı tipi güncellemelerini yapın

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

Uygulamanızın güncelleyici işlevine UPDATE_FONT signature|privileged izin verin.