ثبت سفارش

سازنده‌ی @font-face

نام فونت، مسیر فایل‌ها و وزن‌هایی که داری را بده؛ کد ‎@font-face، تگ preload و نمونه‌ی استفاده را آماده بگیر.

نمونه‌های فونت فارسی
وزن‌ها
CSS ‎@font-face
 
preload در head (فقط وزن اصلی)
 
استفاده
 

همه‌چیز داخل مرورگر خودت پردازش می‌شود و هیچ فایل یا کدی به سرور فرستاده نمی‌شود.

چطور فونت فارسی به سایت اضافه کنم؟

  1. فایل‌های فونت را با فرمت WOFF2 تهیه کن. فونت‌های رایگانی مثل وزیرمتن، استعداد و ساحل فایل WOFF2 دارند؛ برای فونت‌های تجاری هم معمولاً همراه بسته است.
  2. فایل‌ها را در یک پوشه مثل /fonts/ روی سرور بگذار.
  3. برای هر وزن یک قاعده‌ی ‎@font-face بنویس؛ این ابزار همین را می‌سازد.
  4. نام فونت را در font-family روی body یا هر بخشی که می‌خواهی استفاده کن.
  5. وزن اصلی متن را preload کن تا زودتر بارگذاری شود.

چند وزن فونت لازم است؟

هر وزن یک فایل جداست و دانلود اضافه دارد. بیشتر سایت‌ها با سه وزن کار راه می‌اندازند: معمولی (۴۰۰) برای متن، متوسط یا نیمه‌پررنگ (۵۰۰ یا ۶۰۰) برای دکمه و منو، و پررنگ (۷۰۰ یا ۸۰۰) برای تیترها. اگر طرح فیگما بیش از چهار وزن استفاده کرده، بهتر است نسخه‌ی متغیر (Variable) فونت را بگیری که همه‌ی وزن‌ها در یک فایل است:

‎@font-face {
  font-family: "Vazirmatn";
  src: url("/fonts/Vazirmatn[wght].woff2") format("woff2-variations");
  font-weight: 100 900;
  font-display: swap;
}

اعداد فارسی در فونت

بیشتر فونت‌های فارسی دو نسخه دارند: یکی که رقم‌های انگلیسی را هم فارسی نشان می‌دهد (معمولاً با پسوند FD یا Farsi Digits) و یکی با رقم انگلیسی. اگر قیمت و تاریخ باید فارسی دیده شوند ولی در کد انگلیسی بمانند، نسخه‌ی FD را انتخاب کن. بعضی فونت‌ها مثل وزیرمتن این را با یک ویژگی OpenType انجام می‌دهند:

.price {
  font-feature-settings: "ss01";
}

برای تبدیل خود رقم‌ها در متن هم ابزار تبدیل اعداد فارسی و انگلیسی را داریم.

اشتباه‌های رایج

  • نام‌گذاری جدا برای هر وزن: اگر برای پررنگ نام «Vazir-Bold» بگذاری، font-weight: 700 کار نمی‌کند و مرورگر پررنگی مصنوعی می‌سازد. همه‌ی وزن‌ها باید یک font-family داشته باشند.
  • مسیر نسبی اشتباه: آدرس داخل url() نسبت به فایل CSS حساب می‌شود؛ مسیر مطلق مثل /fonts/… مطمئن‌تر است.
  • فراموش کردن crossorigin در preload: بدون آن فونت دو بار دانلود می‌شود.
  • بارگذاری فونت از CDN خارجی: برای کاربران ایرانی ممکن است کند یا قطع باشد؛ فونت را روی هاست خودت بگذار.

در پروژه‌های تبدیل فیگما به HTML فونت‌ها با همین روش، به‌صورت محلی و بهینه بارگذاری می‌شوند تا سایت در اینترنت داخلی هم سریع و درست نمایش داده شود.

سؤال‌های رایج

font-face چیست؟

قاعده‌ی ‎@font-face در CSS به مرورگر می‌گوید فونت سفارشی را از کجا دانلود کند و با چه نامی، وزنی و استایلی از آن استفاده کند. بدون آن، فقط فونت‌های نصب‌شده روی دستگاه کاربر قابل استفاده‌اند.

کدام فرمت فونت را استفاده کنم؟

فقط WOFF2. همه‌ی مرورگرهای امروزی از آن پشتیبانی می‌کنند و حدود ۳۰ درصد کم‌حجم‌تر از WOFF است. فرمت‌های TTF، EOT و SVG دیگر لازم نیستند.

font-display: swap چه کار می‌کند؟

تا وقتی فونت دانلود نشده، متن با فونت جایگزین سیستم نمایش داده می‌شود و بعد فونت اصلی جایگزین می‌شود. این از «متن نامرئی» در بارگذاری اول جلوگیری می‌کند و در امتیاز PageSpeed هم اثر مثبت دارد.

چرا فونت فارسی سایتم در گوشی لود نمی‌شود؟

رایج‌ترین دلیل‌ها: آدرس فایل در url() اشتباه است (مسیر نسبی به فایل CSS حساب می‌شود، نه صفحه)، فونت روی دامنه‌ی دیگری است و سرور هدر CORS نمی‌فرستد، یا نام font-family در ‎@font-face با جایی که استفاده شده یکی نیست.

preload فونت لازم است؟

برای فونت اصلی متن (معمولاً وزن معمولی) بله؛ تگ preload باعث می‌شود مرورگر فونت را زودتر دانلود کند. برای همه‌ی وزن‌ها این کار را نکن، چون دانلود بقیه‌ی منابع را کند می‌کند.

طرح فیگما یا XD داری و کد تمیز و دقیق می‌خواهی؟ تبدیل فیگما به HTML ←
زمان و قیمت ثبت سفارش