Web Open Font Format (.woff)
W3C ΤυπικόΗ μορφή Web Open Font Format (WOFF) είναι το ιστορικό ανοιχτό πρότυπο γραμματοσειρών ιστού πρώτης γενιάς που υποστηρίχθηκε από το W3C, η οποία περιλαμβάνει τυπικές γραμματοσειρές TrueType ή OpenType με συμπίεση zlib και μεταδεδομένα αδειοδότησης XML.
Επιθεώρηση & Μεταδεδομένα
Τα λειτουργικά συστήματα και τα εργαλεία ανάλυσης αρχείων αναγνωρίζουν τα αρχεία WOFF ελέγχοντας την αρχική δυαδική ακολουθία byte:
Υπογραφή κεφαλίδας σε επίπεδο byte (Magic Bytes)
Τα λειτουργικά συστήματα και τα εργαλεία ανάλυσης αρχείων αναγνωρίζουν τα αρχεία WOFF ελέγχοντας την αρχική δυαδική ακολουθία byte:
ΔΕΚΑΕΞΑΔΙΚΗ ΥΠΟΓΡΑΦΗ (OFFSET 0):
77 4F 46 46ΑΝΑΠΑΡΑΣΤΑΣΗ ASCII: wOFF
Τυποποίηση: W3C Recommendation (2012)
Τεχνικές Προδιαγραφές
| Αρχιτεκτονική Περιέκτη | Κεφαλίδα WOFF 44 byte, ακολουθούμενη από κατάλογο πινάκων, δεδομένα πινάκων συμπιεσμένα με zlib, προαιρετικά εκτεταμένα μεταδεδομένα και ιδιωτικά δεδομένα |
| Συμπίεση | Συμπίεση Deflate (zlib) σε κάθε μεμονωμένο πίνακα γραμματοσειράς |
| Σειρά byte (endianness) | Big-Endian (SFNT standard) |
| Χρωματικοί Χώροι | Κληρονομούνται από τους υποκείμενους πίνακες γραμματοσειράς |
| Κανάλια & Δομή | Περιγράμματα γλυφών 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+) | Η υποστήριξη διαφέρει ανά πρόγραμμα περιήγησης. | Λειτουργικά συστήματα επιτραπέζιων υπολογιστών | Επιτραπέζια δημοσίευση & εκτύπωση |
Συνήθεις τρόποι καταστροφής δεδομένων και οδηγός ανάκτησης δεκαεξαδικών δεδομένων
Προειδοποίηση κονσόλας προγράμματος περιήγησης: 'Failed to decode downloaded font: OTS parsing error'.
Βασική Αιτία: Ασυμφωνία στο δηλωμένο μήκος ασυμπίεστου πίνακα ή κατεστραμμένη ροή zlib.
Ανάκτηση: Επανασυμπίεση πινάκων γραμματοσειρών ή μετατροπή σε WOFF2 χρησιμοποιώντας το File2File.app Font Converter.
Ανάλυση ασφάλειας και διανύσματα επίθεσης στον αναλυτή
Τα προγράμματα περιήγησης ιστού αναλύουν τα αρχεία WOFF που μεταφορτώνονται από μη αξιόπιστους τομείς ιστού χρησιμοποιώντας το OpenType Sanitizer (OTS) για τον αποκλεισμό κακόβουλων δεδομένων εκμετάλλευσης.
Γνωστά διανύσματα επίθεσης
- Υπέρβαση ορίων μνήμης (buffer over-read) κατά την αποσυμπίεση zlib τμημάτων πίνακα γραμματοσειρών.
- Ασύμφωνα πεδία μήκους πίνακα που προκαλούν υπερχειλίσεις μνήμης σωρού (heap buffer overflows) στις μηχανές απόδοσης γραμματοσειρών.
- Άρνηση εξυπηρέτησης (Denial of Service) μέσω εξάντλησης μνήμης κατά την επέκταση του πίνακα γραμματοσειρών.
Βέλτιστες αμυντικές πρακτικές: Να καθαρίζετε πάντα τα ληφθέντα αρχεία WOFF με το OTS πριν τα περάσετε στις μηχανές γραμματοσειρών του λειτουργικού συστήματος.
Ιστορική Αναδρομή & Ορόσημα
Κύρια Πλεονεκτήματα
- Μπορεί να μειώσει το μέγεθος αρχείων γραμματοσειρών ιστού σε σύγκριση με ακατέργαστα αρχεία TTF ή OTF· η μείωση εξαρτάται από τη γραμματοσειρά και τον κωδικοποιητή.
- Το WOFF υποστηρίζεται από πολλά προγράμματα περιήγησης, συμπεριλαμβανομένων παλαιότερων εκδόσεων· η συμβατότητα εξαρτάται από την έκδοση του προγράμματος περιήγησης και την πλατφόρμα.
- Περιλαμβάνει ένα προαιρετικό μπλοκ μεταδεδομένων XML για την αδειοδότηση γραμματοσειρών, τις πιστώσεις δημιουργών και τις πληροφορίες πνευματικών δικαιωμάτων του τυπογραφείου.
Τεχνικοί Περιορισμοί & Μειονεκτήματα
- Σε πολλές ροές εργασίας ιστού έχει αντικατασταθεί από το WOFF2, το οποίο χρησιμοποιεί συμπίεση Brotli και μετασχηματισμούς πινάκων γραμματοσειρών· η εξοικονόμηση μεγέθους αρχείου διαφέρει.
- Δεν μπορεί να εγκατασταθεί απευθείας σε λειτουργικά συστήματα επιτραπέζιων υπολογιστών (Windows/Mac) χωρίς μετατροπή σε TTF/OTF.
- Ο παλαιότερος αλγόριθμος συμπίεσης zlib είναι λιγότερο αποτελεσματικός από τους σύγχρονους κωδικοποιητές εντροπίας.
Ενδιαφέροντα Τεχνικά Στοιχεία
- Τα μαγικά byte για το 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 1.0 απαιτείται μόνο εάν πρέπει να υποστηρίξετε παρωχημένα προγράμματα περιήγησης παλαιού τύπου, όπως ο Internet Explorer.