İndirilebilir Yazı Tipleri Kullanma

"Oluştur" yöntemini deneyin
Jetpack Compose, Android için önerilen kullanıcı arayüzü araç setidir. Compose'da metni nasıl kullanacağınızı öğrenin.

İndirilebilir Yazı Tipleri özelliği, API'lerin dosyaları uygulamada gruplandırmak veya uygulamanın yazı tiplerini indirmesine izin vermek. İndirilebilir yazı tipleri şurada mevcuttur: Android API 14 ve sonraki sürümleri çalıştıran cihazlar (AndroidX Core kitaplığı üzerinden)

İndirilebilir Yazı Tipleri şu avantajları sunar:

  • Uygulama boyutunu küçülterek uygulamanın yükleme başarı oranını artırır.
  • Birden çok uygulama aynı yazı tipini bir tarayıcıyla paylaşabileceğinden, genel sistem sağlığını iyileştirir. sağlar. Bu, kullanıcıların hücresel veri kullanımından, telefon belleğinden ve disk alanından tasarruf etmesini sağlar. Bu modelde yazı tipi gerektiğinde ağ üzerinden getirilir.
ziyaret edin. İndirilebilir Yazı Tipleri ile ilgili uygulamalı deneyim için bkz. İndirilebilirYazı Tipleri örnek uygulama.

İndirilebilir Yazı Tipleri nasıl çalışır?

Yazı tipi sağlayıcısı, diğer uygulamaların yazı tipini alıp yerel olarak önbelleğe almasını sağlayan bir uygulamadır. yazı tiplerini sunabilir. Aşağıdaki şekilde bu işlem gösterilmektedir.

Emoji karşılaştırma işlemindeki ana bileşenleri gösteren resimler
Şekil 1. İndirilebilir yazı tipleri işlemi.

Temel bilgiler

İndirilebilir yazı tipleri özelliğini şu şekillerde kullanabilirsiniz: sonraki bölümlerde:

Android Studio ve Google Play Hizmetleri'nde İndirilebilir Yazı Tiplerini kullanma

Android Studio 3.0 veya sonraki bir sürümü kullanarak uygulamanızı yazı tipleri indirecek şekilde ayarlayabilirsiniz. Size yardımcı olmak için İndirilebilir Yazı Tipleri özelliklerini kullanmaya başlamak için Google Play'in yazı tipi sağlayıcısını kullanabilirsiniz. kullanıma sunuyoruz.

  1. Düzen Düzenleyici'de bir TextView seçin. Ardından, Özellikler'in altında fontFamily > Diğer Yazı Tipleri'ni tıklayın.
    Android Studio Düzen Düzenleyicisi'ni gösteren resim
    Şekil 2. Düzen Düzenleyici'yi kullanma.
    ziyaret edin.
    'nı inceleyin. Kaynaklar penceresi görünür.
  2. Kaynak menüsünde Google Fonts'u seçin.
  3. Yazı tipleri kutusunda, "İndirilebilir" bölümünün altında bir yazı tipi seçin. alanı.
  4. İndirilebilir yazı tipi oluştur'u seçip Tamam'ı tıklayın.
    Kaynaklar penceresinden yazı tiplerinin nasıl seçileceğini gösteren resim
    Şekil 3. Kaynaklar penceresinden bir yazı tipi seçin.
  5. Android Studio, yazı tipini oluşturmak için gereken ilgili XML dosyalarını otomatik olarak oluşturur doğru şekilde ekleyebilirsiniz.

    Yazı tiplerinin nasıl önizleneceğini gösteren resim
    Şekil 4. Yazı tipi dosyasının önizlemesi.

İndirilebilir yazı tiplerini programatik olarak kullanma

AndroidX Core, Android 8.0 (API düzeyi 26) sürümünden itibaren İndirilebilir Yazı Tipleri için tam destek sağlamaktadır. Örneğin, AndroidX Core kitaplığını kullanmayla ilgili daha fazla bilgiyi şurada bulabilirsiniz: Bu sayfadaki İndirilebilir Fonts AndroidX Core kitaplığı bölümü

İndirilebilir Yazı Tipleri özelliğini programatik olarak kullanmak için iki temel sınıfla etkileşimde bulunun:

Uygulamanız, FontsContract API'yi kullanarak yazı tipi sağlayıcıdan yazı tiplerini alıyor. Her biri Sağlayıcının, desteklediği Android sürümleri ve sorgu dili için kendi kısıtlamaları vardır. Örneğin, hakkında daha fazla bilgi edinmek istiyorsanız sağlayıcınızın belgelerinden faydalanabilirsiniz.

