Özel yazı tipleri uygulama

Android 11 ve önceki sürümlerde, cihaza yüklenmiş yazı tipi dosyalarının AOSP'de güncellenmesi ( /system/fonts bölümü) veya tedarikçi firma bölümlerini (/product/fonts veya /system/fonts bölümleri) için OEM'den sistem güncellemesi yapılması gerekir. Bu gereksiniminin emoji uyumluluğu üzerinde önemli bir etkisi vardır. İçinde Android 12'de FontManager sistemini kullanabilirsiniz yüklü yazı tipi dosyalarını yönetme ve cihazda yüklü yazı tipi dosyalarını güncelleme hizmeti sistem güncellemesi gerekmez.

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ı depolar.

FontUpdater, bir signature|privileged izin kontrolü. FontUpdater, Mevcut sistem yazı tipini almak, yüklemek, kaldırmak veya güncellemek için FontManagerService Ayarlar'da devre dışı bırakabilirsiniz. FontUpdater, yeni yazı tipi dosyası içeriklerini çeşitli işlemler arasında iletebilir. iletişim (IPC) mekanizmaları ile başlar. FontManagerService içerikleri şuraya kaydeder: herkesin okuyabileceği bir depolama konumu (ör. /data/fonts dosyalarında) Bu korunuyor. Yalnızca FontManagerService tarafından, SELinux politikası.

Application sınıfı başlatıldığında, sistem yazı tipi ayarlarını bindApplication yönteminin bağımsız değişkenleri; yazı tipi ayarlarını ilk kullanıma hazırlar. tarafından kullanılmak üzere tasarlanmıştır.

Yazı tiplerini özelleştir

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 gereklilikler arasındadır. veya emoji yazı tipi dosyalarının bu özelliği kullanması gerekmez.

Google, yazı tipi dosyalarını, özellikle de NotoColorEmoji dosyalarını GMS aracılığıyla günceller. Çekirdek bu nedenle, NotoColorEmoji.ttf dosyasını /system bölümünü inceleyin ve /system/etc/fonts.xml bölümünden kaldırmayın. Not: yazı tiplerinizi özelleştirmenin üç yolu vardır:

  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 düzenleyin.

AOSP'de emoji yazı tiplerini değiştirmiyorsanız herhangi bir işlem yapmanız gerekmez. Eğer emoji yazı tiplerini özelleştirmek istiyorsanız aşağıdaki bölümlerini kontrol edin.

NotoColorEmoji.ttf'yi OEM markalı emoji yazı tipleriyle değiştirme

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

  1. /system bölümüne OEMCustomEmoji.ttf adlı kendi yazı tipinizi yerleştirin.
  2. /system/etc/fonts.xml öğesini 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ına göre değiştirin

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

  1. Farklı bir adla kendi NotoColorEmoji dosyanızı oluşturun; örneğin, Modified\_NotoColorEmoji.ttf olarak adlandıralım.
  2. Dosyayı, orijinal NotoColorEmoji.ttf dosyasının öncesine yerleştirin.

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

  • Bu yazı tipinde yalnızca gerekli karakterler bulunmalıdır.
  • Değiştirilmemiş glifleri orijinal NotoColorEmoji.ttf dosyasına dağıtarak cihazınız gelecekteki emoji sürümlerinde yapılacak tasarım düzeltmelerini alır.

Glifleri kaldır: NotoColorEmoji.ttf dosyasındaki glifleri kaldırmak için aşağıdaki adımları uygulayın: ve charitanızda glyph ID = 0 değerini belirtin.

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

Tofu glifi yapma: İsterseniz doğrudan bir tofu glif kimliği belirtebilirsiniz. ne kadar kolay olduğunu göstereceğim. glyphID = 0 değerini belirttiğinizde, ilgili uygulama bunu "glif kullanılamıyor". Örneğin, bu özelliği kullandığınızda Paint#hasGlyph uygulaması false döndürüyor.

Diğer yazı tipi dosyalarını değiştirme veya düzenleme

Diğer yazı tiplerini değiştirmek veya değiştirmek için yapılan özelleştirme, TTF dosyalarını yerel pazar ihtiyaçları için değiştirme. Aşağıdakilerin bilinmeyen yazı tipi dosyaları: çalışma zamanında AOSP'de güncellenenler yoksayılır ve güncellenmez. Google yoksayar bilinmeyen yazı tiplerini etkinleştirin. Bu, AOSP'deki orijinal yazı tipleri.

Yazı tipi güncellemeleri Google tarafından GMS Core'da yapılmış olsa da genel yazı tipi güncellemesi tüm OEM'lere açıktır. OEM'ler aşağıdaki bağlantıyı kullanarak ek yazı tipi güncelleyicileri yükleyebilir: Meet ön koşulları, Yazı tipi dosyalarını imzalama bölümündeki adımlar Çalışma zamanında yazı tipi güncellemeleri yapma başlıklı makaleleri inceleyin.

Ön koşulları karşılayın

Yazı tipi güncelleme mekanizması, fs-verity Linux çekirdek özelliğini kullanır. Şunları doğrulayın: Cihazınız fs-verity ile uyumlu ve sertifikayı cihazınıza ekleyin.

Yazı tipi dosyalarını imzalayın

Yazı tipi dosyaları riskli kaynaklar olduğundan güvenilir anahtarlarla doğrulanmaları gerekir. Güncellenecek tüm yazı tipi dosyalarını dikkatlice inceleyin ve gizli anahtardır. İmzafs-verity uyumlu olmalıdır.

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

Yazı tipi güncellemeleri, FontManger sistem uygulaması tarafından yapılır. FontManager uygulaması en son yüklenen sistemin yazı tipi durumu ve yazı tipi dosyalarını güncelleme özelliği sahip olmanız gerekir. Uygulamaları güncellemek için UPDATE_FONT signature|privileged ekleyin uygulama izin verilenler listesi için, manifest dosyanıza ekleyin.

Uygulamanızın güncelleyicisine UPDATE_FONT signature|privileged iznini verin işlevini kullanın.