Saat font web dimuat, kini Anda dapat menyesuaikan skalanya, untuk menormalkan ukuran font dokumen, dan mencegah pergeseran tata letak saat beralih di antara font
Pertimbangkan demo
berikut di mana font-size
adalah 64px
yang konsisten, dan satu-satunya perbedaan di antara setiap header ini adalah font-family
. Contoh di sebelah kiri belum disesuaikan dan
memiliki ukuran akhir yang tidak konsisten. Contoh di sebelah kanan menggunakan size-adjust
untuk
memastikan 64px
adalah ukuran akhir yang konsisten.
Postingan ini membahas deskripsi font-face CSS
baru yang disebut
size-adjust
. Bagian ini juga menunjukkan beberapa cara untuk memperbaiki dan menormalkan ukuran font
untuk pengalaman pengguna yang lebih lancar, sistem desain yang konsisten, dan tata letak halaman
yang lebih dapat diprediksi. Salah satu kasus penggunaan yang penting adalah mengoptimalkan rendering font web untuk mencegah
pergeseran tata letak kumulatif (CLS).
Berikut adalah demo interaktif dari ruang masalah. Coba ubah typeface dengan dropdown dan amati:
- Perbedaan tinggi dalam hasil.
- Perubahan konten yang mengganggu secara visual.
- Menggerakkan area target interaktif (menu dropdown melompat-lompat!).
Cara menskalakan font dengan size-adjust
Pengantar sintaksis:
@font-face {
font-family: "Adjusted Typeface";
size-adjust: 150%;
src: url(some/path/to/typeface.woff2) format('woff2');
}
- Membuat typeface kustom bernama
Adjusted Typeface
. - Menggunakan
size-adjust
untuk meningkatkan skala setiap glyph hingga 150% ukuran defaultnya. - Hanya memengaruhi satu jenis huruf yang diimpor.
Gunakan typeface kustom di atas seperti ini:
h1 {
font-family: "Adjusted Typeface";
}
Mengurangi CLS dengan penggantian font yang lancar
Dalam gif berikut, tonton contoh di sebelah kiri dan bagaimana ada pergeseran saat font diubah. Ini hanyalah contoh kecil dengan satu elemen judul dan masalahnya sangat terlihat.
Untuk meningkatkan rendering font, teknik yang baik adalah pertukaran font. Render font sistem yang dimuat dengan cepat untuk menampilkan konten terlebih dahulu, lalu ganti dengan font web saat font web selesai dimuat. Hal ini memberi Anda manfaat terbaik dari kedua hal tersebut: konten dapat dilihat sesegera mungkin, dan Anda mendapatkan halaman dengan gaya yang bagus tanpa mengurangi waktu pengguna untuk konten. Namun, masalahnya adalah terkadang font web dimuat, font akan menggeser seluruh halaman karena ditampilkan dengan ukuran tinggi kotak yang sedikit berbeda.
Dengan menempatkan size-adjust
di aturan @font-face
, tindakan ini akan menetapkan penyesuaian glyph global
untuk tampilan font. Pengaturan waktu yang benar ini akan menghasilkan sedikit perubahan
visual, pertukaran yang lancar. Untuk membuat pertukaran yang lancar, sesuaikan secara manual atau coba
kalkulator
penyesuaian ukuran
ini oleh Malte Ubl.
Di awal postingan ini, memperbaiki masalah ukuran font dilakukan dengan uji coba. size-adjust
mendorong dalam kode sumber hingga header yang sama di Cookie
dan Arial
merender 64px
yang sama seperti yang dilakukan Press Start 2P
secara alami.
Saya menyelaraskan dua font ke ukuran font target.
@font-face {
font-family: 'Adjusted Arial';
size-adjust: 86%;
src: local(Arial);
}
@font-face {
font-family: 'Cookie';
size-adjust: 90.25%;
src: url(...woff2) format('woff2');
}
Melakukan kalibrasi font
Anda sebagai penulis menentukan target kalibrasi untuk menormalisasi skala font. Anda dapat melakukan normalisasi pada Times, Arial, atau font sistem, lalu menyesuaikan font kustom agar cocok. Atau, Anda dapat menyesuaikan font lokal agar cocok dengan yang Anda download.
Strategi untuk kalibrasi size-adjust
:
- Target jarak jauh:
Menyesuaikan font lokal ke font yang didownload. - Target lokal:
Menyesuaikan font yang didownload dengan font target lokal.
Contoh 1: Target jarak jauh
Pertimbangkan cuplikan berikut yang menyesuaikan font yang tersedia secara lokal agar ukurannya cocok dengan font kustom src jarak jauh. Font kustom jarak jauh adalah target untuk kalibrasi, mungkin font merek:
@font-face {
font-family: "Adjusted Regular Arial For Brand";
src: local(Arial);
size-adjust: 90%;
}
@font-face {
font-family: "Rad Brand";
src: url(some/path/to/a.woff2) format('woff2');
}
html {
font-family: "Rad Brand", "Adjusted Regular Arial For Brand";
}
Dalam contoh ini, font lokal Arial disesuaikan untuk mengantisipasi font kustom yang dimuat, untuk penggantian yang lancar.
Strategi ini memiliki keuntungan menawarkan {i>font<i} yang sama untuk ukuran dan tipografi kepada desainer dan pengembang. Brand adalah target kalibrasinya. Ini adalah kabar baik untuk sistem desain.
Menetapkan jenis huruf merek sebagai target juga merupakan cara kerja kalkulator Malte. Pilih Font Google dan font tersebut akan menghitung cara menyesuaikan Arial agar dapat ditukar dengan lancar. Berikut ini contoh CSS Roboto dari kalkulator, dengan Arial dimuat dan diberi nama "Roboto-fallback":
@font-face {
font-family: "Roboto-fallback";
size-adjust: 100.06%;
src: local("Arial");
}
Untuk membuat penyesuaian lintas platform sepenuhnya, lihat contoh berikut yang memberikan 2 font penggantian lokal yang disesuaikan untuk mengantisipasi font merek.
@font-face {
font-family: "Roboto-fallback-1";
size-adjust: 100.06%;
src: local("Arial");
}
@font-face {
font-family: "Roboto-fallback-2";
size-adjust: 99.94%;
src: local("Arimo");
}
@font-face {
font-family: "Roboto Regular";
src: url(some/path/to/roboto.woff2) format('woff2');
}
html {
font-family: "Roboto Regular", "Roboto-fallback-1", "Roboto-fallback-2";
}
Contoh 2: Target lokal
Pertimbangkan cuplikan berikut yang menyesuaikan font khusus merek agar cocok dengan Arial:
@font-face {
font-family: "Rad Brand - Adjusted For Arial";
src: url(some/path/to/a.woff2) format('woff2');
size-adjust: 110%;
}
html {
font-family: "Rad Brand - Adjusted For Arial", Arial;
}
Strategi ini memiliki keunggulan rendering tanpa penyesuaian apa pun, lalu menyesuaikan font yang masuk agar cocok.
Penyesuaian yang lebih baik dengan ascent-override
, descent-override
, dan line-gap-override
Jika penskalaan umum glyph tidak cukup untuk penyesuaian desain atau strategi
pemuatan Anda, berikut beberapa opsi penyesuaian yang lebih baik yang berfungsi bersama
size-adjust
. Properti
ascent-override
,
descent-override
,
dan
line-gap-override
saat ini diterapkan di Chromium 87+, dan Firefox 89+.
ascent-override
Deskripsi ascent-override
menentukan tinggi di atas dasar pengukuran
font.
@font-face {
font-family: "Ascent Adjusted Arial Bold";
src: local(Arial Bold);
ascent-override: 71%;
}
Judul merah (tidak disesuaikan) memiliki spasi di atas huruf kapital A dan O, sedangkan judul biru telah disesuaikan sehingga tinggi batas pas dengan kotak pembatas secara keseluruhan.
descent-override
Deskripsi descent-override
menentukan tinggi di bawah dasar font.
@font-face {
font-family: "Ascent Adjusted Arial Bold";
src: local(Arial Bold);
descent-override: 0%;
}
Judul berwarna merah (tidak disesuaikan) memiliki spasi di bawah dasar bawaan D dan O, sedangkan judul biru telah disesuaikan sehingga hurufnya terpasang dengan pas di dasar pengukuran.
line-gap-override
Deskripsi line-gap-override
menentukan metrik spasi baris untuk font.
Ini adalah spasi baris atau leading eksternal yang direkomendasikan untuk font.
@font-face {
font-family: "Line Gap Adjusted Arial";
src: local(Arial);
line-gap-override: 50%;
}
Judul merah (tidak disesuaikan) tidak memiliki line-gap-override
, pada dasarnya judul ini berada di
0%
, sedangkan judul biru telah disesuaikan sebesar 50%, sehingga menciptakan ruang di atas
dan di bawah huruf-huruf tersebut.
Menggabungkan semuanya
Setiap penggantian ini menawarkan cara tambahan untuk memangkas kelebihan dari kotak pembatas teks aman web. Anda dapat menyesuaikan kotak teks untuk presentasi yang akurat.
Kesimpulan
Fitur CSS @font-face
size-adjust
adalah cara yang menarik untuk menyesuaikan
kotak pembatas teks tata letak web Anda guna meningkatkan pengalaman penggantian font
sehingga menghindari pergeseran tata letak bagi pengguna. Untuk mempelajari lebih lanjut, lihat referensi
berikut:
- Spesifikasi Font CSS Level 5
- Penyesuaian Ukuran di MDN
- Generator @font-face yang dapat ditukar dengan lancar
- Pergeseran Tata Letak Kumulatif (CLS) di web.dev
- Cara Baru untuk Mengurangi Dampak Pemuatan Font: Deskripsi Font CSS
Foto oleh Kristian Strand di Unsplash