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:
-
NotoColorEmoji.ttf
dosyasını OEM markalı bir emoji yazı tipiyle değiştirin. -
NotoColorEmoji.ttf
dosyasını yerel pazar ihtiyaçlarınıza göre değiştirin. - 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:
-
OEMCustomEmoji.ttf
adlı kendi yazı tipinizi/system
bölümüne yerleştirin. /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:
- Farklı bir adla kendi
NotoColorEmoji
dosyanızı oluşturun; örneğin,Modified\_NotoColorEmoji.ttf
olarak adlandırın. - 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.