CFF2 फ़ाइल क्या है?
CFF2 फ़ाइल स्वरूप CFF फ़ाइल स्वरूप का संस्करण 2.0 है और CFF फ़ाइल स्वरूप के समान ग्लिफ़ रूपरेखा और मेटाडेटा के कुशल भंडारण की अनुमति देता है। CFF2 CFF से इस मायने में भिन्न है कि इसका उपयोग OpenType फ़ॉन्ट के संदर्भ में CFF2 टैग के साथ ‘sfnt’ तालिका के रूप में किया जाना है। इसे स्टैंड-अलोन प्रोग्राम के रूप में उपयोग नहीं किया जा सकता है और यह अन्य ओपन टाइप टेबल में डेटा पर निर्भर करता है।
CFF2 फ़ाइल स्वरूप
CFF2 फ़ाइल स्वरूप विनिर्देश में फ़ाइल स्वरूप के बारे में आंतरिक डेटा लेआउट, डेटा प्रकार, तालिकाओं और अन्य आंतरिक जानकारी के बारे में विवरण शामिल हैं। इसे डेवलपर के संदर्भ के लिए संदर्भित किया जा सकता है। इनके बारे में कुछ विवरण इस प्रकार हैं।
डेटा लेआउट
CFF2 फ़ाइल स्वरूप का बाइनरी डेटा तार्किक रूप से कई अलग-अलग डेटा संरचनाओं के रूप में व्यवस्थित है। बाइनरी डेटा के भीतर लेआउट निम्न तालिका में दिखाया गया है।
प्रविष्टि | टिप्पणियां |
---|---|
शीर्षक | निश्चित स्थान |
शीर्ष डीआईसीटी | निश्चित स्थान |
ग्लोबल सुब्र इंडेक्स | निश्चित स्थान |
भिन्नता | स्टोर |
FDSelect | केवल तभी प्रस्तुत करें जब फ़ॉन्ट DICT INDEX में एक से अधिक फ़ॉन्ट DICT हों। |
Font DICT INDEX | |
फ़ॉन्ट DICT की सरणी | फ़ॉन्ट DICT INDEX. |
निजी डीआईसीटी | एक प्रति फ़ॉन्ट DICT. |
केवल पहली तीन संरचनाएं निश्चित स्थानों पर आधारित हैं। शेष ऑफ़सेट के माध्यम से पहुँचा जाता है, और उनके क्रम को बदला जा सकता है।
डेटा के प्रकार
CFF2 फ़ाइल स्वरूप निम्न डेटा प्रकारों का उपयोग करता है।
नाम | श्रेणी | विवरण |
---|---|---|
uint8 | 0 से 255 | 8-बिट अहस्ताक्षरित संख्या |
uint16 | 0 से 65535 | 16-बिट अहस्ताक्षरित संख्या |
uint32 | 0 से 4294967295 | 32-बिट अहस्ताक्षरित संख्या |
ऑफ़सेट | भिन्न | 1, 2, 3, या 4 बाइट ऑफ़सेट (इंडेक्स टेबल में ऑफ़साइज़ फ़ील्ड द्वारा निर्दिष्ट) |
ऑफसाइज | 1 से 4 | 1-बाइट अहस्ताक्षरित संख्या ऑफ़सेट फ़ील्ड या फ़ील्ड के आकार को निर्दिष्ट करती है |
यह सभी बहु-बाइट संख्यात्मक डेटा और ऑफ़सेट फ़ील्ड को बड़े-एंडियन बाइट क्रम में संग्रहीत करता है। CFF2 प्रारूप पैडिंग बाइट्स से मुक्त है क्योंकि यह किसी भी संरेखण प्रतिबंध का सम्मान नहीं करता है।
डीआईसीटी डेटा
CFF2 फाइलों में एक कॉम्पैक्ट टोकनयुक्त प्रारूप में कुंजी-मूल्य जोड़े के रूप में फ़ॉन्ट डिक्शनरी डेटा होता है। डिक्शनरी कीज़ को 1 या 2 बाइट ऑपरेटरों के रूप में एन्कोड किया गया है और डिक्शनरी वैल्यू को वैरिएबल-साइज़ न्यूमेरिक ऑपरेंड के रूप में एन्कोड किया गया है। डीआईसीटी डेटा प्रारूप का उपयोग करने वाली तीन संरचनाएं हैं: शीर्ष डीआईसीटी
, फ़ॉन्ट डीआईसीटी
और निजी डीआईसीटी
। विभिन्न आकारों के कई पूर्णांक ऑपरेंड प्रकारों को परिभाषित किया गया है और उन्हें एन्कोड किया गया है जैसा कि निम्न तालिका में दिखाया गया है (ऑपरेंड का पहला बाइट 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 | लघुसंस्करण | मामूली संस्करण प्रारूपित करें। शून्य पर सेट करें। |
uint8 | शीर्षलेख आकार | हैडर आकार (बाइट्स). |
uint16 | टॉपडिक्टलेंथ | बाइट्स में शीर्ष DICT संरचना की लंबाई। |