Banyak demo untuk berbagai strategi pemuatan font web. Beberapa di antaranya termasuk dalam panduan komprehensif untuk strategi pemuatan font, beberapa di antaranya lebih eksperimental .
Demo di-host di https://www.zachleat.com/web-fonts/demos/
Karena font web adalah peningkatan progresif dan dengan meningkatnya dukungan untuk CSS Font Loading API, kita dapat menantikan waktu di mana kita tidak perlu menyambungkan polyfill ke header (untuk pemuatan font yang bahkan lebih cepat). Resep API pemuatan font CSS yang disederhanakan adalah default, tetapi versi polyfilled disertakan untuk dukungan browser yang lebih luas - mungkin hanya versi polyfilled yang akan menampilkan font web di Internet Explorer dan Browser Web Edge (yang tidak memiliki dukungan untuk CSS Font Loading API).
font-display: swap@font-face Descriptorpreload<link>font-display: swap dengan preload<link> tag dan css : @font-face descriptorfont-display dan preloadMirip dengan yang di atas, tetapi tanpa menggunakan kelas - hanya menggunakan API memuat font CSS. Ini tidak memerlukan modifikasi CSS, menyuntikkan font web menggunakan JS secara terprogram. Saya pertama kali melihat metode ini di Buku Pegangan Webfont dari @Bramstein.
.style.fontFamily Metode (hanya bekerja dengan baik dengan satu keluarga per halaman), pertama kali melihat ini dalam tweet dari @simevidasDua muatan tahap, menggunakan satu file font Romawi di tahap pertama (dengan sintesis font).
preload<link> Tag dan JavaScript : CSS Font Memuat APIfont-display: optional dengan JavaScript.preload , dengan font-font font-display: optional<link> tag dan javascript : css font memuat API dan fontfaceoBserver polyfillIni tidak harus strategi pemuatan font sendiri tetapi mereka adalah peningkatan tambahan yang dapat Anda layer di atas dan berpasangan dengan strategi yang ada.
Pilih keluar dari font web pada kecepatan koneksi lambat.
prefers-reduced-motion Pilih keluar dari font web saat pengguna telah diaktifkan Reduce Motion .
save-data Pilih keluar dari font web saat pengguna telah mengaktifkan mode Data Saver .
Anda mungkin akan melihat posting blog tentang ini di beberapa titik.
font-display: optionalAyo. ?
Browser lama digunakan untuk membuat foit tanpa batas waktu, yang dalam praktiknya membuat font web menjadi satu titik kegagalan. Menggunakan WOFF2 hanya memotong mustard ke browser modern yang memiliki batas waktu FOIT tiga detik untuk font web. Kami tidak terlihat teks di sini, tetapi pendekatan ini layak disebutkan.
font-synthesis bukanlah produk akhir yang baik.
<style> suntikan Apa pun yang menggunakan JavaScript untuk menyuntikkan <style> baru dengan blok @font-face di dalamnya. Biaya mengecat ulang yang sangat buruk - menghindari ini. Ini digunakan dalam metode URI data asinkron di atas tetapi juga umum dalam metode kinerja yang lebih buruk juga.
font-display: optional dan preloadpreload dengan font-display: optional adalah anti-polafont-display (mencampur nilai font-display di seluruh font-family )Metode ini saat ini tidak memiliki dukungan lintas-browser. Saya berharap ini akan berubah - pelajari lebih banyak.
swap / 3 optional ) Ini adalah hal umum yang dicoba orang - mereka secara tidak sinkron memuat CSS (dan hanya CSS). Heck, saya menggunakan perilaku ini sebelum saya mulai mempelajari pemuatan font web.
@supports dan font-displayfont-displayfont-display tidak didukung (dan bekerja dengan baik tanpa dependensi JS)@supports tidak berfungsi dengan deskriptor wajah font.font-family Stack Masukkan dua atau lebih font-family dalam satu tumpukan font-family .
Gagal : Algoritma pencocokan font memilih font web pertama yang cocok dan berupaya memuatnya (mengabaikan keluarga font web berikutnya). Bahkan jika Anda preload tahap pertama subset, itu akan bertukar karena prioritas pesanan font-family .
Kode
Demo
UPDATE : Meskipun Anda dapat mengurangi masalah di atas dengan font-display , mungkin memodifikasi urutan stack font-family dan pemesanan blok @font-face , masih ada masalah dengan menghapus font web subset yang tidak perlu dari halaman setelah versi yang lebih besar dimuat. Fitur font yang terjadi dengan mesin terbang yang melintasi batas -batas file font ini akan rusak (kerning, ligatures, et cetera). Terkait, Anda tidak dapat menghapus objek FontFace berpasangan CSS menggunakan CSS Font Loading API (per spesifikasi).
** Perhatikan bahwa metode ini akan fout di Internet Explorer and Edge dengan memanfaatkan perilaku pemuatan font default mereka.