תבנית גופני רשת פתוחה (.woff)
W3C תקןפורמט גופני האינטרנט הפתוח (WOFF) הוא פורמט גופני האינטרנט הפתוח ההיסטורי מהדור הראשון שאושר על ידי W3C, ועוטף גופני TrueType או OpenType סטנדרטיים באמצעות דחיסת zlib ומטא-דאטה של רישוי XML.
בדיקה ומטא-נתונים
מערכות הפעלה ומנתחי קבצים מזהים קבצי WOFF על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת כותרת ברמת הבייט (Magic Bytes)
מערכות הפעלה ומנתחי קבצים מזהים קבצי WOFF על ידי בדיקת רצף הבייטים הבינארי הראשוני:
חתימת HEX (היסט 0):
77 4F 46 46ייצוג ASCII: wOFF
תקינה: W3C Recommendation (2012)
מפרט טכני
| מבנה המכולה | כותרת WOFF בגודל 44 בתים, ואחריה ספריית טבלאות, נתוני טבלאות דחוסים ב-zlib, מטא-נתונים מורחבים אופציונליים ונתונים פרטיים |
| דחיסה | דחיסת Deflate (zlib) המופעלת על כל טבלת גופן בנפרד |
| סדר בתים (Endianness) | סדר בתים Big-Endian (תקן SFNT) |
| מרחבי צבע | עובר בירושה מטבלאות הגופן הבסיסיות |
| ערוצים ומבנה | קווי מתאר של גליפי TrueType ('glyf') או PostScript ('CFF '), מדדים ותכונות טיפוגרפיות |
| ממדים מרביים | עד 65,535 גליפים בקובץ גופן |
| שקיפות | עובר בירושה מתבנית הגופן הבסיסית |
| הזרמה ופרוגרסיביות | פענוח דחיסה של כל טבלה בנפרד מאפשר טעינת גופנים בהזרמה |
מטריצת השוואה טכנית: 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; החיסכון משתנה לפי הגופן | תקן בסיס (100%) | תקן בסיס (100%) |
| סביבת יעד | דפדפני אינטרנט ישנים (IE9+, Safari 5+) | התמיכה משתנה בהתאם לדפדפן. | מערכות הפעלה שולחניות | הוצאה לאור שולחנית והדפסה |
מצבי השחתה נפוצים ומדריך שחזור הקסדצימלי (Hex)
אזהרת קונסולת דפדפן: 'Failed to decode downloaded font: OTS parsing error'.
גורם שורש: אי התאמה באורך הטבלה הלא דחוסה המוצהרת או זרם zlib פגום.
שחזור: דחס מחדש את טבלאות הגופן או המר ל-WOFF2 באמצעות File2File.app Font Converter.
ניתוח אבטחה ווקטורי תקיפה נגד מנתחי פורמטים (parsers)
דפדפני אינטרנט מנתחים קבצי WOFF שהורדו מדומיינים לא מהימנים באינטרנט באמצעות OpenType Sanitizer (OTS) כדי לחסום עומסי ניצול לרעה.
ווקטורי תקיפה ידועים
- קריאת יתר של חוצץ (Buffer over-read) במהלך שחרור הדחיסה של zlib של נתחי טבלת גופנים פגומים.
- שדות אורך טבלה לא תואמים המפעילים גלישת חוצץ בערימה (heap buffer overflows) במעבדי גופנים.
- מניעת שירות עקב מיצוי זיכרון במהלך הרחבת טבלת גופנים.
שיטות מומלצות להגנה: טהר תמיד קובצי WOFF שהורדו באמצעות OTS לפני העברתם למנועי הגופנים של מערכת ההפעלה.
היסטוריה ואבני דרך
יתרונות מרכזיים
- יכול לצמצם את גודל קובצי הגופנים באינטרנט לעומת קובצי TTF או OTF גולמיים; מידת הצמצום תלויה בגופן ובמקודד.
- WOFF נתמך בדפדפנים רבים, כולל גרסאות ישנות; התאימות תלויה בגרסת הדפדפן ובפלטפורמה.
- כולל בלוק מטא-דאטה אופציונלי של XML עבור רישוי גופנים, קרדיטים ליוצרים ומידע זכויות יוצרים של בתי יציקה לגופנים.
מגבלות טכניות וחסרונות
- במקרים רבים WOFF2 החליף אותו בתהליכי עבודה לאינטרנט; הוא משתמש בדחיסת 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 ובהמרות של טבלאות גופן. ההבדל בגודל הקובץ תלוי בגופן ובמקודד.
איך אני יכול להמיר גופן WOFF ל-TTF או OTF לשימוש שולחני?
אתה יכול להמיר קבצי WOFF לגופני TTF או OTF שולחניים הניתנים להתקנה בתוך שניות באמצעות File2File.app ישירות בדפדפן האינטרנט שלך.
האם אני עדיין צריך WOFF 1.0 באתרי אינטרנט מודרניים?
דפדפנים גדולים ועדכניים תומכים ב-WOFF2. גיבוי בפורמט WOFF עשוי עדיין להועיל בדפדפנים ישנים או בסביבות משובצות מסוימות.