فونتها بخش مهم UI هستن ولی اگه بد لود بشن، Layout Shift و کندی ایجاد میکنن. تو این مقاله راههای بهینهسازی.
مشکل فونت
مرورگر باید فونت رو دانلود کنه قبل نمایش. تا اون موقع FOIT (Flash of Invisible Text) یا FOUT (Flash of Unstyled Text).
font-display
@font-face {
font-family: MyFont;
src: url('font.woff2') format('woff2');
font-display: swap;
}
font-display Values
auto: پیشفرض
block: FOIT کم
swap: FOUT کم
fallback: تعادل
optional: اگه سریع لود شد
Preload
<link rel="preload" href="font.woff2" as="font" type="font/woff2" crossorigin>
WOFF2
بهترین فرمت. حجم کم، سازگاری خوب.
Subsetting
فقط کاراکترهایی که استفاده میکنید. حجم کم میشه.
Variable Fonts
یه فایل شامل همه Weight ها. مثل Inter Variable.
System Fonts
font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto
بدون دانلود.
Self-hosting
بهتر از Google Fonts CDN. حریم خصوصی و سرعت.
Persian Fonts
وزیر، ایرانسنس، ایرانیکان. Subsetting برای حروف فارسی.
Font Loading API
document.fonts.ready.then(...)
Critical CSS
CSS ضروری Inline کنید.
سباهاست
هاست سریع سباهاست + Preload = فونت سریع.
جمعبندی
با استراتژی درست، فونت زیبا بدون کاهش سرعت.