Dalam masa yang sama, pelayar telah mengadopsi beberapa strategi untuk mengurangkan masalah ini. Tetapi mereka melakukan ini dengan cara yang berbeza dan keluar dari kawalan pemaju, yang terpaksa membuat beberapa teknik dan penyelesaian untuk mengatasi isu -isu ini.
menggunakan font-display
Pertama sekali, font-dinsplay bukanlah harta CSS tetapi, seperti yang dinyatakan dalam intro, ia adalah deskriptor untuk @font-face at-rule. Ini bermakna ia mesti digunakan di dalam peraturan @font-face, seperti yang ditunjukkan dalam kod berikut:
<span><span>@font-face</span> { </span> <span>font-family: 'Saira Condensed'; </span> <span>src: <span>url(fonts/sairacondensed.woff2)</span> format('woff2'); </span> <span>font-display: swap; </span><span>}</span>
Kata kunci untuk semua nilai yang ada ialah:
Di bahagian kemudian saya akan pergi ke setiap nilai ini secara terperinci. Tetapi pertama, mari kita lihat tempoh masa yang digunakan oleh penyemak imbas untuk menentukan fon yang akan diberikan. Apabila membincangkan setiap nilai, saya akan menerangkan aspek -aspek yang berbeza dari garis masa dan bagaimana ini berkelakuan untuk setiap nilai.
pada teras ciri ini adalah konsep garis masa font-paparan. Masa pemuatan fon, bermula dari permintaannya dan berakhir dengan pemuatan atau kegagalannya yang berjaya, boleh dibahagikan kepada tiga tempoh berturut -turut yang menentukan bagaimana pelayar harus menjadikan teks itu. Ketiga -tiga tempoh ini adalah seperti berikut:
Melaraskan tempoh tempoh tersebut membolehkan anda mengkonfigurasi strategi rendering teks tersuai. Khususnya, tempoh ini boleh runtuh ke sifar atau meluas ke tak terhingga, seperti yang saya akan menunjukkan kepada anda di bahagian berikut.
tetapi tempoh ini tidak dapat ditugaskan secara eksplisit oleh pemaju. Kemungkinan ini diperiksa pada peringkat awal spesifikasi, tetapi telah dijatuhkan. Sebaliknya, satu set nilai kata kunci yang telah ditetapkan yang boleh mengendalikan majoriti kes penggunaan disediakan, seperti yang digariskan dalam bahagian sebelumnya.
mari kita lihat bagaimana setiap kata kunci ini menguruskan proses pemuatan dan paparan fon.
Nilai ini memberitahu penyemak imbas untuk mengadopsi tingkah laku paparan fon lalai yang dipilih oleh penyemak imbas. Selalunya strategi ini serupa dengan nilai seterusnya, blok.
Dengan nilai ini, selepas tempoh blok pendek (spesifikasi mencadangkan tempoh tiga saat), tempoh swap meluas ke tak terhingga. Ini bermakna bahawa dalam keadaan ini tempoh kegagalan tidak hadir.
Walaupun penyemak imbas secara ringkas menunggu fon yang diminta, ia menjadikan teks dengan fon sandaran yang tidak dapat dilihat; Selepas itu, jika fon belum tersedia, fon sandaran dibuat kelihatan; Dan setiap kali muat turun selesai, pelayar menyusun semula teks dengan font yang dikehendaki.
anda boleh menonton tingkah laku ini dalam video berikut, yang menggunakan halaman ujian mudah yang menggabungkan font web tertentu untuk tajuknya:
3Dengan nilai ini, tempoh blok runtuh hingga 0 dan tempoh swap meluas ke tak terhingga. Oleh itu, di sini juga, tempoh kegagalan hilang.
mari sahkan ini:
3
font-dinsplay: fallback
Dalam video pertama ini di bawah ini, fon beban selepas lebih daripada enam saat, oleh itu ia tidak pernah ditukar dalam:3
Apabila saya mula -mula membaca spesifikasi, saya dapati nama -nama yang diberikan kepada strategi paparan fon tidak begitu jelas. Ini juga ditunjukkan dalam spesifikasi itu sendiri, yang mencadangkan versi masa depan penggunaan nama yang lebih baik menggambarkan penggunaan setiap strategi yang dimaksudkan, mencadangkan alternatif berikut:
memerlukan blok
Dengan nilai ini, garis masa paparan fon mempunyai tempoh blok pendek (sekali lagi, spec mencadangkan selang waktu 100 ms) dan tempoh swap sifar. Oleh itu, tempoh kegagalan segera mengikuti tempoh blok, yang bermaksud bahawa jika fon tidak tersedia, ia tidak akan digunakan untuk tempoh lawatan halaman. Tetapi fon akhirnya boleh dimuat turun sepenuhnya di latar belakang dan oleh itu ia akan tersedia untuk rendering segera pada beban halaman masa depan.
Tetapi saya harus menunjukkan di sini bahawa, terutamanya di bawah keadaan rangkaian yang lemah, ejen pengguna bebas membatalkan atau bahkan tidak memulakan muat turun fon. Ini adalah untuk tidak memberi kesan yang tidak perlu kepada kualiti sambungan rangkaian. Oleh itu, laman web ini masih boleh digunakan tetapi fon tidak akan segera tersedia pada beban halaman masa depan.Dalam video di bawah, halaman ujian dimuatkan tanpa membuang rangkaian. Fon dimuat turun dengan cepat, tetapi hanya selepas tempoh blok pendek, jadi teks dipaparkan dengan fon sandaran untuk semua tempoh lawatan.
3
Dalam video seterusnya, halaman tersebut dimuat semula di bawah keadaan rangkaian yang sama, tetapi kali ini dengan cache diaktifkan, untuk mensimulasikan lawatan kedua:
3Sebelum bergerak, perhatikan tempoh yang sangat singkat sekitar 100 ms yang disyorkan untuk tempoh blok apabila menggunakan nilai sandaran dan pilihan. Ini adalah untuk membolehkan tempoh yang singkat untuk fon pemuatan cepat (atau satu pemuatan dari cache) untuk dipaparkan sebelum menggunakan fon sandaran, dengan itu mengelakkan "flash teks yang tidak terkawal", atau FOUT.
Saya benar-benar tertanya-tanya mengapa tempoh blok runtuh menjadi sifar apabila menggunakan font-paparan: swap, bukannya menggunakan selang pendek yang sama seperti pilihan. Ternyata, terdapat isu terbuka dalam repo github spec untuk membuat 'swap' menggunakan "tempoh blok kecil" yang sama seperti yang lain.mengenai font sandaran
Font sandaran adalah fon pertama yang terdapat dalam timbunan font yang ditakrifkan menggunakan harta keluarga font pada elemen yang dipersoalkan.
Sebagai contoh, pada halaman ujian, nilai keluarga font untuk tajuk adalah:
<span><span>@font-face</span> { </span> <span>font-family: 'Saira Condensed'; </span> <span>src: <span>url(fonts/sairacondensed.woff2)</span> format('woff2'); </span> <span>font-display: swap; </span><span>}</span>
Sokongan
Perlu diingat bahawa sokongan font-paparan tidak dapat diuji oleh pertanyaan ciri, kerana, seperti yang disebutkan di atas, ia bukan harta CSS tetapi deskriptor font. Dalam isu GitHub ini, anda akan dapati beberapa perbincangan tentang cara mengesan ciri ini dengan betul.
Sebaik sahaja ia telah dikesan bahawa font-paparan tidak disokong, beberapa strategi sandaran mungkin mungkin, tetapi ini adalah skop artikel ini. Artikel ini panduan komprehensif untuk strategi pemuatan fon oleh Zach Leatherman membentangkan tinjauan menyeluruh mengenai penyelesaian yang ada.
Penggunaan dengan Google Fonts
Adakah terdapat cara yang lebih baik dan lebih mesra Google? Adakah Font Google dan Font Font Pihak Ketiga yang lain akan menyokong Font-Display?
Terdapat isu terbuka pada repo Google Fonts GitHub di mana ini dibincangkan. Tambahkan 1 anda untuk menunjukkan minat anda dalam ciri ini!
Juga, patut disebutkan bahawa modul font CSS Level 4 mencadangkan penggunaan fon-display sebagai deskriptor untuk @font-feature-values, untuk membolehkan pemaju menetapkan dasar paparan untuk peraturan @font-face yang tidak secara langsung di bawah kawalan mereka. Tetapi ini belum dilaksanakan oleh mana -mana ejen pengguna.
Saya harap ini memberi anda gambaran yang baik tentang deskriptor font-dinsplay dan bagaimana ciri ini meramalkan masa depan yang kuat untuk rendering font di web.
Walaupun artikel ini tidak membincangkan kes-kes penggunaan khusus untuk strategi yang berbeza yang dilaksanakan oleh font-paparan, spesifikasi menggambarkan kes-kes penggunaan dengan beberapa contoh yang jelas, dan beberapa rujukan yang disebutkan rujukan mengenai topik ini. Oleh itu, sebagai tambahan kepada asas -asas yang saya tutupi di sini, anda akan mempunyai lebih banyak untuk melihat dalam sumber yang saya rujuk.
@font-face {
font-family: 'myfont';
src: url ('myfont.woff2') format ('woff2'); -display: swap;
Dalam contoh ini, harta font-paparan ditetapkan untuk 'swap', yang bermaksud teks akan dipaparkan dengan segera dengan font sentuhan jika 'myfont' tidak tersedia.
Apakah kesan harta font-paparan CSS pada prestasi laman web? Dengan mengawal bagaimana fon dipaparkan semasa proses pemuatan, ia dapat membantu mencegah kelewatan dalam rendering teks, dengan itu meningkatkan kelajuan pemuatan yang dirasakan di laman web. Ia juga boleh membantu mengelakkan peralihan susun atur yang disebabkan oleh fon pemuatan lewat, yang membawa kepada pengalaman pengguna yang lebih lancar. Fout)?
Harta Font-Display CSS secara langsung menangani isu-isu Foit dan Fout. Dengan membenarkan pemaju mengawal tingkah laku pemuatan fon, ia dapat menghalang teks daripada menjadi tidak kelihatan atau tidak terkawal semasa proses pemuatan. Sebagai contoh, menetapkan harta font-paparan untuk 'swap' boleh menghilangkan FOIT dengan memaparkan teks dengan segera dengan font sandaran. 🎜> Beberapa amalan terbaik untuk menggunakan harta font-paparan CSS termasuk memilih nilai yang tepat berdasarkan keperluan anda dan menguji tingkah laku pemuatan pada pelayar dan keadaan rangkaian yang berbeza. Ia juga disyorkan untuk menggunakan fon sandaran yang sepadan dengan metrik fon tersuai untuk meminimumkan perubahan susun atur.
Ya, anda boleh menggunakan harta font-paparan CSS dengan fon web yang dihoskan pada perkhidmatan pihak ketiga. Walau bagaimanapun, penting untuk diperhatikan bahawa tidak semua perkhidmatan menyokong ciri ini. Anda harus menyemak dokumentasi atau hubungi pembekal perkhidmatan untuk maklumat lanjut. Paparan harta adalah bahawa ia tidak disokong sepenuhnya dalam semua pelayar. Sebagai contoh, Internet Explorer dan beberapa versi lama pelayar lain tidak menyokong ciri ini. Di samping itu, nilai 'pilihan' boleh menyebabkan fon tersuai dilangkau sepenuhnya dalam beberapa kes, yang boleh menjejaskan konsistensi visual laman web anda. Bagaimanakah sifat font-paparan CSS sesuai dengan strategi prestasi web yang komprehensif? Walaupun ia dapat membantu meningkatkan kelajuan pemuatan yang dirasakan dan mencegah perubahan susun atur, ia harus digunakan bersamaan dengan teknik pengoptimuman prestasi lain, seperti meminimumkan saiz fail CSS dan JavaScript anda, mengoptimumkan imej, dan menggunakan rangkaian penghantaran kandungan (CDN) .
Atas ialah kandungan terperinci CSS Font-Desplay: Masa Depan Rendering Font di Web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!