İndirilebilir Yazı Tipleri özelliği, API'lerin dosyaları uygulamaya paketlemek veya uygulamanın yazı tiplerini indirmesine izin vermek yerine bir sağlayıcı uygulamasından yazı tipi istemesine olanak tanır. İndirilebilir Yazı Tipleri, AndroidX Core kitaplığı aracılığıyla Android API 14 ve sonraki sürümleri çalıştıran cihazlarda kullanılabilir.
İndirilebilir Yazı Tipleri aşağıdaki avantajları sunar:
Uygulama boyutunu küçülterek uygulama yükleme başarı oranını artırır.
Birden fazla uygulama, bir sağlayıcı aracılığıyla aynı yazı tipini paylaşabildiğinden genel sistem durumunu iyileştirir. Bu sayede kullanıcılar hücresel veri, telefon belleği ve disk alanından tasarruf eder. Bu modelde yazı tipi, gerektiğinde ağ üzerinden getirilir.
İndirilebilir Yazı Tipleri ile ilgili uygulamalı deneyim için DownloadableFonts örnek uygulamasına bakın.
İndirilebilir Yazı Tipleri nasıl çalışır?
Yazı tipi sağlayıcı, yazı tiplerini alıp yerel olarak önbelleğe alan bir uygulamadır. Böylece diğer uygulamalar yazı tiplerini isteyip paylaşabilir. Aşağıdaki şekilde bu süreç gösterilmektedir.
Şekil 1. İndirilebilir Yazı Tipleri işlemi.
Temel özellikler
İndirilebilir Yazı Tipleri özelliğini aşağıdaki şekillerde kullanabilirsiniz. Bu yöntemler sonraki bölümlerde ayrıntılı olarak ele alınmıştır:
Android Studio ve Google Play Hizmetleri ile İndirilebilir Yazı Tipleri'ni kullanma
Android Studio 3.0 veya sonraki sürümleri kullanarak uygulamanızı yazı tiplerini indirecek şekilde ayarlayabilirsiniz. İndirilebilir Yazı Tipleri özelliklerini kullanmaya başlamanıza yardımcı olması için Google Play Hizmetleri'ndeki yazı tipi sağlayıcıyı kullanabilirsiniz.
Düzen Düzenleyici'de bir TextView seçin. Ardından Özellikler bölümünde fontFamily > Diğer Yazı Tipleri'ni seçin.
Şekil 2.Düzenleyici'yi kullanma
Kaynaklar penceresi görünür.
Kaynak menüsünde Google Fonts'u seçin.
Yazı tipleri kutusunda, "İndirilebilir" alanından bir yazı tipi seçin.
İndirilebilir yazı tipi oluştur'u seçip Tamam'ı tıklayın.
3.şekilKaynaklar penceresinden bir yazı tipi seçme.
Android Studio, yazı tipini uygulamanızda doğru şekilde oluşturmak için gereken ilgili XML dosyalarını otomatik olarak oluşturur.
Şekil 4. Yazı tipi dosyası önizleniyor.
İndirilebilir Yazı Tipleri'ni programatik olarak kullanma
Android 8.0 (API düzeyi 26) itibarıyla AndroidX Core, İndirilebilir Yazı Tipleri için tam destek sunar. AndroidX Core kitaplığını kullanma hakkında daha fazla bilgi için bu sayfadaki İndirilebilir Yazı Tipleri AndroidX Core kitaplığı bölümüne bakın.
İndirilebilir Yazı Tipleri özelliğini programatik olarak kullanmak için iki temel sınıfla etkileşim kurun:
FontsContractCompat:
Bu sınıf, yazı tipi isteğine göre yeni bir Typeface nesnesi oluşturmanıza olanak tanır.
Uygulamanız, FontsContract API'yi kullanarak yazı tipi sağlayıcıdan yazı tiplerini alır. Her sağlayıcının, desteklediği Android sürümleri ve sorgu diliyle ilgili kendi kısıtlamaları vardır. Android sürümleri ve sorgu biçimi hakkında daha fazla bilgi için sağlayıcınızın belgelerine bakın.
Yazı tipi indirmek için aşağıdaki adımları uygulayın:
Sağlayıcıdan yazı tipini istemek için android.graphics.fonts.FontRequest sınıfının bir örneğini oluşturun. İstek oluşturmak için aşağıdaki parametreleri iletin:
Yazı tipi sağlayıcı yetkilisi.
Sağlayıcının kimliğini doğrulamak için yazı tipi sağlayıcı paketi.
Yazı tipinin dize sorgusu. Sorgu biçimleri hakkında daha fazla bilgi için yazı tipi sağlayıcınızın (ör. Google Fonts) belgelerine bakın.
Sağlayıcının kimliğini doğrulamak için sertifikaların karma değer kümelerinin listesi.
Yazı tipi isteğinin tamamlandığını belirtmek için onTypefaceRetrieved() yöntemini geçersiz kılın. Alınan yazı tipini parametre olarak sağlayın.
Yazı tipini gerektiği gibi ayarlamak için bu yöntemi kullanabilirsiniz. Örneğin, TextView üzerinde yazı tipini ayarlayabilirsiniz.
Yazı tipi isteği sürecindeki hatalar hakkında bilgi almak için onTypefaceRequestFailed() yöntemini geçersiz kılın. Hata kodları hakkında daha fazla bilgi için hata kodu sabitleri bölümüne bakın.
Yazı tipi sağlayıcıdan yazı tipini almak için FontsContract.requestFont() yöntemini çağırın. Yöntem, yazı tipinin önbellekte olup olmadığını belirlemek için bir kontrol başlatır. Yazı tipi yerel olarak mevcut değilse yazı tipi sağlayıcıyı çağırır, yazı tipini eşzamansız olarak alır ve sonucu geri çağırmaya iletir. Aşağıdaki parametreleri iletin:
android.graphics.fonts.FontRequest sınıfının bir örneği
Yazı tipi isteğinin sonuçlarını almak için bir geri çağırma
Yazı tiplerini bir ileti dizisinde getiren işleyici
Aşağıdaki örnek kod, İndirilebilir Yazı Tipleri sürecinin tamamını göstermektedir:
Kotlin
valrequest=FontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs)valcallback=object:FontsContract.FontRequestCallback(){overridefunonTypefaceRetrieved(typeface:Typeface){// Your code to use the font goes here....}overridefunonTypefaceRequestFailed(reason:Int){// Your code to deal with the failure goes here....}}FontsContract.requestFonts(context,request,handler,null,callback)
Java
FontRequestrequest=newFontRequest("com.example.fontprovider.authority","com.example.fontprovider","my font",certs);FontsContract.FontRequestCallbackcallback=newFontsContract.FontRequestCallback(){@OverridepublicvoidonTypefaceRetrieved(Typefacetypeface){// Your code to use the font goes here....}@OverridepublicvoidonTypefaceRequestFailed(intreason){// Your code to deal with the failure goes here....}};FontsContract.requestFonts(context,request,handler,null,callback);
Yazı tipi sağlayıcıdan yazı tipi indirme hakkında daha fazla bilgi için DownloadableFonts örnek uygulamasına bakın.
AndroidX Core ile İndirilebilir Yazı Tipleri'ni kullanma
AndroidX Core, Android API 14 veya sonraki sürümleri çalıştıran cihazlarda İndirilebilir Yazı Tipleri özelliğini destekler. androidx.core.provider
paketi, geriye dönük uyumlu İndirilebilir Yazı Tipleri özelliği desteğini uygulamak için FontsContractCompat ve FontRequest sınıflarını içerir. AndroidX sınıfları, çerçeve yöntemlerine benzer yöntemler içerir ve yazı tipi indirme işlemi, bu sayfadaki İndirilebilir Yazı Tipleri'ni programatik olarak kullanma bölümünde açıklanan işleme benzer.
AndroidX kullanarak yazı tiplerini indirmek için androidx.core.provider paketinden FontsContractCompat ve FontRequest sınıflarını içe aktarın. FontsContract ve android.graphics.fonts.FontRequest çerçeve sınıfları yerine bu sınıfların örneklerini oluşturun.
AndroidX Core bağımlılığı ekleme
FontsContractCompat ve FontRequest sınıflarını kullanmak için geliştirme ortamınızda uygulama projenizin sınıf yolu bağımlılıklarını değiştirmeniz gerekir.
AndroidX Core'u uygulama projenize eklemek için uygulamanızın build.gradle dosyasına aşağıdaki bağımlılığı ekleyin:
İndirilebilir yazı tiplerini XML'de kaynak olarak kullanma
Android 8.0 (API düzeyi 26) ve AndroidX Core, özel bir yazı tipini XML düzeninde kaynak olarak tanımlamanın daha hızlı ve kolay bir yolunu sunar. Bu sayede, yazı tipini öğe olarak paketlemeniz gerekmez. Temanızın tamamı için özel bir yazı tipi tanımlayabilirsiniz. Bu sayede, kalın, orta veya ince gibi birden fazla ağırlık ve stil için kullanılabilirlik artar.
res/font klasöründe yeni bir XML dosyası oluşturun.
Bir <font-family> kök öğesi ekleyin ve aşağıdaki örnek XML dosyasında gösterildiği gibi yazı tipiyle ilgili özellikleri ayarlayın:
Düzen XML dosyasında dosyaya @font/font_file_name olarak referans verin. Dosyayı programatik olarak almak için getFont() yöntemini de kullanabilirsiniz (ör. getFont(R.font.font_file_name)).
Yazı tiplerini manifest dosyasında önceden bildirme
Düzen şişirme ve kaynak alma, eşzamanlı görevlerdir. Varsayılan olarak, yazı tiplerini alma yönündeki ilk girişim, yazı tipi sağlayıcıya bir istek gönderilmesini tetikler ve bu nedenle ilk düzen süresini artırır. Gecikmeyi önlemek için manifest dosyanızda alınması gereken yazı tiplerini önceden bildirebilirsiniz.
Sistem, yazı tipini sağlayıcıdan aldıktan sonra hemen kullanılabilir. Yazı tipinin alınması beklenenden uzun sürerse sistem, alma işlemini iptal eder ve varsayılan yazı tipini kullanır.
Yazı tiplerini manifest dosyasında önceden beyan etmek için aşağıdaki adımları uygulayın:
res/values/arrays.xml içinde bir kaynak dizisi oluşturun ve önceden getirmek istediğiniz yazı tiplerini tanımlayın.
Yazı tipi sağlayıcı önceden yüklenmemişse veya AndroidX Core kitaplığını kullanıyorsanız yazı tipi sağlayıcının imzalandığı sertifikaları beyan edin. Sistem, yazı tipi sağlayıcının kimliğini doğrulamak için sertifikaları kullanır.
Sertifika eklemek için aşağıdaki adımları uygulayın:
Sertifika ayrıntılarını içeren bir dize dizisi oluşturun. Sertifika ayrıntıları hakkında daha fazla bilgi için yazı tipi sağlayıcınızın belgelerine bakın.
Bu sayfadaki içerik ve kod örnekleri, İçerik Lisansı sayfasında açıklanan lisanslara tabidir. Java ve OpenJDK, Oracle ve/veya satış ortaklarının tescilli ticari markasıdır.