افزایش سرعت سایت

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

قلم فارسی از قلم لاتین معادلش سنگین تر است، ولی بزرگ ترین صرفه جویی از سبک کردن فایل نمی آید؛ از نفرستادن فایل هایی می آید که لازم نیستند. این سایت پنج وزن در استایلش می نویسد و فقط سه فایل قلم می فرستد، جمعا ۷۴.۶ کیلوبایت.

  • درس ۸ از ۱۰
  • میانی
  • رایگان، بدون ثبت نام

هر وزن، قبل و بعد از ساب ست کردن

سه وزنی که این سایت واقعا می فرستد، اندازه گیری شده در ۱۷ شهریور ۱۴۰۵
  • وزن معمولی، برای بدنه متن ۴۱.۷ کیلوبایت۲۴.۷ کیلوبایت

    تنها وزنی که تقریبا هر صفحه ای لازمش دارد

  • وزن پررنگ، برای تیترها ۴۱.۸ کیلوبایت۲۴.۹ کیلوبایت

    وزن ۶۰۰ هم از همین می آید و فایل جدا ندارد

  • سنگین ترین وزن، برای تیتر اصلی ۴۲.۰ کیلوبایت۲۵.۰ کیلوبایت

    وجودش جلوی ساخته شدن بولد جعلی را می گیرد

فایل کاملفایل ساب ست شده

این شکل فقط سه وزنی را نشان می دهد که فرستاده می شوند. دو وزن دیگری که در استایل نوشته شده اند هیچ فایلی ندارند و مرورگر آنها را از همین سه تا انتخاب می کند، پس صرفه جویی واقعی از این شکل بزرگ تر است.

آخرین بررسی: فکت ها و نام ابزارهای این درس در همین تاریخ با منابعشان بازبینی شده اند.

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

یک قلم لاتین برای هر حرف یک شکل دارد. یک قلم فارسی برای هر حرف چند شکل دارد، چون حرف در اول و وسط و آخر کلمه و به تنهایی جور دیگری نوشته می شود، و روی این ترکیب های چسبیده هم اضافه می شود. نتیجه اش فایلی است با گلیف های خیلی بیشتر، و همین است که وزنش را بالا می برد.

عدد واقعی از فایل های همین سایت: قلم اصلی در وزن معمولی ۷۲۶ گلیف و ۶۵۲ کدپوینت دارد و ۴۱.۷ کیلوبایت است. نسخه ساب ست شده اش ۵۹۹ گلیف و ۵۲۷ کدپوینت دارد و ۲۴.۷ کیلوبایت است.

ساب ست کردن یعنی حذف بخش هایی از قلم که این سایت هرگز لازمشان ندارد. کار درستی است و باید انجامش بدهید، ولی صنعتش موضوع این صفحه نیست: اینکه یک قلم فارسی چه چیزی را باید نگه دارد تا حروف از هم نیفتند، در درس تایپوگرافی فارسی با جزئیات آمده و اینجا تکرارش نمی کنیم.

چیزی که اینجا به آن می پردازیم سوال دیگری است و کمتر پرسیده می شود: بعد از اینکه فایلتان را سبک کردید، چند تا از آن فایل ها را واقعا باید بفرستید؟ جواب این سوال روی همین سایت بیشتر از ساب ست کردن صرفه جویی کرد.

پنج بلوک فلزی سنگین با خم های انتزاعی که فقط دو تای آنها سفید روشن اند و نور قرمز، سبز و آبی به لبه هایشان می تابد

چند وزن واقعا لازم دارید؟

اینجا جایی است که بیشتر سایت های فارسی بایت از دست می دهند، و راه حلش یک تنظیم نیست، یک قاعده در خود CSS است که کمتر کسی از آن استفاده می کند.