Bir yazı tipi indirmek için aşağıdaki adımları tamamlayın:

  1. Şu isteği göndermek için android.graphics.fonts.FontRequest sınıfının bir örneğini oluşturun: yazı tipini seçin. Bir istek 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 kullanılan yazı tipi sağlayıcı paketi.
    • Yazı tipinin dize sorgusu. Sorgu biçimleri hakkında daha fazla bilgi için yazı tipinize bakın tedarikçinin belgeleri, Google Fonts.
    • Sağlayıcının kimliğini doğrulamak için sertifikalara ait karma gruplarının listesi.

    Kotlin

    val request = FontRequest(
            "com.example.fontprovider.authority",
            "com.example.fontprovider",
            "my font",
            certs
    )
    

    Java

    FontRequest request = new FontRequest("com.example.fontprovider",
                       "com.example.fontprovider", "my font", certs);
    
  2. Şunun bir örneğini oluşturun: FontsContract.FontRequestCallback. sınıfını kullanır.
  3. Geçersiz kıl onTypefaceRetrieved(). yöntemini kullanın. Alınan yazı tipini parametre olarak sağlayın. Yazı tipini gerektiği gibi ayarlamak için bu yöntemi kullanabilirsiniz. Örneğin, bir arka plandaki yazı tipini TextView
  4. Geçersiz kıl onTypefaceRequestFailed(). yöntemini kullanabilirsiniz. Okuyucu Gelirleri Yöneticisi'ni daha fazla bilgi için hata kodu sabitleridir.
  5. Yazı tipinden yazı tipini almak için FontsContract.requestFont() yöntemini çağırın sağlar. Bu yöntem, yazı tipinin önbellekte mevcut olup olmadığını belirlemek için bir kontrol başlatır. Eğer yazı tipi yerel olarak kullanılamıyor, yazı tipi sağlayıcıyı çağırıyor, yazı tipini alıyor eşzamansız olarak yapar ve sonucu geri çağırmaya iletir. Aşağıdaki parametreleri iletin:
    • Bir Context sınıf
    • android.graphics.fonts.FontRequest sınıfının bir örneği
    • Yazı tipi isteğinin sonuçlarını almak için geri arama
    • Bir ileti dizisindeki yazı tiplerini getirmek için kullanılan işleyici

Aşağıdaki örnek kodda Genel İndirilebilir Yazı Tipleri süreci gösterilmektedir:

Kotlin

val request = FontRequest(
        "com.example.fontprovider.authority",
        "com.example.fontprovider",
        "my font",
        certs
)
val callback = object : FontsContract.FontRequestCallback() {

    override fun onTypefaceRetrieved(typeface: Typeface) {
        // Your code to use the font goes here.
        ...
    }

    override fun onTypefaceRequestFailed(reason: Int) {
        // Your code to deal with the failure goes here.
        ...
    }
}
FontsContract.requestFonts(context, request, handler, null, callback)

Java

FontRequest request = new FontRequest("com.example.fontprovider.authority",
        "com.example.fontprovider", "my font", certs);
FontsContract.FontRequestCallback callback =
    new FontsContract.FontRequestCallback() {
        @Override
        public void onTypefaceRetrieved(Typeface typeface) {
            // Your code to use the font goes here.
            ...
        }

        @Override
        public void onTypefaceRequestFailed(int reason) {
            // Your code to deal with the failure goes here.
            ...
        }
};
FontsContract.requestFonts(context, request, handler, null, callback);

Bir yazı tipi sağlayıcısından bir yazı tipini nasıl indireceğiniz hakkında daha fazla bilgi için İndirilebilir yazı tipleri örnek uygulama.

AndroidX Core'da İndirilebilir Yazı Tiplerini Kullanma

AndroidX Core, Android çalıştıran cihazlarda İndirilebilir Yazı Tipleri özelliğini destekler. API 14 veya sonraki sürümler. İlgili içeriği oluşturmak için kullanılan androidx.core.provider. paket, uygulanacak FontsContractCompat ve FontRequest sınıf içeriyor Geriye dönük uyumlu İndirilebilir Yazı Tipleri desteği hakkında daha fazla bilgi edinin. AndroidX sınıfları yöntemler içerir ve yazı tipi indirme süreci, çerçeve yöntemlerine benzer. ilgili konu başlıklı bölümde İndirilebilir Yazı Tiplerini programatik olarak kullanma.

Yazı tiplerini AndroidX kullanarak indirmek için FontsContractCompat ve androidx.core.provider paketinde FontRequest sınıf. İçerik üretme bu sınıfların örneklerini FontsContract ve android.graphics.fonts.FontRequest çerçeve sınıfı.

