Τι είναι ένα αρχείο OTF;
Ένα αρχείο με επέκταση .otf αναφέρεται σε μορφή γραμματοσειράς OpenType. Η μορφή γραμματοσειράς OTF είναι πιο επεκτάσιμη και επεκτείνει τις υπάρχουσες δυνατότητες των μορφών TTF για ψηφιακή τυπογραφία. Αναπτύχθηκε από τη Microsoft και την Adobe, το OTF συνδυάζει τις δυνατότητες των μορφών γραμματοσειράς PostScript και TrueType. Αυτό κάνει τη μορφή OTF να δέχεται τα περισσότερα συστήματα γραφής και αυτός είναι ο λόγος που χρησιμοποιείται ομοιόμορφα σε μεγάλες πλατφόρμες υπολογιστών. Η μορφή γραμματοσειράς OpenType υποστηρίζεται από Mac OS X και Windows 2000 και νεότερες εκδόσεις.
Σύντομη Ιστορία
Η απαίτηση των γραμματοσειρών OpenType προέκυψε ως απαίτηση για μια πιο εκφραστική μορφή γραμματοσειράς που θα μπορούσε να χειριστεί τη λεπτή τυπογραφία. Επιπλέον, είχε στόχο να ανταποκριθεί στις απαιτήσεις περίπλοκης συμπεριφοράς πολλών από τα συστήματα γραφής του κόσμου. Η Microsoft προσπάθησε να αδειοδοτήσει την προηγμένη τεχνολογία τυπογραφίας της Apple, γνωστή ως GX Typography, στις αρχές της δεκαετίας του 1990. Αυτό δεν πήγε καλά και ως αποτέλεσμα, η Microsoft άρχισε να βελτιώνει τη δική της τεχνολογία γραμματοσειρών TrueType το 1994. Οι τροποποιήσεις περιελάμβαναν επίσης μια πιο κατάλληλη μορφή γραμματοσειράς που πληροί επίσης τις δυνατότητες των μορφών γραμματοσειράς τύπου 1 (PostScript) της Adobe.
Η Adobe, το 1996, προσχώρησε στη Microsoft στις προσπάθειές της να αντικαταστήσει τόσο τις μορφές γραμματοσειράς TrueType της Apple όσο και τις δικές της μορφές γραμματοσειράς Τύπου 1. Αυτό είχε ως αποτέλεσμα τον συνδυασμό και των δύο υποκείμενων μορφών γραμματοσειράς για την υπέρβαση των περιορισμών και την προσθήκη νέων επεκτάσεων. Αυτή η νέα τεχνολογία παρουσιάστηκε την ίδια χρονιά με το όνομα OpenType.
Προδιαγραφές μορφής αρχείου OTF
Οι προδιαγραφές OTF είναι διαθέσιμες δημόσια από τη Microsoft και μπορούν να αναφέρονται από την πλευρά του προγραμματιστή. Όπως και το TTF, χρησιμοποιεί την ίδια δομή κοντέινερ «sfnt» και είναι συμβατό με τις προδιαγραφές TrueType. Τα δεδομένα μέσα σε ένα αρχείο γραμματοσειράς OpenType χρησιμοποιούνται για διαφορετικούς σκοπούς, όπως ο υπολογισμός της διάταξης κειμένου, ο ορισμός των γλυφών ως περιγράμματα TrueType ή Compact Font Format (CFF), η παροχή μονοχρωματικών ή έγχρωμων bitmaps ή εγγράφων SVG ως εναλλακτικές περιγραφές γλυφών και πληροφορίες μεταδεδομένων.
Τύποι δεδομένων OTF
Τα αρχεία OTF χρησιμοποιούν τους ακόλουθους τύπους δεδομένων που είναι όλοι στο Big Endian.
Τύπος δεδομένων | Περιγραφή |
---|---|
uint8 | 8-bit unsigned integer. |
int8 | 8-bit υπογεγραμμένος ακέραιος αριθμός. |
ενότητα16 | 16-bit unsigned integer. |
int16 | 16-bit υπογεγραμμένος ακέραιος αριθμός. |
uint24 | 24-bit χωρίς υπογραφή ακέραιος. |
uint32 | 32-bit χωρίς υπογραφή ακέραιος. |
int32 | 32-bit υπογεγραμμένος ακέραιος αριθμός. |
Διορθώθηκε | 32-bit υπογεγραμμένος αριθμός σταθερού σημείου (16.16) |
FWORD | int16 που περιγράφει μια ποσότητα σε μονάδες σχεδίασης γραμματοσειρών. |
UFWORD | uint16 που περιγράφει μια ποσότητα σε μονάδες σχεδίασης γραμματοσειρών. |
F2DOT14 | 16-bit προσημασμένος σταθερός αριθμός με το χαμηλό 14 bit του κλάσματος (2.14). |
LONGDATETIME | Ημερομηνία και ώρα αντιπροσωπεύονται σε αριθμό δευτερολέπτων από τις 12:00 τα μεσάνυχτα, 1 Ιανουαρίου 1904, UTC. Η τιμή αναπαρίσταται ως υπογεγραμμένος ακέραιος αριθμός 64-bit. |
Ετικέτα | Συστοιχία τεσσάρων uint8s (μήκος = 32 bit) που χρησιμοποιούνται για τον προσδιορισμό ενός πίνακα, ενός άξονα παραλλαγής σχεδίασης, ενός σεναρίου, ενός συστήματος γλώσσας, ενός χαρακτηριστικού ή μιας γραμμής βάσης |
Offset16 | Σύντομη μετατόπιση σε πίνακα, ίδια με το uint16, NULL μετατόπιση = 0x0000 |
Offset32 | Μεγάλη μετατόπιση σε πίνακα, ίδια με το uint32, NULL offset = 0x00000000 |
Έκδοση16Τελεία16 | Συσκευασμένη τιμή 32 bit με αριθμούς κύριας και δευτερεύουσας έκδοσης. (Βλ. Αριθμοί έκδοσης πίνακα.) |
Κατάλογος πινάκων OTF
Ένα αρχείο OTF ξεκινά με έναν κατάλογο πίνακα. Αυτός ο κατάλογος είναι η συλλογή ανώτατου επιπέδου των πινάκων στο αρχείο γραμματοσειρών. Ανάλογα με τον αριθμό των γραμματοσειρών σε ένα αρχείο, ο κατάλογος του πίνακα μπορεί να βρίσκεται σε διαφορετική θέση στο αρχείο. Για παράδειγμα, σε περίπτωση που το αρχείο γραμματοσειράς έχει μόνο μία γραμματοσειρά, ο κατάλογος του πίνακα ξεκινά από το byte 0 του αρχείου. Σε περίπτωση συλλογής πολλαπλών γραμματοσειρών OpenType, η αρχή του καταλόγου του πίνακα υποδεικνύεται στο TTCHeader.
Τύπος | Όνομα | Περιγραφή |
---|---|---|
uint32 | sfntVersion | 0x00010000 ή 0x4F54544F («OTTO») |
ενότητα16 | numTables | Αριθμός πινάκων. |
ενότητα16 | SearchRange | Μέγιστη ισχύς 2 μικρότερη ή ίση με numTables, επί 16 ((2**floor(log2(numTables))) * 16, όπου “**” είναι τελεστής εκθέσεως). |
uint16 | entrySelector Log2 της μέγιστης ισχύος 2 μικρότερη ή ίση με numTables (log2(searchRange/16), που ισούται με floor(log2(numTables))). | |
uint16 | rangeShift | numTables επί 16, μείον searchRange ((numTables * 16) - searchRange). |
tableRecord | tableRecords[numTables] | Πίνακας εγγραφών πίνακα—ένας για κάθε πίνακα ανώτατου επιπέδου στη γραμματοσειρά |
Εγγραφή πίνακα
Για κάθε πίνακα ανώτατου επιπέδου στη γραμματοσειρά, υπάρχει μια εγγραφή πίνακα που αποτελείται από τα ακόλουθα πεδία.
Τύπος | Όνομα | Περιγραφή |
---|---|---|
Ετικέτα | tableTag | Αναγνωριστικό πίνακα. |
uint32 | άθροισμα ελέγχου | Άθροισμα ελέγχου για αυτόν τον πίνακα. |
Offset32 | αντιστάθμιση | Μετατόπιση από την αρχή του αρχείου γραμματοσειράς. |
uint32 | μήκος Μήκος αυτού του πίνακα. |
Κάθε πίνακας στο αρχείο γραμματοσειράς OpenType αντιπροσωπεύεται από ονόματα γνωστά ως ετικέτες πίνακα. Είναι απαραίτητο για όλες τις εγγραφές του πίνακα να ταξινομηθούν σε αύξουσα σειρά ανά ετικέτα.