وقتی مرورگر به متنی با وزنی برسد که برایش فایلی ندارید، آن متن را بی قلم رها نمی کند و قلم جعلی هم نمی سازد؛ نزدیک ترین وزنی را که دارید انتخاب می کند. قاعده اش در استاندارد CSS نوشته شده و جهت جستجو هم مشخص است: برای وزنی زیر پانصد، اول وزن های پایین تر بررسی می شوند و بعد بالاتر ها؛ برای وزنی بالای پانصد، اول بالاتر ها و بعد پایین تر ها.

حالا همین سایت. در فایل استایل اصلی پنج وزن نوشته شده و می توانید خودتان بشمریدشان:

grep -ohE 'font-weight:[[:space:]]*[0-9]{3}' style.css | tr -d ' ' | cut -d: -f2 | sort -un

خروجی اش پنج عدد است: ۴۰۰ و ۵۰۰ و ۶۰۰ و ۷۰۰ و ۸۰۰. ولی در HTML خروجی همین سایت فقط سه بلوک font-face وجود دارد: ۴۰۰ و ۷۰۰ و ۸۰۰. وزن ۵۰۰ به ۴۰۰ می رسد و وزن ۶۰۰ به ۷۰۰، چون قاعده بالا همین را می گوید، و هیچ کس تفاوتش را روی صفحه نمی بیند.

حساب کنید چه صرفه جویی ای شد. سه فایلی که فرستاده می شوند ۲۴.۷ و ۲۴.۹ و ۲۵.۰ کیلوبایت اند، جمعا ۷۴.۶ کیلوبایت؛ همین سه وزن به شکل کامل ۴۱.۷ و ۴۱.۸ و ۴۲.۰ کیلوبایت اند. اگر هر پنج وزن به شکل کامل و بدون ساب ست فرستاده می شدند، ۲۰۸.۶ کیلوبایت می شد. یعنی دو تصمیم با هم بیش از دو سوم وزن قلم را برداشتند، و تصمیم دوم، یعنی نفرستادن دو وزن، به تنهایی حدود ۵۰ کیلوبایت بود؛ بیشتر از آنچه ساب ست کردن روی یک فایل صرفه جویی می کند.

یک نکته دیگر که به همین قاعده وصل است: چون ۷۰۰ و ۸۰۰ هر دو فایل دارند، مرورگر هرگز مجبور نمی شود بولد جعلی بسازد. بولد جعلی روی خط فارسی بدتر از لاتین دیده می شود و درس تایپوگرافی فارسی دلیلش را توضیح می دهد.

و یک اعتراف کوچک از خانه تکانی نکرده خودمان: در پوشه قلم های این سایت یک وزن ششم هم هست که ۴۱.۵ کیلوبایت جا گرفته و هیچ جای کد به آن ارجاعی نیست. به بازدیدکننده فرستاده نمی شود، پس روی سرعت اثری ندارد، ولی همان قدر باید حذف شود.

font-display: چرا ما optional را انتخاب کردیم و نه swap

تا وقتی فایل قلم نرسیده، مرورگر باید تصمیم بگیرد با متن چه کند، و font-display همان تصمیم را می نویسد. تقریبا هر آموزشی swap را توصیه می کند. ما optional را انتخاب کرده ایم و دلیلش را می نویسیم، چون این یکی از آن جاهاست که توصیه رایج برای فارسی بدتر جواب می دهد.

با swap مرورگر فورا متن را با قلم جایگزین می کشد و به محض رسیدن قلم اصلی عوضش می کند. متن هیچ وقت نامرئی نیست و همین برد این گزینه است. بهایش هم دقیقا در همان لحظه تعویض است: عرض حروف عوض می شود، خط ها دوباره می شکنند و کل صفحه یک تکان می خورد. آن تکان همان جابه جایی چیدمان است که در درس Core Web Vitals اندازه گیری می شود.

با optional مرورگر یک فرصت کوتاه به قلم می دهد. اگر به موقع رسید از همان اول با آن می کشد و اگر نرسید، برای کل آن بازدید با قلم جایگزین می ماند و هیچ تعویضی رخ نمی دهد. یعنی جابه جایی چیدمان ناشی از قلم قطعا صفر می شود.

