OpenType Font
ملف OTF (OpenType Font) يُخزّن رسومات الحروف القابلة للتحجيم كمنحنيات Bezier التكعيبية بصيغة PostScript داخل حاوية SFNT، ويُعرَّف بالبايتات السحرية OTTO (أي 4F 54 54 4F). طوّرته Microsoft وAdobe معاً عام 1996 ومعياره الدولي ISO/IEC 14496-22. يدعم حتى 65,535 حرفاً ونظام تخطيط GSUB/GPOS للاستبدال السياقي والربطات والخطوط المتغيرة وتشكيل النصوص متعددة اللغات بما فيها العربية.
تحويل صيغ الخطوط يتطلب إعادة تعيين جداول الحروف وتحويل منحنيات CFF إلى تربيعية وإعادة حساب التلميحات. هذه العمليات تعتمد على مكتبات fontTools (بايثون) أو HarfBuzz (C++) غير المتوفرة في بيئة WASM في المتصفح. يوفر FileDex أوامر سطر الأوامر ومعلومات مرجعية لسير عمل تحويل الخطوط على سطح المكتب.
أسئلة شائعة
ما الفرق بين خطوط OTF و TTF؟
كلاهما خطوط OpenType تتشارك نفس حاوية SFNT وخصائص التخطيط. OTF تخزّن رسومات الحروف كمنحنيات Bezier التكعيبية (صيغة CFF) بينما TTF تستخدم B-splines التربيعية من TrueType. منحنيات CFF تمثّل الأشكال المعقدة بنقاط تحكم أقل فتُنتج ملفات أصغر غالباً. محركات العرض الحديثة تعامل كليهما بالتساوي.
هل يجب تحويل OTF إلى WOFF2 لموقعي الإلكتروني؟
نعم. WOFF2 يطبّق ضغط Brotli على بيانات OTF فيقلّص الحجم 20-30% بدون أي فقدان جودة. جميع المتصفحات الصادرة بعد 2015 تدعم WOFF2. Google Fonts تقدّم حصرياً WOFF2. استخدم fontTools أو Font Squirrel Web Generator للتحويل ثم صرّح بالنتيجة في قاعدة CSS @font-face.
ما الخطوط المتغيرة في OpenType ولماذا مهمة؟
الخطوط المتغيرة (OpenType 1.8 سبتمبر 2016) تُضمّن فضاء تصميم كامل في ملف واحد. محاور مُسمّاة مثل الوزن والعرض والحجم البصري تسمح باستيفاء مستمر بين الأطراف. خط متغير واحد يستبدل 12-24 ملفاً ثابتاً منفصلاً مما يقلّص أوقات تحميل الصفحات بشكل ملحوظ.
كم حرفاً يمكن أن يحتوي ملف OTF واحد؟
مواصفة OpenType تسمح بحد أقصى 65,535 حرفاً لكل خط مقيّدة بفهرس الحروف 16 بت. خطوط CJK الكبيرة مثل Noto Sans CJK تقترب من هذا الحد. خط Source Han Sans من Adobe يحتوي أكثر من 65,000 حرف تغطي الصينية المبسطة والتقليدية واليابانية والكورية.
هل تستطيع خطوط OTF عرض النص العربي بشكل صحيح؟
نعم، وOpenType هي صيغة الخطوط الحديثة الوحيدة التي تدعم تشكيل العربية بالكامل. خصائص GSUB مثل init وmedi وfina وisol تختار الشكل الموضعي الصحيح لكل حرف. خصائص GPOS مثل curs وmark وmkmk تدير الاتصال المتصل ووضع علامات التشكيل. خطوط مثل Noto Naskh Arabic وAdobe Arabic تطبّق هذه الخصائص.
أيهما أفضل للطباعة: OTF أم TTF؟
للطباعة كلاهما يُنتج مخرجات متطابقة لأن الدقة الفيزيائية تُلغي فروق التلميحات. OTF بمنحنيات CFF لها أفضلية طفيفة في حجم الملف وهي الصيغة التي استخدمتها Adobe لتحويل مكتبة خطوطها الاحترافية. معظم مصانع الخطوط الاحترافية تشحن OTF كصيغتها الأساسية.
كيف أتحقق من خصائص OpenType المدعومة في خط؟
اسحب ملف OTF إلى Wakamaifondue.com للحصول على تقرير تفاعلي يعرض كل خاصية GSUB وGPOS وتغطية Unicode والمحاور المتغيرة. البدائل المكتبية تشمل أمر fonttools ttx لتفريغ جميع الجداول كـ XML أو أداة otfinfo لسرد الخصائص من سطر الأوامر.
ما يميز .OTF
أربعة بايتات في بداية الملف — 4F 54 54 4F بترميز ASCII تعني "OTTO" — تُعرّفه كخط OpenType بمنحنيات PostScript. هذا التوقيع هو بطاقة هوية صيغة وُلدت من شراكة غير متوقعة بين عملاقين متنافسين: Microsoft وAdobe.
اكتشف التفاصيل التقنية
حروب الخطوط وولادة OpenType
بحلول عام 1995 كان عالم الخطوط فوضوياً. Adobe تتحكم بصيغة PostScript Type 1 الاحترافية وتفرض رسوم ترخيص. Apple ردّت بابتكار TrueType عام 1989 ثم رخّصته لـ Microsoft. Windows 3.1 شحن مع TrueType عام 1992 فوصلت الخطوط القابلة للتحجيم للسوق الاستهلاكي. لكن تقنيتين غير متوافقتين قسّمتا الصناعة: Type 1 للمحترفين وTrueType للجميع.
جواب Microsoft كان OpenType أُعلن عنه عام 1996. الفكرة بسيطة: وضع كلتا تقنيتَي المنحنيات (منحنيات Bezier التكعيبية من Adobe والمنحنيات التربيعية من Apple) في حاوية واحدة هي sfnt ذاتها المستخدمة في TrueType. Adobe انضمت كشريك تطوير عام 1997 وأحضرت CFF (Compact Font Format) كتمثيل لمنحنيات PostScript. الامتداد .otf يُعرّف الخطوط ذات منحنيات CFF بينما .ttf يُعرّف تلك ذات منحنيات TrueType. كلاهما OpenType والفرق فقط في الوصف الرياضي لأشكال الحروف.
نقطة التحول جاءت عام 2000 حين حوّلت Adobe مكتبة خطوطها الكاملة — آلاف الخطوط الاحترافية — من Type 1 إلى OpenType. بين ليلة وضحاها أصبحت OTF صيغة الطباعة الاحترافية. تبعها التوحيد الدولي ISO عام 2005 كمعيار ISO/IEC 14496-22.
بنية حاوية SFNT
ملف OTF مجموعة جداول ثنائية معبأة في حاوية SFNT. يبدأ الملف بترويسة من 12 بايت: توقيع OTTO بـ 4 بايت، عدد الجداول بـ 2 بايت، وثلاث قيم بـ 2 بايت لتحسين البحث الثنائي. يلي الترويسة دليل الجداول — مصفوفة سجلات كل منها 16 بايت تحتوي وسم ASCII من 4 أحرف ومجموع اختباري وإزاحة وطول.
الجداول المطلوبة تشكّل هيكل كل ملف OTF. جدول cmap يربط نقاط Unicode بفهارس الحروف. جدول head يخزّن القياسات الأساسية: unitsPerEm (عادةً 1000 لخطوط CFF) وتواريخ الإنشاء والتعديل. جدولا hhea وhmtx يحددان التخطيط الأفقي. جدول name يحمل النصوص المقروءة — اسم العائلة والمصمم وحقوق النشر. جدول OS/2 يوفر قياسات Windows. جدول CFF (أو CFF2 في الخطوط المتغيرة) يحتوي رسومات الحروف الفعلية كمنحنيات Bezier التكعيبية.
منحنيات Bezier التكعيبية مقابل التربيعية
الفرق التقني الجوهري بين OTF وTTF هو رياضيات المنحنيات. منحنيات CFF في OTF تستخدم Bezier من الدرجة الثالثة بأربع نقاط تحكم. منحنيات TrueType تستخدم B-splines من الدرجة الثانية بنقطة تحكم واحدة خارج المنحنى. المنحنيات التكعيبية تمثّل مجالاً أوسع من الأشكال بنقاط أقل — حرف S النموذجي يحتاج 12 نقطة في CFF مقابل 20 أو أكثر في TrueType.
نظام التخطيط: GSUB وGPOS
أقوى قدرات OpenType هو محرك التخطيط المُعبَّر عنه بجدولين: GSUB (استبدال الحروف) وGPOS (تموضع الحروف).
GSUB يعالج الاستبدالات: الربطات القياسية (liga) تدمج تسلسلات الحروف في حرف واحد — f + i تصبح ربطة fi. الأحرف الصغيرة الكبيرة (smcp) تستبدل الحروف الصغيرة بأشكال small caps. البدائل السياقية (calt) تختار متغيرات حروف مختلفة حسب الحروف المحيطة.
GPOS يعالج التعديلات المكانية: التقنين (kern) يضبط المسافات بين أزواج حروف محددة. تموضع العلامات (mark) يضع علامات التشكيل بدقة فوق الحروف الأساسية أو تحتها.
دعم الخط العربي في OpenType
بالنسبة للنص العربي، جداول التخطيط ليست ترفاً اختيارياً — بل ضرورة للعرض الصحيح. الحروف العربية تأخذ أربعة أشكال مختلفة (مبتدئ ووسطي ومنتهي ومنفصل) حسب موقعها في الكلمة، تُختار تلقائياً عبر خصائص GSUB: init وmedi وfina وisol. خاصية rlig تعالج الربطات الإلزامية مثل لام-ألف (لا). خاصية curs في GPOS تدير الاتصال المتصل بين الحروف. خصائص mark وmkmk تضع الحركات (فتحة وضمة وكسرة وتنوين) بدقة.
بدون هذه الخصائص يُعرض النص العربي كحروف منفصلة بعرض موحد — غير مقروء لأي ناطق أصلي. خطوط عربية بارزة تدعم OpenType بالكامل تشمل Noto Naskh Arabic وAdobe Arabic وAmiri وSakkal Majalla.
الخطوط المتغيرة
OpenType 1.8 الصادر في سبتمبر 2016 قدّم الخطوط المتغيرة — أهم تقدم في تقنية الخطوط منذ OpenType نفسه. الخط المتغير يحتوي تنويعات تصميم متعددة على محاور مُسمّاة ضمن ملف واحد: wght (الوزن)، wdth (العرض)، slnt (الميل)، opsz (الحجم البصري). عائلة خطوط تقليدية قد توزّع 18 ملفاً منفصلاً. خط متغير واحد يستبدل الجميع ويقدم كل قيمة وسيطة. Google Fonts تُبلغ عن تقليص متوسط 44% في حجم النقل عند التحول من خطوط ثابتة إلى متغيرة.
التسليم عبر الويب: من OTF إلى WOFF2
بينما تستطيع المتصفحات عرض ملفات OTF عبر @font-face، فإن OTF الخام غير فعال للتسليم عبر الويب. WOFF2 (توصية W3C عام 2018) يُطبّق ضغط Brotli محققاً تقليصاً 20-30% في الحجم. ملف OTF بحجم 200 كيلوبايت يصبح عادةً 140-160 كيلوبايت كـ WOFF2. Google Fonts تقدّم حصرياً WOFF2 في 2026.
مقارنة .OTF مع البدائل
| المقارنة | المعيار | الفائز |
|---|---|---|
| .OTF vs .TTF | نوع المنحنى وكفاءته OTF تستخدم منحنيات Bezier التكعيبية (CFF) التي تمثّل الأشكال المعقدة بنقاط تحكم أقل. حرف S النموذجي يحتاج 12 نقطة CFF مقابل 20 أو أكثر في TrueType، مما يُنتج ملفات أصغر. | OTF أفضل |
| .OTF vs .TTF | دقة تلميحات الشاشة لغة التلميحات البرمجية في TrueType تبرمج المنحنيات للالتصاق بشبكة البكسل عند الأحجام الصغيرة. CFF تستخدم تلميحات أبسط. على Windows القديم مع ClearType كان TTF أوضح عند 9-12 بكسل. DirectWrite الحديث يعرض كليهما بالتساوي. | TTF أفضل |
| .OTF vs .WOFF2 | حجم التسليم عبر الويب WOFF2 يطبّق ضغط Brotli على بيانات جداول OTF فيقلّص الحجم 20-30%. ملف OTF بحجم 200 كيلوبايت يصبح 140-160 كيلوبايت كـ WOFF2. جميع المتصفحات تدعم WOFF2 منذ 2016. | WOFF2 أفضل |
| .OTF vs .WOFF | الضغط والتوافق WOFF1 يستخدم ضغط zlib (توفير 10-15%). WOFF2 يستخدم Brotli (توفير 20-30%). WOFF1 يحتفظ بقيمة فقط كبديل لـ IE11. جميع المتصفحات الحديثة تدعم WOFF2. | WOFF2 أفضل |
| .OTF vs .EOT | دعم المتصفحات والانفتاح EOT (Embedded OpenType) صيغة مملوكة من Microsoft دعمها Internet Explorer فقط. OTF (عبر WOFF2) يعمل في كل متصفح حديث. EOT تطلّب ربط URL بنمط DRM وماتت فعلياً مع تراجع IE11. | OTF أفضل |
المرجع التقني
- نوع MIME
font/otf- Magic Bytes
4F 54 54 4FOTTO signature for CFF-based OpenType.- المطوّر
- Microsoft / Adobe
- سنة التقديم
- 1996
- معيار مفتوح
- نعم — عرض المواصفات
OTTO signature for CFF-based OpenType.
البنية الثنائية
ملفات OTF تستخدم حاوية SFNT. ملف OTF مبني على CFF يبدأ بتوقيع OTTO (أي 4F 54 54 4F بـ 4 بايت) متبوعاً بـ 8 بايت لعدد الجداول وحقول البحث الثنائي، ثم دليل جداول حيث كل سجل 16 بايت (وسم ومجموع اختباري وإزاحة وطول). الجداول محشوة لحدود 4 بايت. الجداول المطلوبة تشمل cmap (ربط الحروف) وhead (ترويسة الخط) وhhea/hmtx (القياسات الأفقية) وname (النصوص المسماة) وOS/2 (قياسات Windows) وpost (أسماء PostScript). ملفات OTF المبنية على CFF تحتوي جدول CFF أو CFF2 برسومات الحروف المرمّزة كمنحنيات Bezier التكعيبية. جداول التخطيط GSUB وGPOS تمكّن الربطات والبدائل السياقية والتقنين وتشكيل النصوص المعقدة بما فيها العربية.
| Offset | Length | Field | Example | Description |
|---|---|---|---|---|
0x00 | 4 بايت | sfVersion / التوقيع السحري | 4F 54 54 4F | توقيع OTTO يُعرّف خط OpenType مبني على CFF. الخطوط المبنية على TrueType تستخدم 00 01 00 00 بدلاً منه. |
0x04 | 2 بايت | عدد الجداول (numTables) | 00 0E (14) | عدد جداول الخط في الملف. ملف OTF نموذجي يحتوي 12-20 جدولاً حسب الخصائص. |
0x06 | 2 بايت | نطاق البحث (searchRange) | 00 80 (128) | أكبر قوة للعدد 2 أقل من أو تساوي عدد الجداول مضروبة في 16. تُحسّن البحث الثنائي في دليل الجداول. |
0x08 | 2 بايت | محدد الإدخال (entrySelector) | 00 03 (3) | Log2 لأكبر قوة للعدد 2 أقل من أو تساوي عدد الجداول. |
0x0A | 2 بايت | إزاحة النطاق (rangeShift) | 00 30 (48) | عدد الجداول × 16 − searchRange. قيمة الباقي لخوارزمية البحث الثنائي. |
0x0C | 16 بايت لكل سجل | سجلات دليل الجداول | 43464620 (CFF ) + مجموع اختباري + إزاحة + طول | مصفوفة سجلات الجداول. كل سجل: وسم ASCII بـ 4 بايت ومجموع اختباري 4 بايت وإزاحة من بداية الملف 4 بايت وطول الجدول 4 بايت. |
نقاط الضعف
- بيانات CFF charstring مشوّهة تستغل طفحان مخزن في محللات خطوط نظام التشغيل (CVE-2020-1020 في Windows atmfd.dll سمح بتنفيذ تعليمات عن بُعد)
- جداول GSUB/GPOS مُصطنعة تسبب تلف الكومة في محركات تشكيل النص مثل HarfBuzz وCoreText
- استغلال مفسّر التلميحات البرمجية في TrueType — برنامج Duqu الخبيث (CVE-2011-3402) استخدم خط TTF مُصطنع لتحقيق تنفيذ تعليمات في وضع النواة
الحماية: FileDex لا يفتح ملفات الخطوط ولا ينفّذها ولا يحللها. هذه صفحة مرجعية فقط. حماية أنظمة التشغيل الحديثة تشمل عزل الخطوط (Windows AppContainer) وعزل المُعرّض (Chrome وFirefox) وASLR.