Fitur Font yang Dapat Didownload memungkinkan API meminta font dari aplikasi penyedia, bukan memaketkan file ke dalam aplikasi atau mengizinkan aplikasi mendownload font. Font yang Dapat Didownload tersedia di perangkat yang menjalankan Android API versi 14 dan yang lebih tinggi melalui library AndroidX Core.
Font yang Dapat Didownload menawarkan manfaat berikut:
- Mengurangi ukuran aplikasi sehingga meningkatkan tingkat keberhasilan penginstalan aplikasi.
- Meningkatkan kesehatan sistem secara keseluruhan, karena beberapa aplikasi dapat berbagi font yang sama melalui penyedia layanan. Tindakan ini akan menghemat data seluler pengguna, memori ponsel, dan kapasitas disk. Pada model ini, {i>font<i} diambil melalui jaringan bila diperlukan.
Bagaimana cara kerja Font yang Dapat Didownload?
Penyedia font adalah aplikasi yang mengambil font dan membuat cache secara lokal sehingga aplikasi lain bisa meminta dan berbagi {i>font<i}. Gambar berikut mengilustrasikan prosesnya.
![Gambar yang menunjukkan komponen utama dalam proses compat Emoji](https://android-dot-devsite-v2-prod.appspot.com/static/guide/topics/ui/images/look-and-feel/downloadable-fonts/downloadable-fonts-process.png?hl=id)
Dasar-dasar
Anda dapat menggunakan fitur Font yang Dapat Didownload dengan cara berikut, yang akan dibahas secara detail' di bagian selanjutnya:
- Menggunakan Android Studio dan Layanan Google Play
- Secara terprogram
- Menggunakan library AndroidX Core
Menggunakan Font yang Dapat Didownload dengan Android Studio dan layanan Google Play
Anda dapat menyetel aplikasi Anda untuk mendownload font dengan menggunakan Android Studio 3.0 atau yang lebih tinggi. Untuk membantu Anda mulai menggunakan fitur Font yang Dapat Didownload, Anda dapat menggunakan penyedia font dari Google Play layanan IT perusahaan mereka.
- Di Layout Editor, pilih
TextView
. Lalu, di bagian Attributes, pilih fontFamily > Lebih Banyak Font.Gambar 2. Menggunakan Layout Editor. - Di menu Source, pilih Google Fonts.
- Dalam kotak Fonts, pilih font di bawah "Downloadable" area tersebut.
- Pilih Buat font yang dapat didownload, lalu klik OK.
Gambar 3. Memilih font dari jendela Resource.
Android Studio otomatis membuat file XML relevan yang diperlukan untuk merender font dengan benar di aplikasi Anda.
![Gambar yang menunjukkan cara melihat pratinjau font](https://android-dot-devsite-v2-prod.appspot.com/static/guide/topics/ui/images/look-and-feel/downloadable-fonts/preview-fonts.png?hl=id)
Menggunakan Font yang Dapat Didownload secara terprogram
Mulai dari Android 8.0 (API level 26), AndroidX Core menyediakan dukungan penuh untuk Font yang Dapat Didownload. Sebagai informasi selengkapnya tentang penggunaan library AndroidX Core, lihat Bagian library AndroidX Core Fonts yang dapat didownload di halaman ini.
Untuk menggunakan fitur Font yang Dapat Didownload secara terprogram, lakukan interaksi dengan dua class utama:
android.graphics.fonts.FontRequest
: class ini memungkinkan Anda membuat permintaan font.FontsContractCompat
: kelas ini memungkinkan Anda membuat ObjekTypeface
berdasarkan permintaan {i>font<i}.
Aplikasi Anda mengambil font dari penyedia font dengan menggunakan FontsContract
API. Masing-masing
memiliki serangkaian batasan sendiri pada versi Android dan bahasa kueri yang didukungnya. Sebagai
informasi selengkapnya tentang versi Android dan format kueri, lihat referensi
dokumentasi tambahan.
Untuk mendownload font, selesaikan langkah-langkah berikut:
- Buat instance class
android.graphics.fonts.FontRequest
untuk meminta font dari penyedia. Untuk membuat permintaan, teruskan parameter berikut:- Otoritas penyedia font.
- Paket penyedia font untuk memverifikasi identitas penyedia.
- Kueri string font. Untuk informasi selengkapnya tentang format kueri, lihat font Anda dokumentasi penyedia layanan, seperti Google Fonts.
- Daftar serangkaian hash bagi sertifikat untuk memverifikasi identitas penyedia.
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);
- Buat instance
FontsContract.FontRequestCallback
. - Ganti metode
onTypefaceRetrieved()
untuk menunjukkan bahwa permintaan font telah selesai. Masukkan font yang diambil sebagai parameter. Anda dapat menggunakan metode ini untuk menetapkan font sesuai kebutuhan. Misalnya, Anda dapat mengatur font padaTextView
. - Ganti metode
onTypefaceRequestFailed()
untuk menerima informasi tentang error dalam proses permintaan font. Untuk informasi lebih lanjut kode error, lihat konstanta kode error. - Panggil metode
FontsContract.requestFont()
untuk mengambil font dari font penyedia layanan. Metode ini memulai pemeriksaan untuk menentukan apakah font ada dalam cache. Jika {i>font<i} tidak tersedia secara lokal, ia memanggil penyedia {i>font<i}, mengambil {i>font<i} secara asinkron, dan meneruskan hasilnya ke callback. Teruskan parameter berikut:- Sebuah instance
Class
Context
- Instance class
android.graphics.fonts.FontRequest
- Callback untuk menerima hasil permintaan font
- Pengendali untuk mengambil font pada thread
- Sebuah instance
Class
Kode contoh berikut mengilustrasikan proses Font yang Dapat Didownload secara keseluruhan:
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);
Untuk informasi selengkapnya tentang cara mendownload font dari penyedia font, lihat DownloadableFonts aplikasi contoh.
Menggunakan Font yang Dapat Didownload dengan AndroidX Core
AndroidX Core menyediakan dukungan untuk fitur Font yang Dapat Didownload pada perangkat yang menjalankan Android
API versi 14 atau yang lebih baru. Tujuan
androidx.core.provider
paket berisi class FontsContractCompat
dan FontRequest
untuk diimplementasikan
dukungan fitur kompatibilitas mundur Font yang Dapat Didownload. Class AndroidX berisi metode
mirip dengan metode kerangka kerja, dan proses untuk mengunduh {i>font<i} mirip dengan yang
yang dijelaskan di bagian halaman ini tentang
menggunakan Font yang Dapat Didownload secara terprogram.
Untuk mendownload font menggunakan AndroidX, impor FontsContractCompat
dan
Class FontRequest
dari paket androidx.core.provider
. Berkreasi
dari semua instance class ini, bukan
FontsContract
dan
Class framework android.graphics.fonts.FontRequest
.
Menambahkan dependensi AndroidX Core
Untuk menggunakan class FontsContractCompat
dan FontRequest
, Anda harus mengubah
dependensi classpath project aplikasi Anda di dalam lingkungan pengembangan Anda.
Untuk menambahkan AndroidX Core ke project aplikasi, tambahkan dependensi berikut ke class aplikasi
File build.gradle
:
Groovy
dependencies { ... implementation "androidx.core:core-ktx:2.2.0" }
Kotlin
dependencies { ... implementation("androidx.core:core-ktx:2.2.0") }
Menggunakan Font yang Dapat Didownload sebagai resource dalam XML
Android 8.0 (API level 26) dan AndroidX Core menawarkan cara yang lebih cepat dan mudah untuk mendeklarasikan font kustom sebagai resource dalam tata letak XML. Ini berarti tidak perlu memaketkan {i>font<i} sebagai pada sebuah aset. Anda dapat menentukan font kustom untuk seluruh tema, yang mempercepat kegunaan beberapa bobot dan gaya, seperti tebal, sedang, atau ringan, jika disediakan.
- Buat file XML baru di folder
res/font
. - Tambahkan elemen root
<font-family>
dan tetapkan atribut terkait font, sebagai yang ditampilkan dalam contoh file XML berikut: - Lihat file sebagai
@font/font_file_name
dalam file XML tata letak. Anda juga dapat gunakangetFont()
untuk mengambil file secara terprogram, sepertigetFont(R.font.font_file_name)
.
<?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>
Deklarasikan font di awal dalam manifes
Perluasan tata letak dan pengambilan resource adalah tugas tersinkron. Secara {i>default<i}, upaya pertama untuk mengambil font akan memicu permintaan ke penyedia font, sehingga meningkatkan tata letak pertama baik. Untuk menghindari penundaan, Anda dapat mendeklarasikan di awal font yang perlu diambil dalam manifes. Setelah sistem mengambil font dari penyedia, font akan langsung tersedia. Font if pengambilan membutuhkan waktu lebih lama dari yang diperkirakan, sistem akan membatalkan proses pengambilan dan menggunakan metode {i>font<i}.
Untuk mendeklarasikan font di awal dalam manifes, selesaikan langkah-langkah berikut:
- Buat array resource di
res/values/arrays.xml
dan deklarasikan font yang Anda saya ingin ambil datanya. - Gunakan tag
meta-data
untuk mendeklarasikan array resource dalam manifes.
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>
<meta-data android:name="preloaded_fonts" android:resource="@array/preloaded_fonts" />
Tambahkan sertifikat
Jika penyedia font belum diinstal sebelumnya, atau jika Anda menggunakan library AndroidX Core, deklarasikan sertifikat yang digunakan untuk menandatangani penyedia font. Sistem menggunakan sertifikat tersebut untuk memverifikasi identitas penyedia font.
Lakukan langkah-langkah berikut untuk menambahkan sertifikat:
- Buat array string dengan detail sertifikat. Untuk informasi selengkapnya tentang sertifikat detailnya, lihat dokumentasi penyedia font Anda.
- Tetapkan atribut
fontProviderCerts
ke array.
<?xml version="1.0" encoding="utf-8"?> <resources> <string-array name="certs"> <item>MIIEqDCCA5CgAwIBAgIJA071MA0GCSqGSIb3DQEBBAUAMIGUMQsww...</item> </string-array> </resources>
android:fontProviderCerts="@array/certs"
Font yang Dapat Didownload di Compose
Dimulai dalam Compose 1.2-alpha07, Anda dapat menggunakan Downloadable Fonts API di aplikasi Compose untuk mendownload Google Fonts secara asinkron dan menggunakannya dalam aplikasi Anda. Sebagai informasi selengkapnya, lihat Dokumentasi Compose Font yang Dapat Didownload.