حالا چرا این انتخاب برای فارسی مهم تر است: تفاوت عرض بین یک قلم فارسی و قلم جایگزین سیستمی بزرگ تر از همین تفاوت در لاتین است. یک پاراگراف که با قلم جایگزین شش خط شده، با قلم اصلی ممکن است پنج خط بشود، و آن یک خط اختلاف کل بقیه صفحه را جابه جا می کند.

و حالا بهایی که پرداختیم و باید صریح گفته شود: با optional، بازدیدکننده ای که اینترنت کندی دارد و بار اولش است، ممکن است کل آن بازدید را با قلم جایگزین ببیند و قلم انتخابی ما را اصلا نبیند. برای ما این معامله می ارزید چون بار دومش قلم از کش می آید و از آن به بعد همیشه درست است. اگر برای شما دیده شدن دقیق قلم برند در همان بازدید اول اهمیت حیاتی دارد، انتخاب شما فرق می کند و آن هم قابل دفاع است.

swap و optional، دو معامله متفاوت

swap

  • متن فورا با قلم جایگزین کشیده می شود و هیچ وقت نامرئی نیست
  • قلم اصلی هر وقت برسد جایگزین می شود، حتی دیر
  • همان لحظه تعویض، چیدمان صفحه تکان می خورد

optional

  • قلم یک فرصت کوتاه دارد و بعد از آن دیگر جایگزین نمی شود
  • جابه جایی چیدمان ناشی از قلم قطعا صفر می شود
  • بازدیدکننده کند اینترنت ممکن است قلم شما را نبیند

هیچ کدام غلط نیست. ما optional را انتخاب کرده ایم چون جابه جایی چیدمان را قطعا صفر می کند، و بهایش این است که بعضی بازدیدکننده ها قلم ما را در بازدید اول اصلا نمی بینند.

فونت را زودتر شروع کنید: preload و Early Hints

مرورگر تا CSS را نخواند نمی داند که اصلا قلمی لازم دارد، و تا HTML نرسیده CSS را هم ندارد. یعنی دانلود قلم به طور طبیعی دیر شروع می شود، و همه کاری که در این بخش می کنیم این است که این شروع را جلو بیندازیم.

قدم اول preload است: یک خط در سر سند که به مرورگر می گوید این فایل را همین حالا شروع کن. قاعده ای که رعایت نکردنش رایج ترین اشتباه این کار است، این است که فقط قلم های نمای اول را preload کنید. اگر هر پنج وزن را preload کنید، مرورگر پنج دانلود همزمان شروع می کند و پهنای باندی که باید صرف تصویر اصلی صفحه می شد صرف قلمی می شود که در ته صفحه لازم است. این سایت سه قلم دارد و فقط دو تا را preload می کند: وزن معمولی برای بدنه و سنگین ترین وزن برای تیتر اصلی.

قدم دوم چیزی است که کمتر دیده می شود و اثرش واقعی است. سرور می تواند همان هدر preload را به شکل یک هدر پاسخ هم بفرستد، و بعضی شبکه های توزیع محتوا آن را به شکل یک پاسخ مقدماتی با کد ۱۰۳ برای مرورگر می فرستند، پیش از آنکه خود HTML آماده شود. یعنی در همان مدتی که سرور دارد صفحه را می سازد، مرورگر می تواند قلم را دانلود کند.

روی همین سایت این کار می کند و از بیرون هم دیده می شود: درخواست به صفحه اول ابتدا یک پاسخ 103 با همان دو قلم برمی گرداند و بعد پاسخ 200 با خود صفحه. اگر می خواهید روی سایت خودتان امتحانش کنید، هدرها را با ابزار خط فرمان بگیرید و دنبال خطی بگردید که با ۱۰۳ شروع می شود؛ مرورگر این پاسخ را در ابزار توسعه دهنده نشان نمی دهد.

