SS Toolbox
SS Toolbox
يتم معالجة جميع البيانات محليًا

محوّل صيغ الخطوط — من WOFF2 إلى TTF ومن TTF إلى WOFF/WOFF2 داخل المتصفح

حوّل خطوط الويب بين TTF وWOFF وWOFF2 دون مغادرة الصفحة: تُكتشف صيغة المصدر من توقيع الملف، ويبقى تغطية المحارف وTrueType hinting كما هما، ولا يُرفع أي شيء — مُرمِّز WOFF2 هو إصدار WebAssembly محلي. خط CJK بحجم 20 ميغابايت يعمل، لكنه يستغرق عشرات الثواني ويتعامل مع ملف واحد في كل مرة.

ما الذي يغيّره محوّل الخطوط هذا — وما الذي يتركه دون مساس

  1. ثلاث صيغ إدخال وثلاث صيغ إخراج

    اختر ملف .ttf أو .woff أو .woff2، ثم حدّد TTF أو WOFF أو WOFF2 كصيغة هدف ونزّل النتيجة. تُستدل صيغة المصدر من التوقيع (wOFF وwOF2 وtrue/OTTO/0x00010000)، فلا تحتاج إلى تحديدها بنفسك؛ واختيار الصيغة نفسها يعيد البايتات الأصلية.

  2. من WOFF2 إلى TTF والعكس، محليًا

    يجري ترميز WOFF2 وفك ترميزه عبر مُرمِّز WOFF2 من Google المُجمَّع إلى WebAssembly داخل الصفحة، بينما يتولى pako حاوية WOFF الأقدم بلغة JavaScript خالصة — دون أي رحلة إلى خادم.

  3. تغطية المحارف وhinting ينجوان

    تعيد الأداة تغليف جداول الخط بدل إعادة رسم الحدود: يبقى عدد المحارف وتغطية cmap متطابقين، وتمر جداول TrueType hinting (cvt وprep وfpgm وتعليمات glyf) دون تغيير. الجدول الوحيد الذي يُسقطه مُرمِّز WOFF2 هو DSIG، التوقيع الرقمي.

  4. مصمّم لتوافق خطوط الويب

    أرسل WOFF2 إلى المتصفحات الحديثة، واحتفظ بـ WOFF أو TTF للبيئات الأقدم، أو وحّد مجلد خطوط مختلطة على صيغة واحدة. إن أردت ملفًا أصغر فقط، فاستخدم أداة إنشاء المجموعات الفرعية — هذه الصفحة لا تحذف أي محرف.

  5. حدود معلنة بصراحة

    ملف واحد في كل مرة (لا يُقرأ سوى أول ملف محدد)، ولا عناصر تحكم في الوزن أو الخط المائل، وتُرفض مجموعات TTC بتوقيع غير معروف. خط CJK بحجم 20 ميغابايت يُحوَّل فعلًا، لكنه يستغرق عشرات الثواني ومئات الميغابايتات من الذاكرة.

أسئلة شائعة حول تحويل صيغ الخطوط

ما صيغ الإدخال والإخراج المدعومة؟

الإدخال: TTF (TrueType sfnt) وWOFF وWOFF2 — الامتدادات الثلاثة التي يقبلها منتقي الملفات — مع اكتشاف صيغة المصدر تلقائيًا. الإخراج: TTF أو WOFF أو WOFF2 من القائمة المنسدلة. تفشل مجموعات TTC/OTC برسالة «Unrecognized font signature: ttcf»، ولا يتوفر OTF في المنتقي رغم أن المحلل سيتعرف على خط OTTO/CFF.

هل يمكنني ضبط الوزن أو جعل الخط مائلًا؟

لا. التحويل يعيد تغليف الحدود والجداول الموجودة فقط؛ ولا يصطنع وزنًا عريضًا أو إمالة أو أوزانًا إضافية. يتطلب ذلك أداة تصميم خطوط أو محور خط متغير، وهذه الصفحة لا توفر أي عناصر تحكم من هذا النوع.

هل تُفقد تغطية المحارف أو hinting أثناء التحويل؟

تبقى التغطية وTrueType hinting محفوظتين: تُنسخ كل الجداول، ويبقى عدد المحارف متطابقًا (خط Song بحجم 20.9 ميغابايت احتفظ بجميع المحارف الـ60,455)، وتبقى cvt وprep وfpgm إضافة إلى تعليمات glyf. ترميز WOFF2 يُسقط جدول توقيع DSIG فقط؛ أما إخراج WOFF فيحتفظ بكل الجداول.

هل يتعامل مع خطوط CJK الكبيرة، وكم من الذاكرة يحتاج؟

نعم، لكن لا يوجد حد أقصى للحجم ويُحمَّل الملف كاملًا في الذاكرة. القياس هنا: ملف TTF بحجم 20.9 ميغابايت أصبح WOFF2 بحجم 8.6 ميغابايت في نحو 55 ثانية بذاكرة تقارب 350 ميغابايت؛ أما Noto Sans SC بحجم 16.9 ميغابايت فاستغرق نحو 39 ثانية بذاكرة تقارب 400 ميغابايت. يتوقف الخيط الرئيسي خلال ذلك وتتجمّد الصفحة — أنشئ المجموعة الفرعية أولًا إن أمكن.

هل يمكنني تحويل عدة خطوط دفعة واحدة؟

لا. يقرأ المنتقي ملفًا واحدًا فقط (files[0]) وكل تشغيل يستبدل النتيجة السابقة؛ لا توجد قائمة انتظار ولا قائمة تقدّم ولا وضع دفعي بالسحب والإفلات.

هل هذا محلي أم يستخدم خادمًا؟

محلي بالكامل. يعمل ترميز WOFF2 وفك ترميزه في وحدة Emscripten WebAssembly مضمّنة كـ data URI، ويتولى pako تغليف WOFF في JavaScript. لا يُرفع الخط أبدًا، فتبقى الخطوط المرخّصة خاصة.

ماذا يحدث إذا فشل التحويل، ولماذا يُسمّى الملف دائمًا font.*؟

إذا فشل التحويل فلا يُنزَّل أي شيء ويُسجَّل الخطأ في وحدة التحكم فقط؛ وتظهر رسالة النجاح بعد إنشاء blob. اسم التنزيل ثابت كـ font.ttf أو font.woff أو font.woff2، لذا أعد تسميته وفق عائلة الخطوط قبل النشر.

الأدوات ذات الصلة
SponsorMindElixir