Ditulis oleh Florina Muntenescu, Android Developer Advocate
Menampilkan teks adalah tugas penting dalam sebagian besar aplikasi, jadi di Android Q kami terus menghadirkan fitur baru untuk meningkatkan kinerja dan mendukung kebutuhan Anda. Kami secara default menonaktifkan hyphenation, yang memungkinkan pembuatan jenis huruf menggunakan beberapa font atau jenis font, menampilkan daftar font yang terinstal pada perangkat, dan meningkatkan beberapa API penataan gaya teks yang paling sering digunakan.

Hyphenation secara default dinonaktifkan di Android Q dan AppCompat v1.1.0

Pengujian kinerja kami menunjukkan bahwa ketika hyphenation diaktifkan, 70% dari waktu yang dipakai untuk mengukur teks adalah pemrosesan hyphenation.
diagram lingkaran menunjukkan waktu yang dihabiskan CPU untuk membuat StaticLayout: Hyphenation membutuhkan waktu hingga 70% untuk mengukur teks, 30% untuk pemrosesan teks yang lain
Hyphenation membutuhkan waktu hingga 70% untuk mengukur teks
Mengingat bahwa hyphenation sering kali tidak dibutuhkan untuk semua TextViews dalam aplikasi, dan karena dampaknya pada kinerja, kami memutuskan untuk menonaktifkan hyphenation secara default di Android Q dan AppCompat v1.1.0. Jika Anda ingin menggunakan hyphenation, Anda harus mengaktifkannya secara manual di aplikasi dengan menyetel frekuensi hyphenation ke normal. Anda bisa menyetelnya dengan beberapa cara:
Sebagai atribut TextAppearance dalam styles.xml:
<style name="MyTextAppearance" parent="TextAppearance.AppCompat">
    <item name="android:hyphenationFrequency">normal</item>
</style>
Sebagai atribut TextView:
<TextView android:hyphenationFrequency="normal" />
Langsung dalam kode:
textView.hyphenationFrequency = Layout.HYPHENATION_FREQUENCY_NORMAL
Cari tahu selengkapnya tentang cara kerja hyphenation dari pembahasan di Android Dev Summit 2018.

Menggunakan beberapa font khusus dalam TextView yang sama

Pertimbangkan tombol yang memadukan font khusus (Lato dalam contoh ini) dengan font ikon:
Tombol Secure Checkout dengan ikon gembok, ikon dan font latin
Tombol dengan ikon dan font Latin
Class Button hanya menerima satu instance jenis huruf yang akan ditetapkan pada teks. Pra-Android Q, Anda bisa membuat Typeface menggunakan satu jenis font. Android Q memungkinkan pembuatan jenis huruf dari beberapa jenis font dengan API baru, Typeface.CustomFallbackBuilder, yang memungkinkan penambahan hingga 64 jenis font per jenis huruf.
Contoh font ikon kami bisa diimplementasikan seperti ini:
button.typeface = Typeface.CustomFallbackBuilder(
    // add the Latin font
    FontFamily.Builder(
        Font.Builder(assets, "lato.ttf").build()
    ).build()
).addCustomFallback(
    // add the icon font
    FontFamily.Builder(
        Font.Builder(assets, "icon_font.ttf").build()
    ).build()
).build()
Saat membuat jenis font, pastikan Anda tidak memasukkan font dari jenis yang berbeda ke dalam objek jenis font yang sama atau model font yang sama ke dalam jenis font yang sama. Misalnya, memasukkan Lato, Kosugi, dan Material ke dalam jenis font yang sama akan menciptakan konfigurasi yang tidak valid, seperti halnya memasukkan dua font bold ke dalam jenis font yang sama.
Untuk menetapkan jenis font umum (serif, sans-serif, atau monospace) agar digunakan ketika teks dirender menggunakan font sistem, gunakan metode setSystemFallback() untuk menyetel font pengganti sistem:
Typeface.CustomFallbackBuilder(
    FontFamily.Builder(
       ...
    ).build()
).setSystemFallback("sans-serif")
.build()

Update API penataan gaya teks

Android Q menghadirkan beberapa update ke berbagai API penataan gaya teks:

Peningkatan dukungan untuk font variabel

TextAppearance sekarang mendukung atribut fontVariationSettings:
<style name="MyTextAppearance" parent="TextAppearance.AppCompat">
    <item name="android:fontVariationSettings">...</item>
