Menghindari font palsu di Android

Saya baru-baru ini mengalami masalah teks tebal dan miring palsu saat menggunakan keluarga font dalam pengembangan Android.



Pada artikel ini saya ingin berbicara tentang masalah ini dan solusinya.



Membuat keluarga font



Dimulai dengan API 26, font dapat digabungkan menjadi beberapa keluarga.

Keluarga font adalah kumpulan file font dengan gaya dan beratnya.



Anda bisa membuat keluarga font baru sebagai sumber daya XML dan merujuknya sebagai satu elemen, alih-alih menyebut setiap gaya dan bobot sebagai sumber daya terpisah.



Dengan cara ini sistem akan dapat memilih font yang benar berdasarkan gaya teks yang Anda coba gunakan.



File contoh:



<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:android="http://schemas.android.com/apk/res/android">
    <font
        android:fontStyle="normal"
        android:fontWeight="400"
        android:font="@font/lobster_regular" />
    <font
        android:fontStyle="italic"
        android:fontWeight="400"
        android:font="@font/lobster_italic" />
</font-family>


Opsi untuk Pustaka Dukungan
<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/lobster_regular" />
    <font
        app:fontStyle="italic"
        app:fontWeight="400"
        app:font="@font/lobster_italic" />
</font-family>


Atribut fontStylemenentukan gaya font - regular ( normal) atau italic ( italic).

Pada gilirannya, fontWeight- mengatur bobot, alias bobot font.

Dan tentu saja, itu fontakan mengatur font yang akan digunakan untuk yang diberikan fontWeightdan fontStyle.



Berat font



Standar ini berasal dari pengembangan web. Nilai ditetapkan dari 100 hingga 900 dengan kelipatan 100.



Tabel berikut sesuai dengan nama umum untuk saturasi:



Nilai Nama yang umum
100 Tipis (Berbulu)
200 Cahaya ekstra
300 Berwarna terang
400 Normal
500 Tengah
600 Mencolok
700 Berlemak
800 Sangat berani
900 Hitam (Tebal)


, , — 400, — 700.



.





, Android , .



, .



Lobster Two :







, , . , - .





, lobster_two.xml , , , :



<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/lobster_two_normal" />
    <font
        app:fontStyle="italic"
        app:fontWeight="400"
        app:font="@font/lobster_two_italic" />
    <font
        app:fontStyle="normal"
        app:fontWeight="700"
        app:font="@font/lobster_two_bold" />
    <font
        app:fontStyle="italic"
        app:fontWeight="700"
        app:font="@font/lobster_two_bold_italic" />
</font-family>


, lobster_two_incomplete.xml :



<?xml version="1.0" encoding="utf-8"?>
<font-family xmlns:app="http://schemas.android.com/apk/res-auto">
    <font
        app:fontStyle="normal"
        app:fontWeight="400"
        app:font="@font/lobster_two_normal" />
</font-family>


.



lobster_two_incomplete.xml, lobster_two.xml, .



, , .





// 
val typeFace = resources.getFont(R.font.lobster_two)
textView.setTypeface(typeFace, Typeface.BOLD)

//  
textView.typeface = resources.getFont(R.font.lobster_two_bold)

//  
val typeFace = resources.getFont(R.font.lobster_two_incomplete)
textView.setTypeface(typeFace, Typeface.BOLD)

//  
val typeFace = resources.getFont(R.font.lobster_two_normal)
textView.setTypeface(typeFace, Typeface.BOLD)


xml


// 
<TextView
          ...
          android:fontFamily="@font/lobster_two"
          android:textStyle="bold|italic"/>

//  
<TextView
          ...
          android:fontFamily="@font/lobster_two_bold_italic"/>

//  
<TextView
          ...
          android:fontFamily="@font/lobster_two_incomplete"
          android:textStyle="bold|italic"/>

// 
<TextView
          ...
          android:fontFamily="@font/lobster_two"
          android:textStyle="bold"/>

//  
<TextView
          ...
          android:fontFamily="@font/lobster_two_bold"/>

//  
<TextView
          ...
          android:fontFamily="@font/lobster_two_normal"
          android:textStyle="bold"/>



All Articles