Özel yazı tipleri uygulama

Android 15'ten itibaren değişken yazı tipleri şu seviyede oluşturulur: daha yüksek verimlilik ve ayrıntı düzeyiyle çalışma zamanı. Bu güncellemeyle birlikte tedarikçi firmaların yeni değişken yazı tipi yapılandırmaları font_fallback.xml yerine fonts.xml; çünkü fonts.xml kullanımdan kaldırılıyor. Daha fazla bilgi için Değişken yazı tipleri için destek başlıklı makaleye bakın.

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.

Değişken yazı tipleri desteği

Android 15'ten itibaren, değişken yazı tipi yapılandırmaları belirtilen font_fallback.xml şu biçimi kullanarak:

<family lang="und-Ethi" supportedAxes="wght,ital">
    <font>NotoSansEthiopic-VF.ttf</font>
</family>

Bu biçimde bir değişken yazı tipi, ek bir supportedAxes özelliği. supportedAxes özelliği, desteklenen eksen etiketlerinin virgülle ayrılmış listesi. Entegre Android 15'te, yalnızca wght ve ital eksenleri kullanılabilir belirtiliyor.

supportedAxes özelliği belirtilmezse font düğümü axis ile belirtilen değişken yazı tipinin tek bir örneğinin statik yazı tipi

supportedAxes özelliği belirtilirse sistem, çalışma zamanında belirtilen ağırlık ve stil değeri için yazı tipi örneği.

Geliştiriciler, android.graphics.fonts.SystemFonts#getAvailableFonts hizmetini kullanabilir. Java API veya ASystemFontIterator_open NDK API'yi kullanarak sistem tarafından yüklenen yazı tipi dosyalarının listesini alın. Daha fazla bilgi için bu güncellemeyi destekleyen geliştirici API'leri için bkz. İyileştirilmiş OpenType Değişken Yazı Tipi API'si ve buildVariableFamily.

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ü kaldırın ve şuradan kaldırmayın: /frameworks/base/data/fonts/fonts.xml. Yazı tiplerini özelleştirebileceğiniz üç yöntemi göz önünde bulundurun:

  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. /frameworks/base/data/fonts/fonts.xml (ve /frameworks/base/data/fonts/font-fallback.xml inç Android 15 ve sonraki sürümler) aşağıdaki koddaki gibidir:

    <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, FontManager sistem uygulaması tarafından yapılır. FontManager uygulaması en son yüklenen sistemin yazı tipi durumunu ve yazı tipini güncelleme özelliğini sağlar dosyalar. Güncelleme uygulamalarını aramak için UPDATE_FONT signature|privileged izni uygulama izin verilenler listesi, manifest dosyanıza ekleyin.

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