و یک شرط که این کار را از یک تنظیم تزئینی جدا می کند: 103 فقط وقتی به درد می خورد که ساختن صفحه واقعا زمان ببرد. روی صفحه ای که از کش می آید و در بیست میلی ثانیه جواب می دهد، فرصتی برای جلو افتادن نمانده.

قلم از کجا شروع می شود و چطور جلو می افتد

  1. ۱

    پاسخ مقدماتی ۱۰۳

    پیش از آماده شدن HTML، مرورگر آدرس قلم را می گیرد

  2. ۲

    خط preload در سر سند

    فقط دو قلم نمای اول، نه هر پنج وزن

  3. ۳

    بلوک font-face در CSS

    اینجاست که مرورگر می فهمد کدام وزن ها اصلا وجود دارند

  4. ۴

    کشیدن متن

    با قلم اصلی اگر رسیده باشد، وگرنه با پشته جایگزین

قدم اول فقط روی صفحه ای معنا دارد که ساختنش زمان می برد. صفحه ای که از کش می آید و در بیست میلی ثانیه جواب می دهد، فرصتی برای جلو افتادن ندارد.

پشته جایگزین که نمی پرد

هر بازدیدکننده لحظه اول را با قلم جایگزین می بیند، و اگر optional را انتخاب کرده باشید بعضی هایشان کل بازدید را. پس این پشته یک جزئیات تزئینی نیست، بخشی از تجربه واقعی است و باید انتخاب شود نه اینکه از یک قالب کپی شود.

پشته ای که این سایت استفاده می کند این ترتیب را دارد: قلم اختصاصی، بعد یک قلم فارسی متن باز رایج، بعد قلم پیش فرض سیستم، بعد دو قلم شناخته شده در ویندوز، و آخر سر sans-serif. منطقش ساده است: هر پله به سمت چیزی می رود که احتمال وجودش بیشتر است، و آخرین پله چیزی است که همیشه هست.

دو چیز را در انتخاب پشته فارسی نباید فراموش کرد. اول اینکه قلمی که فقط لاتین دارد در این پشته بی فایده نیست، مضر است: مرورگر برای حروف فارسی سراغ پله بعدی می رود ولی برای عددها و حروف لاتین ممکن است همان را بردارد، و متن شما با دو قلم مختلف نوشته می شود. دوم اینکه Tahoma روی ویندوز حروف فارسی را دارد و به همین دلیل هنوز در بیشتر پشته های فارسی دیده می شود؛ زیبا نیست ولی وجود دارد، و وجود داشتن در پله های آخر همان چیزی است که لازم است.

و کاری که ارزشش را دارد و کمتر انجام می شود: پشته را واقعا امتحان کنید. در ابزار توسعه دهنده مرورگر نام قلم اصلی را از قاعده حذف کنید و ببینید صفحه چه شکلی می شود. اگر آن صفحه هنوز قابل خواندن است، تصمیم optional برایتان راحت می شود؛ اگر شبیه یک صفحه شکسته شد، پشته تان را عوض کنید نه font-display را.

و آخرین قطعه، که به درس کش وصل است: فایل قلم بین همه فایل های سایت بهترین نامزد برای کش طولانی است، چون هرگز عوض نمی شود. روی این سایت قلم ها با اعتبار یک ساله فرستاده می شوند، پس بازدیدکننده ای که یک بار آمده باشد دفعه بعد صفر بایت بابت قلم می دهد. همین یک تنظیم، همه بحث بالا را برای بازدید دوم به بعد بی موضوع می کند.

برگه قلمقبل از انتشار

انجام بدهید

  • بشمرید کدام وزن ها را واقعا در استایل نوشته اید
  • فقط وزن هایی را فایل بدهید که مرورگر نمی تواند از بقیه بسازد
  • فقط قلم های نمای اول را preload کنید
  • قلم ها را با عمر کش طولانی بفرستید؛ هرگز عوض نمی شوند
  • صفحه را یک بار بدون قلم اصلی نگاه کنید و ببینید خوانا هست