</style>
Atribut fontVariationSettings bisa diatur langsung pada TextView di Android Q dan di AppCompatTextView:
<TextView
    ...
    app:fontVariationSettings="..."
/>

Peningkatan API durasi

TextAppearanceSpan sekarang mendukung typeface, setelan shadow, fontFeatureSettings dan fontVariationSettings.
Antarmuka LineBackgroundSpan dan LineHeightSpan sekarang memiliki implementasi standar: LineBackgroundSpan.Standard dan LineHeightSpan.Standard.


Mengakses font sistem

Dengan lebih dari 100 bahasa yang didukung oleh Android, dan dengan berbagai font yang mendukung beragam himpunan karakter, mengetahui font sistem yang bisa merender karakter yang diinginkan tidaklah mudah. Aplikasi yang melakukan perenderan teks sendiri seperti game, penampil dokumen, atau browser memerlukan informasi ini. Di Android Q, Anda bisa mengambil font sistem yang didukung untuk string dengan FontMatcher NDK API.
Font sistem yang bisa merender teks ini
Font sistem yang bisa merender teks ini
Mari perhatikan string penelusuran di atas. FontMatcher API menunjukkan kepada kita objek font dan panjangnya. Contoh pseudocode yang disederhanakan terlihat seperti ini:
// font = NotoSansCJK-Regular.ttc
// length = 2
auto[font, length] = AFontMatcher_match("たすく a.k.a. のな");

// font = Roboto-Regular.ttf
// length = 8
auto[font, length] = AFontMatcher_match(" a.k.a. のな");

// font = NotoSansCJK-Regular.ttc
// length = 2
auto[font, length] = AFontMatcher_match("のな");
FontMatcher API tidak akan menunjukkan nullptr:
  • Jika tidak ada font yang mendukung string yang diberikan, font Tofu (󟿽), simbol hieroglif, yang akan ditampilkan.
  • Jika tidak ditemukan dukungan model yang pas, font dengan model yang paling sesuai dan mirip akan ditampilkan.
Jika Anda ingin mendapatkan semua font sistem yang tersedia, Anda bisa melakukannya dengan API enumerasi font yang baru. Dalam Java, Anda bisa menggunakan SystemFonts.getAvailableFonts, atau di NDK, Anda dapat menggunakan ASystemFontIterator. Hasil enumerasi font hanya bisa diubah oleh update sistem, jadi Anda harus menyimpannya dalam cache.


Update font

Font Myanmar baru

Android menambahkan font Myanmar baru ke Android Q yang kompatibel dengan Unicode dan mampu merender Bahasa Myanmar Unicode dan non-Unicode (yang biasa dikenal sebagai Zawgyi), secara langsung. Ini berarti mulai dari Android Q, Android memudahkan pengguna untuk beralih ke Unicode: sekarang pengguna bisa menggunakan font Unicode untuk membaca teks Unicode dan non-Unicode untuk pertama kalinya. Android juga menambahkan persyaratan baru untuk CDD ekosistem Android yang mengambil posisi lebih kuat terhadap kebutuhan Unicode, termasuk subtag baru "Qaag" yang harus digunakan OEM sebagai lokal yang menandakan Bahasa Myanmar non-Unicode. Semua perubahan ini akan sangat membantu dan mempermudah developer dalam jangka panjang, karena berkurangnya fragmentasi ekosistem membuatnya lebih mudah untuk dikembangkan bagi 50 juta pengguna kami di Myanmar.

Emoji baru

Emoji baru di Android Q
Emoji baru di Android Q
Katakan Halo kepada teman-teman emoji baru Anda! Update terbaru mencakup sejumlah emoji yang berfokus pada disabilitas, 59 desain inklusif gender, pasangan multi-ras, serta beberapa binatang lucu dan barang-barang rumah tangga. Lihat emoji terbaru dan terkeren pada Gboard di perangkat Android Q pilihan Anda.
Teks memainkan peran penting dalam sebagian besar aplikasi, jadi kami terus berinvestasi dalam meningkatkan fitur dan kinerja API teks. Pelajari lebih lanjut tentang API baru di Android Q bersama dengan praktik terbaik saat bekerja dengan teks dalam pembicaraan Google I/O 2019: