תבנית גופני רשת פתוחה (.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) |
| גודל קובץ יחסי | קטן בכ-40% מ-TTF | קטן בכ-60% מ-TTF | תקן בסיס (100%) | תקן בסיס (100%) |
| סביבת יעד | דפדפני אינטרנט ישנים (IE9+, Safari 5+) | דפדפני אינטרנט מודרניים (אוניברסלי) | מערכות הפעלה שולחניות | הוצאה לאור שולחנית והדפסה |
מצבי שיחשות נפוצים ומדריך שחזור הקסדצימלי (Hex)
אזהרת קונסולת דפדפן: 'Failed to decode downloaded font: OTS parsing error'.
גורם שורש: אי התאמה באורך הטבלה הלא דחוסה המוצהרת או זרם zlib פגום.
התאוששות: דחס מחדש את טבלאות הגופן או המר ל-WOFF2 באמצעות File2File Font Converter.
ניתוח אבטחה ווקטורי התקפה על מנתחים (Parsers)
דפדפני אינטרנט מנתחים קבצי WOFF שהורדו מדומיינים לא מהודרים באינטרנט באמצעות OpenType Sanitizer (OTS) כדי לחסום עומסי ניצול לרעה.
ווקטורי תקיפה ידועים
- קריאת יתר של חוצץ (Buffer over-read) במהלך דחיסת zlib של נתחי טבלת גופנים פגומים.
- שדות אורך טבלה לא תואמים המפעילים גלישת חוצץ בערימה (heap buffer overflows) במעבדי גופנים.
- מניעת שירות עקב מיצוי זיכרון במהלך הרחבת טבלת גופנים.
השיטות המומלצות להגנה:
היסטוריה ואבני דרך
יתרונות מרכזיים
- מפחית את גדלי קבצי גופני האינטרנט ב-30% עד 50% בהשוואה לקבצי TTF או OTF גולמיים ולא דחוסים.
- תאימות לאחור אוניברסלית בכל דפדפן אינטרנט שולחני ונייד ששוחרר מאז 2011.
- כולל בלוק מטא-דאטה אופציונלי של XML עבור רישוי גופנים, קרדיטים ליוצרים ומידע זכויות יוצרים של יציקות גופנים.
מגבלות טכניות וחסרונות
- הוחלף על ידי WOFF2, אשר דוחס בכ-30% קטן יותר באמצעות אלגוריתם Brotli.
- לא ניתן להתקנה ישירות במערכות הפעלה שולחניות (Windows/Mac) ללא המרה ל-TTF/OTF.
- אלגוריתם דחיסת zlib הישן פחות יעיל ממקודדי אנטרופיה מודרניים.
עובדות טכניות מעניינות
- בייטים הקסדצימליים (Magic bytes) עבור WOFF 1.0 הם 'wOFF' (0x77 0x4F 0x46 0x46), בעוד ש-WOFF 2.0 משתמש ב-'wOF2'.
- יציקות גופנים הסכימו לאפשר את הגופנים שלהם באינטרנט רק לאחר שנוצר WOFF, מכיוון שהמיכל הייעודי שלו הבדיל בין גופני אינטרנט לגופנים שולחניים הניתנים להעתקה בלתי חוקית.
- WOFF הוטמע במקור ב-Firefox 3.6 בשנת 2010 לפני שהפך להמלצה רשמית של W3C.
שאלות טכניות נפוצות
מה ההבדל בין WOFF ל-WOFF2?
WOFF משתמש בדחיסת zlib, בעוד ש-WOFF2 משתמש באלגוריתם Brotli החדש יותר של Google ובהמרות טבלה, מה שמוביל לקבצים שהם קטנים בכ-30% מ-WOFF.
איך אני יכול להמיר גופן WOFF ל-TTF או OTF לשימוש שולחני?
אתה יכול להמיר קבצי WOFF לגופני TTF או OTF שולחניים הניתנים להתקנה בתוך שניות באמצעות File2File.app ישירות בדפדפן האינטרנט שלך.
האם אני עדיין צריך WOFF 1.0 באתרי אינטרנט מודרניים?
לא. כל הדפדפנים המודרניים תומכים ב-WOFF2 באופן טבעי. WOFF 1.0 נדרש רק אם עליך לתמוך בדפדפנים ישנים ומיושנים כמו Internet Explorer.