انجام ندهید

  • preload کردن هر وزنی که دارید
  • گذاشتن قلمی که فقط لاتین دارد در پشته جایگزین فارسی
  • فرستادن قلم به شکل فرمت های قدیمی تر در کنار woff2
  • ساب ست کردن بر اساس حرف هایی که امروز در صفحه دیده می شوند

مسیر سریع با هوش مصنوعی

راه معمولی سبک کردن قلم این است که فایل را در یک سرویس آنلاین بالا بدهید و خروجی را بگیرید. کار می کند و دو مشکل دارد: تصمیم اینکه چه چیزی حذف شود دست شما نیست، و تکرارش دفعه بعد از اول شروع می شود. راه سریع دو قدم دارد و قدم اولش همان قدمی است که تقریبا همه از آن می پرند: قبل از سبک کردن فایل ها، معلوم کنید اصلا کدام فایل ها لازم اند. مدل اینجا نقش خوبی دارد و نقشش تصمیم گرفتن نیست؛ فهرست وزن های استایل شما را با فهرست فایل هایی که دارید مقایسه می کند و می گوید کدام فایل ها را مرورگر خودش پوشش می دهد. آن مقایسه دقیقا همان چیزی است که روی این سایت حدود ۵۰ کیلوبایت صرفه جویی کرد.

  1. وزن هایی را که در استایل نوشته اید بشمرید. دستور بخش دوم همین کار را می کند و خروجی اش یک فهرست کوتاه عدد است.
  2. آن فهرست را با فهرست فایل های قلمی که دارید به مدل بدهید و بپرسید کدام وزن ها را می شود حذف کرد و هر کدام به کدام وزن باقیمانده می رسد.
  3. فقط وزن های باقیمانده را ساب ست کنید. ابزار استاندارد این کار pyftsubset از بسته fontTools است و در حالت پیش فرض ویژگی های چیدمانی را که خط فارسی به آنها وابسته است نگه می دارد.
  4. خروجی را با چشم امتحان کنید و نه با عدد. یک پاراگراف فارسی، یک تیتر، چند عدد و یک کلمه لاتین را با قلم تازه نگاه کنید. اگر حرفی از حرف بعدی جدا افتاده، ساب ست خراب است و اندازه فایل هیچ ربطی به این ندارد.

نسخه آماده کپی

می خواهم تعداد فایل های قلمی را که سایتم می فرستد کم کنم، بدون اینکه ظاهرش عوض شود.

وزن هایی که در فایل استایل نوشته شده اند:
{خروجی دستور شمارش وزن ها را اینجا بچسبانید}

فایل های قلمی که الان دارم، با اندازه:
{فهرست فایل ها را اینجا بچسبانید}

قاعده ها:
۱. طبق الگوریتم تطبیق قلم در استاندارد CSS کار کن، نه طبق حدس. برای هر وزنی که فایلش را حذف کنیم، بگو مرورگر کدام وزن باقیمانده را انتخاب می کند و چرا.
۲. اگر برای وزنی حذفش باعث می شود مرورگر بولد جعلی بسازد، آن را حذف نکن و همین را بنویس.
۳. هیچ وزنی را که فقط یک بار در استایل استفاده شده، صرفا به دلیل کم بودن استفاده حذف نکن؛ ملاک این است که نزدیک ترین وزن باقیمانده چقدر فرق دارد.
۴. عدد صرفه جویی را فقط از اندازه فایل هایی که خودم دادم حساب کن و عدد تازه نساز.
۵. درباره سرعت یا رتبه هیچ وعده ای نده.

خروجی را در سه بخش بده: فایل هایی که می مانند، فایل هایی که حذف می شوند و هر کدام به چه چیزی می رسند، و جمع اندازه قبل و بعد.