AndroidX Core bağımlılığı ekleyin

FontsContractCompat ve FontRequest sınıflarını kullanmak için değişiklik yapmanız gerekir uygulama projenizin geliştirme ortamınızdaki sınıf yolu bağımlılıklarını

AndroidX Core'u uygulama projenize eklemek için aşağıdaki bağımlılığı uygulamanızın build.gradle dosyası:

Eski

dependencies {
    ...
    implementation "androidx.core:core-ktx:2.2.0"
}

Kotlin

dependencies {
    ...
    implementation("androidx.core:core-ktx:2.2.0")
}

İndirilebilir yazı tiplerini XML'de kaynak olarak kullanın

Android 8.0 (API düzeyi 26) ve AndroidX Core, APK'yı beyan etmenin daha hızlı ve daha kolay bir yolunu sunar. XML düzeninde kaynak olarak özel yazı tipini destekler. Bu, yazı tipini iki veya daha fazla bir öğedir. Temanızın tamamı için özel bir yazı tipi tanımlayabilir ve böylece temanızın kullanılabilirliğini hızlandırabilirsiniz birden fazla ağırlık ve stil (ör. kalın, orta veya açık) kullanabilirsiniz.

  1. res/font klasöründe yeni bir XML dosyası oluşturun.
  2. Bir <font-family> kök öğesi ekleyin ve yazı tipiyle ilgili özellikleri aşağıdaki gibi ayarlayın: aşağıdaki örnek XML dosyasında gösterilmiştir:
  3. <?xml version="1.0" encoding="utf-8"?>
    <font-family xmlns:android="http://schemas.android.com/apk/res/android"
            android:fontProviderAuthority="com.example.fontprovider.authority"
            android:fontProviderPackage="com.example.fontprovider"
            android:fontProviderQuery="example font"
            android:fontProviderCerts="@array/certs">
    </font-family>
    
  4. Düzen XML dosyasında dosyaya @font/font_file_name olarak bakın. Ayrıca transkriptinizi her bir arama terimi için getFont(). yöntem olarak kullanabilirsiniz (örneğin, getFont(R.font.font_file_name).

Manifest'teki yazı tiplerini önceden bildir

Düzen genişletme ve kaynak alma eşzamanlı görevlerdir. Varsayılan olarak, ilk denemede yazı tiplerini almak, yazı tipi sağlayıcıya yapılan bir isteği tetikler ve böylece ilk düzeni artırır gerekir. Gecikmeyi önlemek için manifestinizde alınması gereken yazı tiplerini önceden bildirebilirsiniz. Sistem, yazı tipini sağlayıcıdan aldıktan sonra hemen kullanılabilir. Yazı tipi ise alma işlemi beklenenden daha uzun sürerse sistem, getirme işlemini iptal eder ve varsayılan yazı tipi.

Manifest'teki yazı tiplerini önceden bildirmek için aşağıdaki adımları tamamlayın:

  1. res/values/arrays.xml içinde bir kaynak dizisi oluşturun ve önceden getirmek istiyorum.
  2. res/values/arrays.xml
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <array name="preloaded_fonts">
            <item>@font/font1</item>
            <item>@font/font2</item>
        </array>
    </resources>
    
  3. Manifest'inizdeki kaynak dizisini bildirmek için bir meta-data etiketi kullanın.
  4. <meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
    

Sertifika ekle

Bir yazı tipi sağlayıcı önceden yüklenmemişse veya AndroidX Core kitaplığını kullanıyorsanız şunu bildirin: yazı tipi sağlayıcısının imzalandığı sertifikaları gösterir. Sistem, alan adını doğrulamak için sertifikaları Yazı tipi sağlayıcısının kimliği.

Sertifika eklemek için aşağıdaki adımları uygulayın:

  1. Sertifika ayrıntılarıyla bir dize dizisi oluşturun. Sertifika hakkında daha fazla bilgi için yazı tipi sağlayıcınızın dokümanlarına bakın.
  2. <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string-array name="certs">
           <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item>
        </string-array>
    </resources>
    
  3. fontProviderCerts özelliğini diziye ayarlayın.
  4. android:fontProviderCerts="@array/certs"
    

Compose'daki İndirilebilir Yazı Tipleri

Başlamak için kalan süre: 1.2-alpha07 oluşturun, Compose uygulamanızda Downloadable Fonts API'yi Google Fonts'u eşzamansız olarak kullanıp uygulamanızda kullanabilirsiniz. Örneğin, daha fazla bilgi için İndirilebilir Yazı Tipleri oluşturun.