Montserrat یکی از پرکاربردترین فونت های لاتین توی طراحی وبه. تیتر و لوگوتایپ خیلی از سایت های شرکتی و فروشگاهی باهاش ساخته می شه. بسته @fontsource-variable/montserrat همین فونت رو به شکل یه بسته npm مرتب بهت می ده. فایل های فونت و CSS لازم داخل خود بسته هستن و لازم نیست به سرویس خارجی لینک بدی.
مشکلی که حل می کنه برای ما ایرانی ها کاملا ملموسه. وقتی فونت از یه سرویس بیرونی لود می شه، توی روزهای اینترنت ضعیف یا محدودیت دسترسی ممکنه درخواست فونت کند بشه یا اصلا جواب نگیره. اون موقع مرورگر فونت پیش فرض رو نشون می ده و ظاهر سایت بهم می ریزه. اگه فونت از دامنه خودت سرو بشه، این وابستگی از بین می ره و سایت همیشه شکل یکسانی داره.
نسخه متغیر یعنی به جای چند فایل جدا برای Regular و Bold و بقیه وزن ها، یه فایل کل بازه وزن رو پوشش می ده. هر وزنی بین کمترین و بیشترین مقدار رو می تونی توی CSS بدی. این بسته بیشتر به درد پروژه هایی می خوره که با ابزار build مثل Vite یا webpack یا فریم ورکی مثل React و Next.js کار می کنن. اگه سایت وردپرسی ساده ای داری که مرحله build نداره، استفاده مستقیم از npm راحت نیست و باید فایل ها رو دستی کنار قالبت بذاری.
یه نکته رو یادت نره: Montserrat حروف فارسی نداره و فقط لاتین و چند خط دیگه مثل سیریلیک رو پوشش می ده. برای متن فارسی یه فونت فارسی جدا انتخاب کن و Montserrat رو برای بخش های انگلیسی مثل نام برند، عددهای لاتین یا منو کنارش بذار. توی font-family هم یه فونت جایگزین بذار تا اگه فایل لود نشد، صفحه خراب نشه.
مجوز فونت OFL هست و استفاده تجاری ازش آزاده، البته با رعایت شرایط خود مجوز. نسخه های رسمی و بدون تغییر این بسته توی مخزن داخلی ما هم در دسترسه، برای وقتی که دسترسی به npm یا منابع خارجی مشکل داره.
راهنمای استفاده
کار اصلی فقط وصل کردن CSS فونت به پروژه ست. کد آماده پایین همین صفحه رو هم می تونی مستقیم استفاده کنی. مسیر کلی اینه:
- بسته رو با مدیر بسته ات (npm یا yarn یا pnpm) به پروژه اضافه کن.
- اسم بسته رو یک بار توی فایل ورودی پروژه یا CSS اصلی ایمپورت کن تا تعریف @font-face و فایل های فونت وارد خروجی بشن.
- توی CSS، اسم خانواده فونت رو که معمولا Montserrat Variable هست توی font-family بذار و بعدش یه فونت جایگزین مثل sans-serif اضافه کن.
- وزن رو با font-weight بده. چون فونت متغیره، برای هر وزن فایل جدا نمی خواد.
- بسته برای زیرمجموعه های زبانی و حالت ایتالیک ایمپورت جدا داره. اگه فقط لاتین لازم داری، همون رو بزن تا حجم کمتر بشه.
اگه پروژه ات build نداره و مثلا یه قالب وردپرسی ساده داری، فایل های CSS و فونت رو از بسته بردار، کنار قالبت بذار و مسیرشون رو توی CSS درست کن. آخرش صفحه رو تست کن و توی تب Network مرورگر ببین فونت از دامنه خودت لود می شه، نه از جای دیگه.