قبل از اعتماد به خروجی: مدل الگوریتم تطبیق قلم را می داند و قلم شما را ندیده، پس دو چیز را خودتان باید بررسی کنید. اول اینکه فایل قلم شما ممکن است اصلا آن وزنی نباشد که اسمش می گوید؛ اسم فایل هیچ تضمینی نیست و مدل از اسم فایل می خواند. دوم و مهم تر، نتیجه کار را باید ببینید: بعد از حذف یک وزن، صفحه ای را باز کنید که آن وزن در آن استفاده شده و با چشم مقایسه کنید. تفاوت بین وزن ۶۰۰ و ۷۰۰ روی یک تیتر بزرگ دیده می شود و روی یک برچسب کوچک نه، و این را فقط نگاه کردن معلوم می کند.

هوش مصنوعی در این کار

در کار قلم، هوش مصنوعی یک کار را واقعا خوب انجام می دهد و یک کار را باید اصلا انجام ندهد. خوب است در استدلال کردن روی قاعده ها: الگوریتم تطبیق قلم در استاندارد CSS نوشته شده و مدل می تواند آن را روی فهرست شما اجرا کند و بگوید کدام وزن به کدام می رسد. کاری که نباید بکند ساختن یا بازسازی خود فایل قلم است. موضع ما این است: مدل به فهرست دست بزند، به فایل نه.

ابزارهایی که واقعا کمک می کنند

  • Claude برای همان استدلال روی قاعده مناسب است: فهرست وزن ها را می گیرد، الگوریتم تطبیق را روی آن اجرا می کند و اگر قاعده بگذارید قاعده ها را نگه می دارد. ایران در فهرست کشورهای پشتیبانی شده انتروپیک نیست، پس نه ثبت نام رسمی انجام می شود و نه کارت ایرانی پذیرفته می شود.
  • Gemini برای نگاه کردن به خود صفحه مفید است: دو اسکرین شات از یک صفحه با دو قلم بدهید و بپرسید کجاها چیدمان جابه جا شده. همین جواب معلوم می کند پشته جایگزین شما به اندازه کافی نزدیک هست یا نه. صفحه خود گوگل می گوید اپ وب جمنای در بیش از ۲۳۰ کشور و قلمرو کار می کند و ایران در آن فهرست نیست.
  • ChatGPT برای همان کار فهرست و توضیح دادن پرچم های ابزار ساب ست کافی است. درباره دسترسی از ایران ادعایی نمی کنیم، چون صفحه کشورهای پشتیبانی شده اوپن ای آی مثل بقیه آن دامنه به این سرور پاسخ ۴۰۳ می دهد.

کجا نتیجه معکوس می دهد

دو خطر، و دومی مخصوص خط فارسی است. اول پرچم های ساختگی: مدل الگوی دستورهای ابزارهای قلم را دیده و می تواند پرچمی بنویسد که وجود ندارد یا در نسخه شما معنای دیگری دارد. اینجا خطرش بیشتر از جاهای دیگر است، چون خروجی خراب یک فایل قلم به شکل خطا ظاهر نمی شود؛ فایل ساخته می شود و کوچک تر هم هست و فقط وقتی متن را نگاه کنید می فهمید که چیزی سر جایش نیست. خطر دوم همین است در بدترین شکلش: اگر مدل به شما بگوید ویژگی های چیدمانی را برای کم کردن حجم حذف کنید، آن دستور روی متن لاتین بی ضرر است و روی متن فارسی حروف را از هم می اندازد. هر خروجی ساب ست را با یک پاراگراف فارسی واقعی نگاه کنید، نه با عدد اندازه فایل. و کار سوم که اصلا نباید بکنید: از مدل نخواهید خودش قلم بسازد یا وزن تازه ای از روی وزن موجود درست کند؛ نتیجه اش قلمی است که هیچ کس آزمایشش نکرده و مجوزش هم روشن نیست.

