একটি CFF2 ফাইল কি?
CFF2 file format is the version 2.0 of the CFF file format and allows efficient storage of glyph outlines and metadata similar to the CFF file format. CFF2 differs from CFF in that it is intended to be used in the context of an OpenType font as a ‘sfnt’ table with the tag CFF2. এটি একটি স্বতন্ত্র প্রোগ্রাম হিসাবে ব্যবহার করা যাবে না এবং অন্যান্য OpenType টেবিলের ডেটার উপর নির্ভর করে।
CFF2 ফাইল ফরম্যাট
CFF2 file format specifications-এ অভ্যন্তরীণ ডেটা বিন্যাস, ডেটার ধরন, টেবিল এবং ফাইল বিন্যাস সম্পর্কে অন্যান্য অভ্যন্তরীণ তথ্যের বিবরণ রয়েছে৷ এটি বিকাশকারীর রেফারেন্সের জন্য উল্লেখ করা যেতে পারে। এ সম্পর্কে কিছু বিবরণ নিম্নরূপ।
ডেটা লেআউট
CFF2 ফাইল ফরম্যাটের বাইনারি ডেটা যৌক্তিকভাবে বেশ কয়েকটি পৃথক ডেটা স্ট্রাকচার হিসাবে সংগঠিত। বাইনারি ডেটার মধ্যে লেআউটটি নিম্নলিখিত টেবিলে দেখানো হয়েছে।
প্রবেশ | মন্তব্য |
---|---|
হেডার | স্থির অবস্থান |
শীর্ষ DICT | স্থির অবস্থান |
গ্লোবাল Subr INDEX | স্থির অবস্থান |
প্রকরণ | স্টোর |
FDSelect | শুধুমাত্র DICT INDEX ফন্টে একাধিক ফন্ট DICT থাকলেই উপস্থাপন করুন৷ |
ফন্ট DICT INDEX | |
ডিআইসিটি ফন্টের অ্যারে | ফন্ট DICT INDEX এ অন্তর্ভুক্ত। |
প্রাইভেট ডিআইসিটি | প্রতি ফন্ট DICT. |
শুধুমাত্র প্রথম তিনটি কাঠামো নির্দিষ্ট অবস্থানের উপর ভিত্তি করে। অবশিষ্টগুলি অফসেটের মাধ্যমে পৌঁছেছে এবং তাদের অর্ডার পরিবর্তন করা যেতে পারে।
তথ্যের ধরণ
CFF2 ফাইল বিন্যাস নিম্নলিখিত তথ্য প্রকার ব্যবহার করে।
নাম | পরিসীমা | বিবরণ |
---|---|---|
uint8 | 0 থেকে 255 | 8-বিট স্বাক্ষরবিহীন সংখ্যা |
uint16 | 0 থেকে 65535 | 16-বিট স্বাক্ষরবিহীন সংখ্যা |
uint32 | 0 থেকে 4294967295 | 32-বিট স্বাক্ষরবিহীন নম্বর |
অফসেট | পরিবর্তিত হয় | 1, 2, 3, বা 4 বাইট অফসেট (একটি সূচক টেবিলে অফসাইজ ক্ষেত্র দ্বারা নির্দিষ্ট) |
অফসাইজ | 1 থেকে 4 | 1-বাইট স্বাক্ষরবিহীন সংখ্যা একটি অফসেট ক্ষেত্র বা ক্ষেত্রগুলির আকার নির্দিষ্ট করে |
এটি সমস্ত মাল্টি-বাইট সংখ্যাসূচক ডেটা এবং অফসেট ক্ষেত্রগুলিকে বিগ-এন্ডিয়ান বাইট অর্ডারে সঞ্চয় করে। CFF2 বিন্যাস প্যাডিং বাইট থেকে মুক্ত কারণ এটি কোনো প্রান্তিককরণ সীমাবদ্ধতাকে সম্মান করে না।
DICT ডেটা
CFF2 ফাইলগুলিতে একটি কমপ্যাক্ট টোকেনাইজড বিন্যাসে কী-মান জোড়া হিসাবে ফন্ট অভিধান ডেটা থাকে। অভিধান কীগুলি 1 বা 2 বাইট অপারেটর হিসাবে এনকোড করা হয় এবং অভিধানের মানগুলি পরিবর্তনশীল-আকারের সংখ্যাসূচক অপারেন্ড হিসাবে এনকোড করা হয়। তিনটি স্ট্রাকচার আছে যা DICT ডেটা ফর্ম্যাট ব্যবহার করে: Top DICT
, Font DICT
এবং Private DICT
। বিভিন্ন আকারের পূর্ণসংখ্যার অপারেন্ড প্রকারের একটি সংখ্যা সংজ্ঞায়িত করা হয়েছে এবং নিম্নলিখিত টেবিলে দেখানো হিসাবে এনকোড করা হয়েছে (অপারেন্ডের প্রথম বাইট হল b0, দ্বিতীয়টি হল b1, এবং আরও অনেক কিছু)।
আকার | b0 পরিসর | মান পরিসীমা | মান গণনা |
---|---|---|---|
1 | 32 থেকে 246 | -107 থেকে +107 | b0 - 139 |
2 | 247 to 250 | +108 to +1131 | (b0 - 247) * 256 + b1 + 108 |
2 | 251 to 254 | -1131 to -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 | topDictLength | বাইটে শীর্ষ DICT কাঠামোর দৈর্ঘ্য। |