فرمت باز فونت وب (.woff)
W3C استانداردفرمت فونت وب باز (WOFF) اولین نسل تاریخی از استانداردهای باز فونت وب است که توسط W3C تأیید شده و فونتهای استاندارد TrueType یا OpenType را با فشردهسازی zlib و متادیتای لایسنس XML بستهبندی میکند.
بررسی و فراداده
سیستمعاملها و تحلیلگرهای فایل، فایلهای WOFF را با بررسی توالی بایتهای دودویی ابتدایی شناسایی میکنند:
امضای هدر در سطح بایت (Magic Bytes)
سیستمعاملها و تحلیلگرهای فایل، فایلهای WOFF را با بررسی توالی بایتهای دودویی ابتدایی شناسایی میکنند:
امضای HEX (آفست 0):
77 4F 46 46نمایش ASCII: wOFF
استانداردسازی: W3C Recommendation (2012)
مشخصات فنی
| معماری کانتینر | 44-byte WOFF header followed by table directory, zlib-compressed table data, optional extended metadata, and private data |
| فشردهسازی | Deflate (zlib) compression applied to each individual font table |
| ترتیب بایتها (Endianness) | Big-Endian (SFNT standard) |
| فضاهای رنگی | Inherited from underlying font tables |
| کانالها و ساختار | TrueType ('glyf') or PostScript ('CFF ') glyph outlines, metrics, and typographic features |
| حداکثر ابعاد | Up to 65,535 glyphs per font file |
| شفافیت مشخصات | Inherited from underlying font format |
| استریمینگ و پیشرونده | Table-by-table decompression enables streaming font loading |
ماتریس مقایسه فنی: WOFF در برابر رقبا
| ویژگی فنی | WOFF (فعلی) | WOFF2 | TTF | OTF |
|---|---|---|---|---|
| کدک فشردهسازی | Deflate (zlib) در هر جدول | Brotli با پیشپردازش جدول | SFNT فشردهنشده | SFNT فشردهنشده |
| امضای جادویی | wOFF (0x77 0x4F 0x46 0x46) | wOF2 (0x77 0x4F 0x46 0x32) | 0x00 0x01 0x00 0x00 | OTTO (0x4F 0x54 0x54 0x4F) |
| حجم نسبی فایل | ~۴۰٪ کوچکتر از TTF | ~۶۰٪ کوچکتر از TTF | استاندارد پایه (۱۰۰٪) | استاندارد پایه (۱۰۰٪) |
| محیط هدف | مرورگرهای وب قدیمی (IE9+، سافاری ۵+) | مرورگرهای وب مدرن (جهانی) | سیستمعاملهای دسکتاپ | انتشارات دسکتاپ و چاپ |
حالتهای رایج خرابی و راهنمای بازیابی هگز
هشدار کنسول مرورگر: 'Failed to decode downloaded font: OTS parsing error'.
علت ریشهای: عدم تطابق در طول جدول اعلام شده و فشردهنشده یا آسیب دیدن استریم zlib.
بازیابی: بازسازی فشردهسازی جداول فونت یا تبدیل به WOFF2 با استفاده از مبدل فونت File2File.
تحلیل امنیتی و بردارهای حمله تجزیهکننده (Parser)
مرورگرهای وب فایلهای WOFF دانلود شده از دامنههای وب غیرقابل اعتماد را با استفاده از ضدعفونیکننده OpenType (OTS) برای مسدود کردن بارهای اکسپلویت تجزیه میکنند.
بردارهای حمله شناختهشده
- سرریز بافر در طول فشردهسازیزدایی zlib از قطعات جدول فونت خراب.
- فیلدهای طول جدول نامعتبر که باعث سرریز بافر پشته در رندرر فونت میشوند.
- حمله انکار خدمات از طریق اتمام حافظه در حین گسترش جدول فونت.
بهترین روشهای پدافندی:
تاریخچه و نقاط عطف
مزایا و نقاط قوت کلیدی
- حجم فایلهای فونت وب را در مقایسه با فایلهای خام و فشردهنشده TTF یا OTF بین ۳۰٪ تا ۵۰٪ کاهش میدهد.
- سازگاری معکوس جهانی در تمام مرورگرهای وب دسکتاپ و موبایل عرضه شده از سال ۲۰۱۱ تاکنون.
- شامل یک بلوک متادیتای XML اختیاری برای لایسنس فونت، اعتبار نویسنده و اطلاعات کپیرایت کارخانه سازنده است.
محدودیتها و معایب فنی
- توسط WOFF2 منسوخ شده است که با استفاده از الگوریتم Brotli حدود ۳۰٪ بیشتر فشردهسازی میکند.
- بدون تبدیل به TTF/OTF مستقیماً روی سیستمعاملهای دسکتاپ (ویندوز/مک) قابل نصب نیست.
- الگوریتم قدیمیتر فشردهسازی zlib نسبت به رمزگذارهای انتروپی مدرن کارایی کمتری دارد.
نکات فنی جالب
- بایتهای جادویی برای WOFF 1.0 برابر با 'wOFF' (0x77 0x4F 0x46 0x46) است، در حالی که WOFF 2.0 از 'wOF2' استفاده میکند.
- شرکتهای ساخت فونت تنها پس از ایجاد WOFF موافقت کردند که فونتهای خود را روی وب قرار دهند، زیرا کانتینر تخصصی آن فونتهای وب را از فونتهای دسکتاپ قابل کپی غیرمجاز متمایز میکرد.
- WOFF ابتدا در سال ۲۰۱۰ در فایرفاکس ۳.۶ پیادهسازی شد و سپس به عنوان توصیه رسمی W3C درآمد.
سوالات فنی متداول
تفاوت بین WOFF و WOFF2 چیست؟
WOFF از فشردهسازی zlib استفاده میکند، در حالی که WOFF2 از الگوریتم جدیدتر Brotli گوگل و تبدیلهای جدول بهره میبرد که در نتیجه فایلهایی تقریباً ۳۰٪ کوچکتر از WOFF تولید میکند.
چگونه میتوانم یک فونت WOFF را برای استفاده روی دسکتاپ به TTF یا OTF تبدیل کنم؟
شما میتوانید با استفاده از File2File.app مستقیماً در مرورگر وب خود، فایلهای WOFF را در چند ثانیه به فونتهای دسکتاپ قابل نصب TTF یا OTF تبدیل کنید.
آیا هنوز در وبسایتهای مدرن به WOFF 1.0 نیاز دارم؟
خیر. تمام مرورگرهای مدرن بهطور پیشفرض از WOFF2 پشتیبانی میکنند. WOFF 1.0 فقط در صورتی مورد نیاز است که مجبور باشید از مرورگرهای قدیمی و منسوخ مانند اینترنت اکسپلورر پشتیبانی کنید.