منبع ها: MDN: font-display Anthropic: supported countries Google: where Gemini Apps are available

حد این توصیه

این درس درباره وزن و بارگذاری قلم است و نه درباره انتخاب آن؛ اینکه کدام قلم فارسی برای برند شما درست است و چه چیزی یک قلم فارسی را خوب می کند، کار درس تایپوگرافی فارسی است. سه مرز دیگر هم دارد. اول اینکه عددهای اینجا مال یک خانواده قلم اند و روی قلم شما فرق می کنند، مخصوصا نسبت ساب ست، که به این بستگی دارد که قلم اصلی چقدر حرف غیرلازم داشته باشد. دوم اینکه انتخاب optional انتخاب ماست و برای سایتی که هویت بصری اش به دیده شدن دقیق قلم در همان بازدید اول وابسته است، جواب فرق می کند. سوم اینکه ما با قلم های متغیر روی سایت فارسی تجربه دست اولی نداریم؛ در تئوری چند وزن را در یک فایل جا می دهند، ولی چون خودمان روی این سایت امتحانشان نکرده ایم درباره اندازه یا رفتارشان در فارسی ادعایی نمی کنیم.

از تجربه خود ما

چیزی که بیشتر از هر تنظیم دیگری در این کار به ما کمک کرد، یک قاعده در خود CSS بود و ما آن را از یک اندازه گیری فهمیدیم و نه از یک آموزش. فایل استایل این سایت پنج وزن می نویسد و ما تا مدتی هر پنج فایل را می فرستادیم. بعد که وزن ها را شمردیم و با فایل ها مقایسه کردیم، دیدیم مرورگر برای وزن ۵۰۰ سراغ ۴۰۰ می رود و برای ۶۰۰ سراغ ۷۰۰، چون الگوریتم تطبیق قلم همین را حکم می کند. دو فایل را حذف کردیم و هیچ کس، از جمله خود ما در مقایسه چشمی، تفاوتی روی صفحه ندید. آن دو فایل حدود ۵۰ کیلوبایت بودند، بیشتر از چیزی که ساب ست کردن روی یک فایل صرفه جویی می کند. درسی که برایمان ماند این است: قبل از اینکه فایل ها را سبک کنید، بشمرید که چند تایشان اصلا لازم است.

سوال هایی که واقعا پرسیده می شوند

قلم را از سرور خودم بدهم یا از یک سرویس بیرونی؟

از سرور خودتان. دلیل قدیمی برای سرویس بیرونی این بود که بازدیدکننده شاید همان قلم را از سایت دیگری در کش داشته باشد، و آن دلیل دیگر معتبر نیست چون مرورگرها کش را بین دامنه ها جدا کرده اند. سرویس بیرونی حالا یعنی یک اتصال اضافه به یک دامنه دیگر، و برای بازدیدکننده ایرانی یعنی یک نقطه شکست بیشتر.

غیر از woff2 فرمت دیگری هم لازم است؟

نه، و فرستادن فرمت های قدیمی تر در کنارش ضرر خالص است. هر مرورگری که امروز واقعا استفاده می شود woff2 را می فهمد و فشرده ترین فرمت هم همین است. اگر در کد قدیمی سایتتان چند فرمت پشت سر هم نوشته شده، حذفشان یک تمیزکاری بی خطر است.

قلم پیش فرض سیستم را استفاده کنم و کلا قلم اختصاصی نفرستم؟

برای سرعت این بهترین جواب است و صفر بایت خرج دارد، ولی برای فارسی بهایش بیشتر از لاتین است. قلم پیش فرض دستگاه های مختلف در فارسی خیلی با هم فرق می کند، پس صفحه شما روی اندروید و ویندوز و آیفون سه شکل متفاوت پیدا می کند. اگر هویت بصری برایتان مهم نیست و سرعت اولویت اول است، انتخاب درستی است؛ در غیر این صورت یک قلم ساب ست شده در سه وزن، معامله متعادلی است.