Ö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 font 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, kurulu yazı tipi dosyalarını yönetmek ve cihaza yüklenen yazı tipi dosyalarını bir sistem güncellemesi olmadan güncellemek için FontManager sistem hizmetini kullanabilirsiniz.

Android 12, üç işlem etkileşimi içerir; 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 , bir signature|privileged izin denetimi tarafından güvenilen, takılabilir bir yazı tipi güncelleyicidir. FontUpdater mevcut 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 süreçler arası iletişim (IPC) mekanizmalarıyla iletebilir. FontManagerService , içeriği /data/fonts dosyaları gibi herkes tarafından okunabilen bir depolama konumuna kaydeder. Bu depo korumalıdır. Sadece FontManagerService tarafından SELinux politikası ile 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; ardından uygulama işlemi tarafından kullanılmak üzere yazı tipi ayarlarını başlatır.

Yazı tiplerini özelleştir

Bazı OEM'ler, markalarını göstermek için AOSP'deki yazı tipi dosyalarını 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 de 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ştirmek için aşağıdaki üç yola 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, 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ı tipi dosyanızla değiştirmek için emoji yazı tipini, yazı tipi yedek zincirinin hemen önüne koyun:

  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>
    

Yerel pazar gereksinimleri için NotoColorEmoji.ttf dosyasını 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 gliflere sahip olun.
  • Değiştirilmemiş glifleri orijinal NotoColorEmoji.ttf dosyasına atayın, böylece cihazlarınız gelecekteki emoji sürümlerinde yapılan tüm tasarım düzeltmelerini alır.

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 bir bayrak kullanın: Hedef glif bölgesel bir bayraksa, glif kimliğini bilinmeyen bir ülke kodu olarak belirtin. ( country code = "ZZ" .)

Bir tofu glifi yapın: Kullanmak istiyorsanız, bir tofu glifi kimliğini açıkça belirtebilirsiniz. glyphID = 0 olarak belirttiğinizde, ilgili uygulama bunu "glyph 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 gereksinimleri için TTF dosyalarını değiştirmeye benzer. Çalışma zamanında AOSP'de güncellenen bilinmeyen yazı tipi dosyaları yoksayılır ve güncellenmez. Google, cihazınızdaki bilinmeyen yazı tiplerini yok sayar. Bu, AOSP'deki orijinal yazı tiplerinden değiştirilmiş yazı tipi dosyalarını içerir.

GMS Core'da yazı tipi güncellemeleri 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üncellemeleri yapma bölümlerindeki adımları kullanarak ek yazı tipi güncelleyicileri yükleyebilir.

Ön koş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. İmza fs-verity uyumlu olmalıdır.

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

FontManger System 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ği sağlar. Güncelleme uygulamalarını çağırmak için UPDATE_FONT signature|privileged iznini uygulama izin verilenler listenize ve manifest dosyanıza ekleyin.

Uygulamanızın güncelleyici işlevi için UPDATE_FONT signature|privileged izni sağlayın.