.OTF OpenType Font
.otf

OpenType Font

ملف OTF (OpenType Font) يُخزّن رسومات الحروف القابلة للتحجيم كمنحنيات Bezier التكعيبية بصيغة PostScript داخل حاوية SFNT، ويُعرَّف بالبايتات السحرية OTTO (أي 4F 54 54 4F). طوّرته Microsoft وAdobe معاً عام 1996 ومعياره الدولي ISO/IEC 14496-22. يدعم حتى 65,535 حرفاً ونظام تخطيط GSUB/GPOS للاستبدال السياقي والربطات والخطوط المتغيرة وتشكيل النصوص متعددة اللغات بما فيها العربية.

بنية الصيغة
Header table directory
Tables glyf · cmap
Outlines glyph paths
خطوطISO/IEC 14496-221996
بواسطة FileDex
غير قابل للتحويل

تحويل صيغ الخطوط يتطلب إعادة تعيين جداول الحروف وتحويل منحنيات 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

منافسان أصبحا حلفاء
Microsoft وAdobe تحالفتا ضد عدو مشترك
في التسعينيات، Apple تتحكم بـ TrueType وAdobe تتحكم بـ PostScript Type 1. Microsoft وAdobe — المتنافستان عادةً — تحالفتا عام 1996 لإنشاء OpenType توحّد كلتا التقنيتين في حاوية واحدة. Adobe أكملت الصفقة بتحويل مكتبة خطوطها الكاملة إلى OTF عام 2000.
سقف 65,535 حرفاً
ملف خط واحد يسع 65,535 حرفاً مختلفاً
فهرس الحروف 16 بت يحدّ كل OTF بـ 65,535 حرفاً. خط Source Han Sans من Adobe يقترب من هذا الحد بأكثر من 65,000 حرف تغطي الصينية المبسطة والتقليدية واليابانية والكورية — كلها في ملف واحد. سلفه PostScript Type 1 كان محدوداً بـ 256 فقط.
ملف واحد، أوزان لا نهائية
الخطوط المتغيرة استبدلت عائلات كاملة عام 2016
قبل OpenType 1.8 كانت عائلة الخطوط الكاملة تحتاج ملفات منفصلة لكل وزن وعرض — 18 ملفاً أو أكثر. خط متغير واحد الآن يحتوي فضاء التصميم بأكمله. Google Fonts تُبلغ عن تقليص متوسط 44% في حجم النقل الإجمالي.
الخط العربي يعتمد عليه
النص العربي غير مقروء بدون تشكيل OpenType
الحروف العربية تأخذ أربعة أشكال موضعية (مبتدئ ووسطي ومنتهي ومنفصل) تختارها خصائص GSUB تلقائياً. GPOS يدير الاتصال المتصل بين الحروف ووضع علامات التشكيل بدقة. بدون تخطيط OpenType يُعرض النص العربي كحروف منفصلة بعرض موحد — غير مقروء.

أربعة بايتات في بداية الملف — 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 مع الصيغ البديلة
المقارنة المعيار الفائز
.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 4F OTTO signature for CFF-based OpenType.
المطوّر
Microsoft / Adobe
سنة التقديم
1996
معيار مفتوح
نعم — عرض المواصفات
000000004F54544F OTTO

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 تمكّن الربطات والبدائل السياقية والتقنين وتشكيل النصوص المعقدة بما فيها العربية.

OffsetLengthFieldExampleDescription
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 بايت.
1996Microsoft تعلن OpenType دامجةً حاوية TrueType مع منحنيات Adobe PostScript CFF لإنهاء تجزئة صيغ الخطوط2000Adobe تحوّل مكتبة خطوطها الكاملة (آلاف الخطوط الاحترافية) من PostScript Type 1 إلى OpenType OTF2005OpenType تُسجَّل كمعيار ISO/IEC 14496-22 (Open Font Format) — صيغة الخطوط الوحيدة بتوحيد ISO2009WOFF 1.0 يلفّ OTF بضغط zlib للتسليم الفعال عبر الويب باستخدام CSS @font-face2016OpenType 1.8 يقدّم الخطوط المتغيرة بجدول fvar، مُضمّناً فضاءات تصميم كاملة في ملف واحد2018WOFF2 يصبح توصية W3C مضيفاً ضغط Brotli لخطوط ويب أصغر بـ 20-30% من WOFF12021مواصفة COLRv1 للخطوط الملونة تضيف تعبئات متدرجة وأوضاع دمج وتحويلات لطبقات الحروف في OpenType
تحويل OTF إلى WOFF2 للتسليم عبر الويب أخرى
python3 -c "from fontTools.ttLib import TTFont; f=TTFont('font.otf'); f.flavor='woff2'; f.save('font.woff2')"

