OTF - تنسيق ملف خط TrueType
ما هو ملف OTF؟
يشير الملف بامتداد .otf إلى تنسيق خط OpenType. تنسيق خط OTF أكثر قابلية للتوسع ويوسع الميزات الحالية لتنسيقات TTF للطباعة الرقمية. يجمع OTF ، الذي طورته Microsoft و Adobe ، ميزات تنسيقات خطوط PostScript و TrueType. هذا يجعل تنسيق OTF مناسبًا لأنظمة الكتابة ذات الأغلبية وهذا هو السبب في استخدامه بشكل موحد على منصات الكمبيوتر الرئيسية. تنسيق خط OpenType مدعوم من قبل نظامي التشغيل Mac OS X و Windows 2000 والإصدارات الأحدث.
نبذة تاريخية
نشأت متطلبات خطوط OpenType كمتطلب لتنسيق خط أكثر تعبيرًا يمكنه التعامل مع الطباعة الدقيقة. بالإضافة إلى ذلك ، كان يهدف إلى تلبية متطلبات السلوك المعقد للعديد من أنظمة الكتابة في العالم. حاولت Microsoft ترخيص تقنية الطباعة المتقدمة من Apple ، والمعروفة باسم GX Typography ، في أوائل التسعينيات. لم يسير هذا على ما يرام ونتيجة لذلك ، بدأت Microsoft في تحسين تقنية خطوط TrueType الخاصة بها في عام 1994. وتضمنت التعديلات أيضًا تقديم تنسيق خط أكثر ملاءمة يلبي أيضًا ميزات تنسيقات خطوط Adobe Type 1 (PostScript).
انضمت Adobe ، في عام 1996 ، إلى Microsoft في جهودها لإلغاء كل من TrueType من Apple وتنسيقات خطوط Type 1 الخاصة بها. نتج عن ذلك مزيج من تنسيقات الخطوط الأساسية للتغلب على القيود وإضافة امتدادات جديدة. تم تقديم هذه التقنية الجديدة في نفس العام باسم ** OpenType **.
مواصفات تنسيق ملف OTF
تتوفر مواصفات OTF للجمهور بواسطة Microsoft ويمكن الرجوع إليها من منظور المطور. مثل TTF ، فإنه يستخدم نفس بنية حاوية ‘sfnt’ ومتوافق مع مواصفات TrueType. تُستخدم البيانات الموجودة داخل ملف خط OpenType لأغراض مختلفة مثل حساب تخطيط النص ، وتعريف الحروف الرسومية على أنها مخططات TrueType أو Compact Font Format (CFF) ، وتوفير صور نقطية أحادية اللون أو ملونة أو مستندات SVG كأوصاف حروف رسومية بديلة ، ومعلومات بيانات التعريف.
أنواع بيانات OTF
تستخدم ملفات OTF أنواع البيانات التالية وكلها في Big Endian.
| نوع البيانات | الوصف |
|---|---|
| uint8 | عدد صحيح بدون إشارة 8 بت. |
| int8 | عدد صحيح ذو إشارة 8 بت. |
| uint16 | عدد صحيح بدون إشارة 16 بت. |
| int16 | عدد صحيح ذو إشارة 16 بت. |
| uint24 | عدد صحيح بدون إشارة 24 بت. |
| uint32 | عدد صحيح بدون إشارة 32 بت. |
| int32 | 32 بت عدد صحيح موقع. |
| ثابت | رقم ذو نقطة ثابتة موقعة 32 بت (16.16) |
| FWORD | int16 الذي يصف كمية في وحدات تصميم الخط. |
| UFWORD | uint16 الذي يصف كمية في وحدات تصميم الخط. |
| F2DOT14 | رقم ثابت موقع 16 بت مع 14 بت منخفضة من الكسر (2.14). |
| وقت طويل | يتم تمثيل التاريخ والوقت بعدد الثواني منذ 12:00 منتصف الليل ، 1 يناير 1904 ، التوقيت العالمي المنسق. يتم تمثيل القيمة كرقم صحيح 64 بت بعلامة. |
| علامة | مصفوفة من أربعة uint8s (الطول = 32 بت) تُستخدم لتعريف جدول ، أو محور تباين التصميم ، أو نص ، أو نظام لغة ، أو ميزة ، أو خط أساس |
| Offset16 | إزاحة قصيرة لجدول ، مثل uint16 ، إزاحة NULL = 0x0000 |
| Offset32 | إزاحة طويلة لجدول ، مثل uint32 ، إزاحة فارغة = 0x00000000 |
| الإصدار 16 دوت 16 | قيمة 32 بت معبأة بأرقام الإصدارات الرئيسية والثانوية. (راجع أرقام إصدارات الجدول.) |
دليل جداول OTF
يبدأ ملف OTF بدليل جدول. هذا الدليل هو مجموعة المستوى الأعلى من الجداول في ملف الخط. بناءً على عدد الخطوط في الملف ، قد يكون دليل الجدول موجودًا في موقع مختلف في الملف. على سبيل المثال ، في حالة احتواء ملف الخط على خط واحد فقط ، يبدأ دليل الجدول عند البايت 0 من الملف. في حالة تجميع خطوط OpenType متعددة ، يشار إلى بداية دليل الجدول في TTCHeader.
| النوع | الاسم | الوصف |
|---|---|---|
| uint32 | sfntVersion | 0x00010000 أو 0x4F54544F (“OTTO”) |
| uint16 | numTables | عدد الجداول. |
| uint16 | searchRange | أقصى قوة 2 أقل من أو تساوي numTables ، مضروبة في 16 ((2 \ ** floor (log2 (numTables))) * 16 ، حيث “**” عامل أسي). |
| uint16 | entrySelector Log2 ذات الطاقة القصوى التي تبلغ 2 أقل من أو تساوي numTables (log2 (searchRange / 16) ، والتي تساوي floor (log2 (numTables))). | |
| uint16 | rangeShift | numTables مرات 16 ، مطروحًا منها نطاق البحث ((numTables * 16) - searchRange). |
| الجدول سجل | tableRecords [numTables] | صفيف سجلات الجدول - واحد لكل جدول من جداول المستوى الأعلى في الخط |
سجل الجدول
لكل جدول مستوى أعلى في الخط ، يوجد سجل جدول يتكون من الحقول التالية.
| النوع | الاسم | الوصف |
|---|---|---|
| علامة | الجدول معرف الجدول. | |
| uint32 | اختباري | المجموع الاختباري لهذا الجدول. |
| Offset32 | تعويض | الإزاحة من بداية ملف الخط. |
| uint32 | طول هذا الجدول. |
يتم تمثيل كل جدول في ملف خطوط OpenType بأسماء تعرف باسم علامات الجدول. من الضروري أن يتم فرز جميع السجلات في المصفوفة بترتيب تصاعدي حسب العلامة.