Τι είναι ένα αρχείο CFF2;
Η μορφή αρχείου CFF2 είναι η έκδοση 2.0 της μορφής αρχείου CFF και επιτρέπει την αποτελεσματική αποθήκευση περιγραμμάτων γλυφών και μεταδεδομένων παρόμοια με τη μορφή αρχείου CFF. Το CFF2 διαφέρει από το CFF στο ότι προορίζεται να χρησιμοποιηθεί στο πλαίσιο μιας γραμματοσειράς OpenType ως πίνακας ‘sfnt’ με την ετικέτα CFF2. Δεν μπορεί να χρησιμοποιηθεί ως αυτόνομο πρόγραμμα και εξαρτάται από δεδομένα σε άλλους πίνακες OpenType.
Μορφή αρχείου CFF2
Οι προδιαγραφές μορφής αρχείου CFF2 περιέχουν λεπτομέρειες σχετικά με τη διάταξη εσωτερικών δεδομένων, τους τύπους δεδομένων, τους πίνακες και άλλες εσωτερικές πληροφορίες σχετικά με τη μορφή αρχείου. Μπορεί να παραπεμφθεί για αναφορά προγραμματιστή. Μερικές από τις λεπτομέρειες σχετικά με αυτά είναι οι εξής.
Διάταξη δεδομένων
Τα δυαδικά δεδομένα της μορφής αρχείου CFF2 οργανώνονται λογικά ως ένας αριθμός ξεχωριστών δομών δεδομένων. Η διάταξη εντός των δυαδικών δεδομένων είναι όπως φαίνεται στον παρακάτω πίνακα.
Είσοδος | Σχόλια |
---|---|
Κεφαλίδα | Σταθερή τοποθεσία |
Κορυφαία DICT | Σταθερή τοποθεσία |
Παγκόσμιος ΔΕΙΚΤΗΣ | Σταθερή τοποθεσία |
Παραλλαγή | Κατάστημα |
FDSεπιλογή | Παρουσίαση μόνο εάν υπάρχουν περισσότερες από μία γραμματοσειρές DICT στο Font DICT INDEX. |
Γραμματοσειρά DICT INDEX | |
Πίνακας γραμματοσειρών DICT | Περιλαμβάνεται στο Font DICT INDEX. |
Ιδιωτικό DICT | Ένα ανά γραμματοσειρά DICT. |
Μόνο οι τρεις πρώτες δομές βασίζονται σε σταθερές θέσεις. Τα υπόλοιπα επιτυγχάνονται μέσω αντισταθμίσεων και η σειρά τους μπορεί να αλλάξει.
Τύποι δεδομένων
Η μορφή αρχείου CFF2 χρησιμοποιεί τους ακόλουθους τύπους δεδομένων.
Όνομα | Εύρος | Περιγραφή |
---|---|---|
uint8 | 0 έως 255 | αριθμός χωρίς υπογραφή 8 bit |
uint16 | 0 έως 65535 | 16-bit ανυπόγραφος αριθμός |
uint32 | 0 έως 4294967295 | 32-bit ανυπόγραφος αριθμός |
Μετατόπιση | ποικίλλει | Μετατοπίσεις 1, 2, 3 ή 4 byte (καθορίζονται από το πεδίο OffSize σε έναν πίνακα ευρετηρίου) |
OffSize | 1 έως 4 | Ο αριθμός χωρίς υπογραφή 1 byte καθορίζει το μέγεθος ενός πεδίου ή πεδίων Offset |
Αποθηκεύει όλα τα αριθμητικά δεδομένα πολλών byte και τα πεδία μετατόπισης σε μεγάλη σειρά byte. Η μορφή CFF2 δεν περιέχει byte συμπλήρωσης, καθώς δεν τηρεί κανέναν περιορισμό στοίχισης.
Δεδομένα DICT
Τα αρχεία CFF2 περιέχουν τα δεδομένα του λεξικού γραμματοσειράς ως ζεύγη κλειδιών-τιμών σε μια συμπαγή μορφή διακριτικού. Τα κλειδιά λεξικού κωδικοποιούνται ως τελεστές 1 ή 2 byte και οι τιμές του λεξικού κωδικοποιούνται ως αριθμητικοί τελεστές μεταβλητού μεγέθους. Υπάρχουν τρεις δομές που χρησιμοποιούν τη μορφή DICT Data: «Top DICT», «Font DICT» και «Private DICT». Ορίζεται ένας αριθμός ακέραιων τύπων τελεστών διαφορετικών μεγεθών και κωδικοποιείται όπως φαίνεται στον παρακάτω πίνακα (το πρώτο byte του τελεστή είναι b0, το δεύτερο είναι το b1 και ούτω καθεξής).
Μέγεθος | εύρος b0 | Εύρος τιμών | Υπολογισμός τιμής |
---|---|---|---|
1 | 32 έως 246 | -107 έως +107 | b0 - 139 |
2 | 247 έως 250 | +108 έως +1131 | (b0 - 247) * 256 + b1 + 108 |
2 | 251 έως 254 | -1131 έως -108 | -(b0 - 251) * 256 - b1 - 108 |
3 | 28 | -32768 έως +32767 | b1 « 8 |
5 | 29 | -(2^31) έως +(2^31 - 1) | b1 « 24 | b2 « 16 | b3 « 8 | b4 |
Κεφαλίδα
Τα δυαδικά δεδομένα ξεκινούν με μια κεφαλίδα που έχει τη μορφή που φαίνεται στον παρακάτω Πίνακα.
Τύπος | Όνομα | Περιγραφή |
---|---|---|
uint8 | κύρια Έκδοση | Μορφοποίηση κύριας έκδοσης. Ορίστε σε 2. |
uint8 | minorVersion | Μορφοποίηση δευτερεύουσας έκδοσης. Ορίστε στο μηδέν. |
uint8 | Μέγεθος κεφαλίδας | Μέγεθος κεφαλίδας (bytes). |
ενότητα16 | topDictLength | Μήκος κορυφαίας δομής DICT σε byte. |