يستخدم مكتبة fontTools في Python لقراءة ملف OTF وحفظه كـ WOFF2 بضغط Brotli. الملف الناتج أصغر بـ 20-30% مع الحفاظ على كل جدول وحرف.

عرض جميع الجداول في ملف OTF أخرى
python3 -c "from fontTools.ttLib import TTFont; f=TTFont('font.otf'); print('\n'.join(sorted(f.keys())))"

يفتح ملف OTF ويطبع كل وسوم الجداول أبجدياً (CFF وGDEF وGPOS وGSUB وcmap وhead إلخ). يكشف ما إذا كان الخط يتضمن خصائص تخطيط أو جداول ألوان أو محاور خطوط متغيرة.

استخراج قائمة خصائص OpenType من GSUB أخرى
python3 -c "from fontTools.ttLib import TTFont; f=TTFont('font.otf'); gsub=f.get('GSUB'); [print(r.FeatureTag) for r in gsub.table.FeatureList.FeatureRecord] if gsub else print('No GSUB')"

يسرد جميع وسوم خصائص GSUB المتوفرة في الخط (liga وsmcp وdlig وcalt وss01 إلخ). مفيد لاكتشاف الخصائص المدعومة قبل استخدام الخط في CSS أو تطبيق تخطيط.

تفكيك OTF إلى XML مقروء (صيغة TTX) أخرى
fonttools ttx -o font.ttx font.otf

يفكك OTF الثنائي إلى تمثيل XML حيث كل جدول مقروء بشرياً. يتيح فحص تغطية cmap ونصوص name ومنحنيات CFF وبحوث GSUB/GPOS.

استخلاص مجموعة فرعية لاتينية فقط من OTF أخرى
pyftsubset font.otf --output-file=font-latin.otf --unicodes=U+0020-007F,U+00A0-00FF --layout-features='*'

ينشئ مجموعة فرعية من OTF تحتوي حروف Latin الأساسية فقط مع الحفاظ على جميع خصائص التخطيط. يقلّص حجم الملف بشكل كبير للخطوط ذات مجموعات CJK أو عربية كبيرة.

متوسط

نقاط الضعف

  • بيانات CFF charstring مشوّهة تستغل طفحان مخزن في محللات خطوط نظام التشغيل (CVE-2020-1020 في Windows atmfd.dll سمح بتنفيذ تعليمات عن بُعد)
  • جداول GSUB/GPOS مُصطنعة تسبب تلف الكومة في محركات تشكيل النص مثل HarfBuzz وCoreText
  • استغلال مفسّر التلميحات البرمجية في TrueType — برنامج Duqu الخبيث (CVE-2011-3402) استخدم خط TTF مُصطنع لتحقيق تنفيذ تعليمات في وضع النواة

الحماية: FileDex لا يفتح ملفات الخطوط ولا ينفّذها ولا يحللها. هذه صفحة مرجعية فقط. حماية أنظمة التشغيل الحديثة تشمل عزل الخطوط (Windows AppContainer) وعزل المُعرّض (Chrome وFirefox) وASLR.

fontTools مكتبة
مكتبة Python لفحص وتحويل واستخلاص مجموعات فرعية والتلاعب بملفات OpenType. المعيار الفعلي لسلاسل أدوات هندسة الخطوط.
HarfBuzz مكتبة
محرك تشكيل نص OpenType يستخدمه Chrome وFirefox وAndroid وGNOME وLibreOffice لمعالجة GSUB/GPOS والنص العربي
FontForge أداة
محرر خطوط مفتوح المصدر ومجاني يدعم OTF وTTF وWOFF مع تحرير كامل لجداول تخطيط OpenType
Google Fonts خدمة
مكتبة خطوط مجانية مفتوحة المصدر تقدّم أكثر من 1,600 عائلة كـ WOFF2 بما فيها خطوط Noto العربية
Adobe Fonts خدمة
خدمة خطوط بالاشتراك مع أكثر من 25,000 خط OpenType بما فيها Adobe Arabic وAdobe Naskh