वेबसाइट की परफ़ॉर्मेंस की अहम जानकारी देने के लिए, वेब फ़ॉन्ट ऑप्टिमाइज़ करें.
इस लेख में, फ़ॉन्ट की परफ़ॉर्मेंस को बेहतर बनाने के सबसे सही तरीकों के बारे में बताया गया है. वेब फ़ॉन्ट कई तरीकों से परफ़ॉर्मेंस पर असर डालते हैं:
- देर से टेक्स्ट रेंडर होने में देरी: अगर कोई वेब फ़ॉन्ट लोड नहीं होता है, तो आम तौर पर ब्राउज़र, टेक्स्ट रेंडर होने में देरी करते हैं. कई मामलों में, इससे फ़र्स्ट कॉन्टेंटफ़ुल पेंट (एफ़सीपी) में देरी होती है. कुछ मामलों में, इससे सबसे बड़े कॉन्टेंटफ़ुल पेंट (एलसीपी) में देरी होती है.
- लेआउट शिफ़्ट: फ़ॉन्ट स्वैप करने की वजह से, लेआउट शिफ़्ट हो सकती है. इससे कुल लेआउट शिफ़्ट (सीएलएस) पर असर पड़ता है. ये लेआउट शिफ़्ट तब होते हैं, जब कोई वेब फ़ॉन्ट और उसका फ़ॉलबैक फ़ॉन्ट, पेज पर अलग-अलग जगह लेते हैं.
इस लेख को तीन सेक्शन में बांटा गया है: फ़ॉन्ट लोड करना, फ़ॉन्ट डिलीवरी करना, और फ़ॉन्ट रेंडर करना. हर सेक्शन में, फ़ॉन्ट लाइफ़साइकल के उस खास हिस्से के काम करने का तरीका बताया गया है. साथ ही, उससे जुड़े सबसे सही तरीके भी बताए गए हैं.
फ़ॉन्ट लोड हो रहा है
फ़ॉन्ट आम तौर पर अहम रिसॉर्स होते हैं, क्योंकि इनके बिना हो सकता है कि उपयोगकर्ता पेज का कॉन्टेंट न देख पाए. इसलिए, फ़ॉन्ट लोड करने के सबसे सही तरीके आम तौर पर इस बात पर फ़ोकस करते हैं कि फ़ॉन्ट जल्द से जल्द लोड हो जाएं. तीसरे पक्ष की साइटों से लोड किए गए फ़ॉन्ट पर खास ध्यान दिया जाना चाहिए, क्योंकि इन फ़ॉन्ट फ़ाइलों को डाउनलोड करने के लिए, अलग से कनेक्शन सेटअप की ज़रूरत होती है.
अगर आपको नहीं पता कि आपके पेज के फ़ॉन्ट का अनुरोध समय पर किया जा रहा है या नहीं, तो ज़्यादा जानकारी के लिए Chrome DevTools के नेटवर्क पैनल में समय टैब देखें.
@font-face
के बारे में जानकारी
फ़ॉन्ट लोड करने के सबसे सही तरीकों के बारे में जानने से पहले, यह समझना ज़रूरी है कि @font-face
कैसे काम करता है और इसका फ़ॉन्ट लोड होने पर क्या असर पड़ता है.
किसी भी वेब फ़ॉन्ट के साथ काम करने के लिए, @font-face
एलान करना ज़रूरी है. कम से कम, इसमें उस नाम की जानकारी होती है जिसका इस्तेमाल फ़ॉन्ट के रेफ़रंस के लिए किया जाएगा. साथ ही, उससे जुड़ी फ़ॉन्ट फ़ाइल की जगह की जानकारी भी होती है.
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}
आम तौर पर, यह गलतफ़हमी होती है कि @font-face
एलान मिलने पर फ़ॉन्ट का अनुरोध किया जाता है—यह सच नहीं है. @font-face
एलान करने से, फ़ॉन्ट डाउनलोड नहीं होता. इसके बजाय, फ़ॉन्ट सिर्फ़ तब डाउनलोड किया जाता है, जब पेज पर इस्तेमाल की गई स्टाइल के हिसाब से उसका रेफ़रंस दिया गया हो. उदाहरण के लिए, इस तरह:
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}
h1 {
font-family: "Open Sans"
}
दूसरे शब्दों में, ऊपर दिए गए उदाहरण में, Open Sans
को सिर्फ़ तब डाउनलोड किया जाएगा, जब पेज में <h1>
एलिमेंट मौजूद होगा.
इसलिए, जब फ़ॉन्ट ऑप्टिमाइज़ेशन के बारे में सोचते हैं, तो यह ज़रूरी है कि आप स्टाइलशीट के बीच फ़ॉन्ट फ़ाइलों का भी ध्यान रखें. स्टाइलशीट के कॉन्टेंट या डिलीवरी में बदलाव करने से, फ़ॉन्ट मिलने में लगने वाले समय पर काफ़ी असर पड़ सकता है. इसी तरह, इस्तेमाल न किए गए सीएसएस को हटाने और स्टाइलशीट को अलग-अलग करने से, किसी पेज पर लोड किए जाने वाले फ़ॉन्ट की संख्या कम हो सकती है.
इनलाइन फ़ॉन्ट एलान
ज़्यादातर साइटों को फ़ॉन्ट के एलान और अन्य ज़रूरी स्टाइल को बाहरी स्टाइलशीट में शामिल करने के बजाय, मुख्य दस्तावेज़ के <head>
में इनलाइन करने से काफ़ी फ़ायदा होगा. इससे ब्राउज़र, फ़ॉन्ट के एलान को जल्दी खोज पाता है, क्योंकि ब्राउज़र को बाहरी स्टाइलशीट के डाउनलोड होने का इंतज़ार नहीं करना पड़ता.
<head>
<style>
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
}
body {
font-family: "Open Sans";
}
...etc.
</style>
</head>
ज़रूरी सीएसएस को इनलाइन करना, एक बेहतर तकनीक हो सकती है. हालांकि, सभी साइटों पर यह तकनीक काम नहीं करेगी. परफ़ॉर्मेंस के फ़ायदे साफ़ तौर पर दिखते हैं. हालांकि, इसके लिए ज़रूरी प्रोसेस और बिल्ड टूल की ज़रूरत होती है, ताकि यह पक्का किया जा सके कि ज़रूरी सीएसएस—और आम तौर पर सिर्फ़ ज़रूरी सीएसएस—को सही तरीके से इनलाइन किया गया हो. साथ ही, यह भी पक्का किया जा सके कि कोई भी अतिरिक्त सीएसएस, रेंडर को ब्लॉक किए बिना डिलीवर की गई हो.
तीसरे पक्ष के अहम ऑरिजिन से पहले से कनेक्ट करें
अगर आपकी साइट, तीसरे पक्ष की किसी साइट के फ़ॉन्ट लोड करती है, तो हमारा सुझाव है कि आप तीसरे पक्ष की साइट के साथ जल्दी कनेक्शन बनाने के लिए, preconnect
संसाधन संकेत का इस्तेमाल करें. संसाधन के सुझाव, दस्तावेज़ के <head>
में डाले जाने चाहिए. नीचे दिए गए रिसॉर्स के बारे में अहम जानकारी में, फ़ॉन्ट स्टाइलशीट को लोड करने के लिए कनेक्शन सेट अप करने का तरीका बताया गया है.
<head>
<link rel="preconnect" href="https://fonts.com">
</head>
फ़ॉन्ट फ़ाइल डाउनलोड करने के लिए इस्तेमाल किए जाने वाले कनेक्शन को पहले से कनेक्ट करने के लिए, crossorigin
एट्रिब्यूट का इस्तेमाल करने वाला preconnect
संसाधन संकेत जोड़ें. स्टाइलशीट के उलट, फ़ॉन्ट फ़ाइलें सीओआरएस कनेक्शन पर भेजी जानी चाहिए.
<head>
<link rel="preconnect" href="https://fonts.com">
<link rel="preconnect" href="https://fonts.com" crossorigin>
</head>
preconnect
रिसॉर्स हिंट का इस्तेमाल करते समय, ध्यान रखें कि फ़ॉन्ट की सेवा देने वाली कंपनी, अलग-अलग ऑरिजिन से स्टाइलशीट और फ़ॉन्ट इस्तेमाल कर सकती है. उदाहरण के लिए, Google Fonts के लिए preconnect
संसाधन के सुझाव का इस्तेमाल इस तरह किया जाएगा.
<head>
<link rel="preconnect" href="https://fonts.googleapis.com">
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
</head>
फ़ॉन्ट लोड करने के लिए preload
का इस्तेमाल करते समय सावधानी बरतें
preload
, पेज लोड होने की प्रोसेस में फ़ॉन्ट को जल्दी खोजने लायक बनाने में काफ़ी असरदार है. हालांकि, इसके लिए ब्राउज़र के रिसॉर्स को दूसरे रिसॉर्स के लोड होने से रोकना पड़ता है.
फ़ॉन्ट के एलान को इनलाइन करना और स्टाइलशीट में बदलाव करना, ज़्यादा असरदार तरीका हो सकता है. इन बदलावों से, देरी से खोजे गए फ़ॉन्ट की असल वजह को ठीक करने में मदद मिलती है. यह समस्या का समाधान नहीं है.
इसके अलावा, फ़ॉन्ट लोड करने की रणनीति के तौर पर preload
का इस्तेमाल भी सावधानी से किया जाना चाहिए, क्योंकि यह ब्राउज़र में पहले से मौजूद कॉन्टेंट के लिए बातचीत की कुछ रणनीतियों को बायपास कर देता है. उदाहरण के लिए, preload
, unicode-range
के एलान को अनदेखा कर देता है. अगर इसे सही तरीके से इस्तेमाल किया जाए, तो इसका इस्तेमाल सिर्फ़ एक फ़ॉन्ट फ़ॉर्मैट को लोड करने के लिए करें.
हालांकि, बाहरी स्टाइलशीट का इस्तेमाल करते समय, सबसे ज़रूरी फ़ॉन्ट को पहले से लोड करना काफ़ी असरदार हो सकता है. ऐसा इसलिए, क्योंकि ब्राउज़र को तब तक यह पता नहीं चलेगा कि फ़ॉन्ट की ज़रूरत है या नहीं.
फ़ॉन्ट की डिलीवरी
फ़ॉन्ट की तेज़ी से डिलीवरी होने पर, टेक्स्ट तेज़ी से रेंडर होता है. इसके अलावा, अगर किसी फ़ॉन्ट को जल्दी डिलीवर किया जाता है, तो यह फ़ॉन्ट बदलने की वजह से होने वाले लेआउट शिफ़्ट को खत्म करने में मदद कर सकता है.
खुद होस्ट किए गए फ़ॉन्ट का इस्तेमाल करना
सिद्धांत रूप से, खुद होस्ट किए गए फ़ॉन्ट का इस्तेमाल करने से बेहतर परफ़ॉर्मेंस मिलती है. ऐसा इसलिए, क्योंकि इससे तीसरे पक्ष के कनेक्शन सेटअप की ज़रूरत नहीं पड़ती. हालांकि, असल में इन दोनों विकल्पों की परफ़ॉर्मेंस में ज़्यादा अंतर नहीं होता: उदाहरण के लिए, वेब अल्मनैक के मुताबिक, तीसरे पक्ष के फ़ॉन्ट का इस्तेमाल करने वाली साइटें, पहले पक्ष के फ़ॉन्ट का इस्तेमाल करने वाली साइटों की तुलना में तेज़ी से रेंडर होती हैं.
अगर आपको खुद से होस्ट किए जाने वाले फ़ॉन्ट का इस्तेमाल करना है, तो इस बात की पुष्टि कर लें कि आपकी साइट कॉन्टेंट डिलीवरी नेटवर्क (सीडीएन) और एचटीटीपी/2 का इस्तेमाल कर रही हो. इन टेक्नोलॉजी का इस्तेमाल किए बिना, यह संभावना बहुत कम है कि होस्ट किए गए फ़ॉन्ट बेहतर परफ़ॉर्म करेंगे. ज़्यादा जानकारी के लिए, कॉन्टेंट डिलीवरी नेटवर्क देखें.
अगर आपने खुद होस्ट किया हुआ फ़ॉन्ट इस्तेमाल किया है, तो हमारा सुझाव है कि आप फ़ॉन्ट फ़ाइल के कुछ ऑप्टिमाइज़ेशन भी लागू करें. आम तौर पर, फ़ॉन्ट की सेवा देने वाली तीसरे पक्ष की कंपनियां, ये ऑप्टिमाइज़ेशन अपने-आप लागू कर देती हैं. उदाहरण के लिए, फ़ॉन्ट सबसेटिंग और WOFF2 कम्प्रेशन. इन ऑप्टिमाइज़ेशन को लागू करने में लगने वाला समय, इस बात पर निर्भर करेगा कि आपकी साइट किन भाषाओं में उपलब्ध है. खास तौर पर, ध्यान रखें कि सीजेके भाषाओं के लिए फ़ॉन्ट ऑप्टिमाइज़ करना खास तौर पर चुनौती भरा हो सकता है.
WOFF2 का उपयोग करें
आधुनिक फ़ॉन्ट फ़ॉन्ट में से, WOFF2 सबसे नया है. यह ब्राउज़र के लिए सबसे चौड़ा है और सबसे अच्छा कंप्रेशन देता है. WOFF2, Brotli का इस्तेमाल करता है. इसलिए, यह WOFF के मुकाबले 30% बेहतर तरीके से फ़ॉन्ट को कंप्रेस करता है. इससे, डाउनलोड करने के लिए कम डेटा की ज़रूरत होती है और परफ़ॉर्मेंस भी बेहतर होती है.
ब्राउज़र के साथ काम करने की सुविधा को देखते हुए, विशेषज्ञ अब सिर्फ़ WOFF2 का इस्तेमाल करने का सुझाव देते हैं:
असल में, हमें लगता है कि यह समय यह एलान करने का भी है: सिर्फ़ WOFF2 का इस्तेमाल करें और बाकी सभी चीज़ों को भूल जाएं.
Bram Stein, from the 2022 Web Almanac
इससे आपकी सीएसएस और वर्कफ़्लो को आसानी से मैनेज किया जा सकेगा. साथ ही, अनजाने में फ़ॉन्ट दो बार या गलत तरीके से डाउनलोड होने से भी बचा जा सकेगा. WOFF2 का इस्तेमाल अब सभी जगह किया जा सकता है. इसलिए, अगर आपको बहुत पुराने ब्राउज़र के साथ काम करना है, तो सिर्फ़ WOFF2 का इस्तेमाल करें. अगर ऐसा नहीं किया जा सकता, तो उन पुराने ब्राउज़र पर कोई वेब फ़ॉन्ट न दिखाएं. अगर आपके पास मज़बूत फ़ॉलबैक रणनीति है, तो यह कोई समस्या नहीं होगी. पुराने ब्राउज़र का इस्तेमाल करने वाले लोगों को सिर्फ़ आपके फ़ॉलबैक फ़ॉन्ट दिखेंगे.
सबसेट फ़ॉन्ट
फ़ॉन्ट फ़ाइलों में आम तौर पर, उन सभी वर्णों के लिए बड़ी संख्या में ग्लिफ़ शामिल होते हैं जिनके साथ वे काम करते हैं. हालांकि, हो सकता है कि आपको अपने पेज पर सभी वर्णों की ज़रूरत न हो. ऐसे में, फ़ॉन्ट की सबसेट बनाकर, फ़ॉन्ट फ़ाइलों का साइज़ कम किया जा सकता है.
@font-face
एलान में मौजूद unicode-range
डिस्क्रिप्टर, ब्राउज़र को बताता है कि किसी फ़ॉन्ट का इस्तेमाल किन वर्णों के लिए किया जा सकता है.
@font-face {
font-family: "Open Sans";
src: url("/fonts/OpenSans-Regular-webfont.woff2") format("woff2");
unicode-range: U+0025-00FF;
}
अगर पेज में यूनिकोड रेंज से मेल खाने वाला एक या उससे ज़्यादा वर्ण है, तो फ़ॉन्ट फ़ाइल डाउनलोड हो जाएगी. आम तौर पर, unicode-range
का इस्तेमाल अलग-अलग फ़ॉन्ट फ़ाइलें दिखाने के लिए किया जाता है. यह इस बात पर निर्भर करता है कि पेज के कॉन्टेंट में किस भाषा का इस्तेमाल किया गया है.
unicode-range
का इस्तेमाल, अक्सर सबसेटिंग की तकनीक के साथ किया जाता है. किसी सबसेट फ़ॉन्ट में, ओरिजनल फ़ॉन्ट फ़ाइल में मौजूद ग्लिफ़ का एक छोटा हिस्सा शामिल होता है. उदाहरण के लिए, सभी उपयोगकर्ताओं को सभी वर्ण दिखाने के बजाय, कोई साइट लैटिन और सिरिलिक वर्णों के लिए अलग-अलग सबसेट फ़ॉन्ट जनरेट कर सकती है. हर फ़ॉन्ट में ग्लिफ़ की संख्या काफ़ी अलग-अलग होती है: आम तौर पर, हर लैटिन फ़ॉन्ट में 100 से 1,000 ग्लिफ़ होते हैं; CJK फ़ॉन्ट में 10,000 से ज़्यादा वर्ण हो सकते हैं. इस्तेमाल न किए गए ग्लिफ़ हटाने से, फ़ॉन्ट का फ़ाइल साइज़ काफ़ी कम हो सकता है.
फ़ॉन्ट की सेवा देने वाली कुछ कंपनियां, फ़ॉन्ट की फ़ाइलों के अलग-अलग वर्शन अपने-आप उपलब्ध करा सकती हैं. उदाहरण के लिए, Google Fonts डिफ़ॉल्ट रूप से ऐसा करते हैं:
/* devanagari */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJbecnFHGPezSQ.woff2) format('woff2');
unicode-range: U+0900-097F, U+1CD0-1CF6, U+1CF8-1CF9, U+200C-200D, U+20A8, U+20B9, U+25CC, U+A830-A839, U+A8E0-A8FB;
}
/* latin-ext */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJnecnFHGPezSQ.woff2) format('woff2');
unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB, U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
/* latin */
@font-face {
font-family: 'Poppins';
font-style: normal;
font-weight: 400;
font-display: swap;
src: url(https://fonts.gstatic.com/s/poppins/v20/pxiEyp8kv8JHgFVrJJfecnFHGPc.woff2) format('woff2');
unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
खुद होस्ट करने की सुविधा का इस्तेमाल करते समय, यह ऑप्टिमाइज़ेशन आसानी से छूट सकता है. इससे, डिवाइस पर फ़ॉन्ट की बड़ी फ़ाइलें सेव हो सकती हैं.
अगर फ़ॉन्ट की सेवा देने वाली कंपनी इसकी अनुमति देती है, तो फ़ॉन्ट को मैन्युअल तरीके से भी सबसेट किया जा सकता है. इसके लिए, एपीआई (Google Fonts, text
पैरामीटर उपलब्ध कराकर इसकी सुविधा देता है) या फ़ॉन्ट फ़ाइलों में मैन्युअल तरीके से बदलाव करके, उन्हें खुद होस्ट किया जा सकता है. फ़ॉन्ट के सबसेट जनरेट करने वाले टूल में, subfont और glyphanger शामिल हैं. हालांकि, उन फ़ॉन्ट के लाइसेंस की जांच करें जिनका इस्तेमाल करके, सबसेटिंग की अनुमति दी जाती है और खुद को होस्ट किया जाता है.
कम वेब फ़ॉन्ट इस्तेमाल करना
सबसे तेज़ फ़ॉन्ट डिलीवर करने का मतलब है, ऐसा फ़ॉन्ट जिसके लिए पहले ही अनुरोध नहीं किया गया हो. सिस्टम फ़ॉन्ट और वैरिएबल फ़ॉन्ट, आपकी साइट पर इस्तेमाल किए जाने वाले वेब फ़ॉन्ट की संख्या कम करने के दो तरीके हैं.
सिस्टम फ़ॉन्ट, डिफ़ॉल्ट फ़ॉन्ट होता है. इसका इस्तेमाल, उपयोगकर्ता के डिवाइस के यूज़र इंटरफ़ेस में किया जाता है. आम तौर पर, सिस्टम फ़ॉन्ट, ऑपरेटिंग सिस्टम और वर्शन के हिसाब से अलग-अलग होते हैं. फ़ॉन्ट पहले से इंस्टॉल होने की वजह से, उसे डाउनलोड करने की ज़रूरत नहीं है. सिस्टम फ़ॉन्ट खास तौर पर, मुख्य हिस्से के टेक्स्ट के लिए सही तरीके से काम कर सकते हैं.
अपनी सीएसएस में सिस्टम फ़ॉन्ट का इस्तेमाल करने के लिए, system-ui
को फ़ॉन्ट-फ़ैमिली के तौर पर शामिल करें:
font-family: system-ui
वैरिएबल फ़ॉन्ट का मकसद यह है कि एक वैरिएबल फ़ॉन्ट का इस्तेमाल, कई फ़ॉन्ट फ़ाइलों के बदले किया जा सकता है. वैरिएबल फ़ॉन्ट, "डिफ़ॉल्ट" फ़ॉन्ट स्टाइल तय करके और फ़ॉन्ट में बदलाव करने के लिए "ऐक्सिस" उपलब्ध कराकर काम करते हैं. उदाहरण के लिए, Weight
ऐक्सिस वाले वैरिएबल फ़ॉन्ट का इस्तेमाल, लेटर लिखने के लिए किया जा सकता है. इसमें पहले, लाइट, सामान्य, बोल्ड, और ज़्यादा बोल्ड फ़ॉन्ट के लिए अलग-अलग फ़ॉन्ट की ज़रूरत होती थी.
वैरिएबल फ़ॉन्ट पर स्विच करने से, सभी को फ़ायदा नहीं मिलेगा. वैरिएबल फ़ॉन्ट में कई स्टाइल होते हैं. इसलिए, आम तौर पर इनका फ़ाइल साइज़, उन फ़ॉन्ट के मुकाबले ज़्यादा होता है जिनमें सिर्फ़ एक स्टाइल होती है. वैरिएबल फ़ॉन्ट का इस्तेमाल करने से, उन साइटों में सबसे ज़्यादा सुधार होगा जो अलग-अलग फ़ॉन्ट स्टाइल और वेट का इस्तेमाल करती हैं और जिनके लिए ऐसा करना ज़रूरी है.
फ़ॉन्ट रेंडरिंग
अगर ब्राउज़र का वेब फ़ॉन्ट अभी तक लोड नहीं हुआ है, तो इसके सामने एक दुविधा का सामना करना पड़ रहा है: क्या वेब फ़ॉन्ट आने तक, क्या इसे टेक्स्ट को रेंडर होने से रोकना चाहिए? या क्या वेब फ़ॉन्ट आने तक, टेक्स्ट को फ़ॉलबैक फ़ॉन्ट में रेंडर करना चाहिए?
अलग-अलग ब्राउज़र, इस स्थिति को अलग-अलग तरीके से मैनेज करते हैं. डिफ़ॉल्ट रूप से, Chromium और Firefox ब्राउज़र, टेक्स्ट रेंडरिंग को तीन सेकंड तक ब्लॉक कर देंगे. ऐसा तब होगा, जब उससे जुड़ा वेब फ़ॉन्ट लोड न हुआ हो. वहीं, Safari, टेक्स्ट रेंडरिंग को हमेशा के लिए ब्लॉक कर देगा.
font-display
एट्रिब्यूट का इस्तेमाल करके, इस व्यवहार को कॉन्फ़िगर किया जा सकता है. इस विकल्प के कई असर हो सकते हैं: font-display
से एलसीपी, एफ़सीपी, और लेआउट की स्थिरता पर असर पड़ सकता है.
font-display
के लिए सही रणनीति चुनना
font-display
से ब्राउज़र को पता चलता है कि वेब फ़ॉन्ट के लोड न होने पर, टेक्स्ट रेंडरिंग कैसे होनी चाहिए. यह हर फ़ॉन्ट-फ़ेस के हिसाब से तय किया जाता है.
@font-face {
font-family: Roboto, Sans-Serif
src: url(/fonts/roboto.woff) format('woff'),
font-display: swap;
}
font-display
के लिए पांच वैल्यू हो सकती हैं:
वैल्यू | ब्लॉक करने की अवधि | स्वैप पीरियड |
---|---|---|
ऑटो | ब्राउज़र के हिसाब से अलग-अलग | ब्राउज़र के हिसाब से अलग-अलग |
ब्लॉक करें | दो से तीन सेकंड | इनफ़ाइनाइट |
स्वैप करें | 0 मिलीसेकंड | इनफ़ाइनाइट |
फ़ॉलबैक | 100मि.से. | 3 सेकंड |
वैकल्पिक | 100मि.से. | कोई नहीं |
- ब्लॉक करने की अवधि: ब्लॉक करने की अवधि तब शुरू होती है, जब ब्राउज़र वेब फ़ॉन्ट के लिए अनुरोध करता है. ब्लॉक की अवधि के दौरान, अगर वेब फ़ॉन्ट उपलब्ध नहीं है, तो फ़ॉन्ट को नहीं दिखने वाले फ़ॉलबैक फ़ॉन्ट में रेंडर किया जाता है. इसलिए, उपयोगकर्ता को टेक्स्ट नहीं दिखेगा. अगर ब्लॉक करने की अवधि के आखिर में फ़ॉन्ट उपलब्ध नहीं होता है, तो उसे फ़ॉलबैक फ़ॉन्ट में रेंडर किया जाएगा.
- स्वाप पीरियड: ब्लॉक पीरियड के बाद स्वाप पीरियड शुरू होता है. अगर वेब फ़ॉन्ट, स्वैप की अवधि के दौरान उपलब्ध हो जाता है, तो उसे "स्वैप" कर दिया जाएगा.
font-display
रणनीतियां, परफ़ॉर्मेंस और आकर्षक डिज़ाइन के बीच के समझौते के बारे में अलग-अलग नज़रिए दिखाती हैं. इसलिए, कोई सुझाव देना मुश्किल है. यह लोगों की प्राथमिकताओं पर निर्भर करता है कि वेब फ़ॉन्ट, पेज और ब्रैंड के लिए कितना ज़रूरी है. साथ ही, यह भी कि फ़ॉन्ट को देर से बदलने पर, पेज पर क्या असर पड़ सकता है.
ज़्यादातर साइटों के लिए, ये तीन रणनीतियां सबसे ज़्यादा काम की होंगी:
अगर परफ़ॉर्मेंस सबसे ज़्यादा अहम है, तो:
font-display: optional
का इस्तेमाल करें. यह सबसे "बेहतर परफ़ॉर्म" करने वाला तरीका है: टेक्स्ट रेंडर होने में 100 मिलीसेकंड से ज़्यादा समय नहीं लगता. साथ ही, यह पक्का किया जा सकता है कि फ़ॉन्ट स्वैप करने से लेआउट में कोई बदलाव नहीं होगा. हालांकि, इसकी एक समस्या यह है कि अगर वेब फ़ॉन्ट देर से आता है, तो उसका इस्तेमाल नहीं किया जाएगा.अगर टेक्स्ट को तुरंत दिखाना सबसे ज़्यादा ज़रूरी है, लेकिन आपको यह पक्का करना है कि वेब-फ़ॉन्ट का इस्तेमाल किया जाए, तो:
font-display: swap
का इस्तेमाल करें. हालांकि, फ़ॉन्ट को इतनी जल्दी डिलीवर करें कि लेआउट में कोई बदलाव न हो. इस विकल्प का नुकसान यह है कि फ़ॉन्ट देर से आने पर, दर्शकों को झटका लगता है.अगर यह पक्का करना है कि टेक्स्ट वेब फ़ॉन्ट में दिखाया जाए, तो:
font-display: block
का इस्तेमाल करें. हालांकि, यह पक्का करें कि फ़ॉन्ट को जल्दी डिलीवर किया जाए, ताकि टेक्स्ट दिखने में कम समय लगे. इसका नुकसान यह है कि शुरुआती टेक्स्ट दिखने में देरी होगी. ध्यान दें कि इस डिसप्ले के बावजूद, लेआउट में बदलाव हो सकता है. ऐसा इसलिए, क्योंकि टेक्स्ट को असल में अदृश्य दिखाया जाता है. इसलिए, फ़ॉलबैक फ़ॉन्ट स्पेस का इस्तेमाल, जगह रिज़र्व करने के लिए किया जाता है. वेब फ़ॉन्ट लोड होने के बाद, हो सकता है कि उसे अलग स्पेस की ज़रूरत पड़े. इसलिए, उसे शिफ़्ट करना पड़ सकता है. हालांकि, यहfont-display: swap
की तुलना में कम परेशान करने वाला बदलाव हो सकता है, क्योंकि टेक्स्ट में बदलाव नहीं दिखेगा.
यह भी ध्यान रखें कि इन दो तरीकों को मिलाया जा सकता है: उदाहरण के लिए, ब्रैंडिंग और विज़ुअल तौर पर अलग दिखने वाले दूसरे पेज एलिमेंट के लिए, font-display: swap
का इस्तेमाल करें. इसके अलावा, मुख्य हिस्से के टेक्स्ट में इस्तेमाल किए जाने वाले फ़ॉन्ट के लिए, font-display: optional
का इस्तेमाल करें.
फ़ॉलबैक फ़ॉन्ट और वेबफ़ॉन्ट के बीच के अंतर को कम करना
सीएलएस के असर को कम करने के लिए, नए size-adjust
एट्रिब्यूट का इस्तेमाल किया जा सकता है. ज़्यादा जानकारी के लिए, सीएसएस size-adjust
के बारे में लेख पढ़ें. यह हमारे टूलसेट में हाल ही में जोड़ा गया है. इसलिए, यह ज़्यादा बेहतर है और फ़िलहाल इसे मैन्युअल तरीके से इस्तेमाल करना पड़ता है. हालांकि, आने वाले समय में इस टूल को आज़माने और इसमें होने वाले सुधारों पर नज़र रखने के लिए, यह एक बेहतर विकल्प है!
नतीजा
वेब फ़ॉन्ट अब भी परफ़ॉर्मेंस में रुकावट की तरह हैं. हालांकि, हमारे पास लगातार कई विकल्प हैं, जिनकी मदद से हम इस समस्या को कम करने के लिए, उन्हें ऑप्टिमाइज़ कर सकते हैं.