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:
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 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:
/system
bölümüneOEMCustomEmoji.ttf
adlı kendi yazı tipinizi yerleştirin./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:
- Farklı bir adla kendi
NotoColorEmoji
dosyanızı oluşturun; örneğin,Modified\_NotoColorEmoji.ttf
olarak adlandıralım. - 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.