خط شاشة الكمبيوتر

يُعدّ تنسيق خطوط شاشة الحاسوب ( PSF ) تنسيقًا لخطوط الصور النقطية، ويستخدمه نظام لينكس حاليًا لخطوط سطر الأوامر . يمكن الاطلاع على توثيق تنسيق ملف PSF ضمن شفرة المصدر لأدوات لوحة مفاتيح لينكس . [ 1 ] وقد وصفت جامعة آيندهوفن هذا التنسيق. [ 2 ]

تنسيق الملف

رأس الملف

يبدأ كل ملف PSF برأسية. يوجد نوعان من الرؤوس: PSF1 و PSF2. جميع الأعداد الصحيحة متعددة البايتات مرتبة حسب ترتيب البايتات الأقل أهمية (ترتيب البايتات الصغير).

رأس psf1
طولوصفملحوظات
2بايتات سحريةدائماً36 04
1وضع خط PSFعلامات الخطوط المختلفة، انظر أوضاع الخطوط
1حجم الرمز الرسوميحجم الرمز الرسومي بالبايت، عدد صحيح غير مُوقّع من 8 بت. بالنسبة لـ psf1، يساوي حجم الحرف دائمًا ارتفاع الرمز الرسومي.
رأس psf2
طولوصفملحوظات
4بايتات سحريةدائماً72 b5 4a 86
4إصدارعدد صحيح غير مُوقّع 32 بت، قيمته الحالية دائمًا 0
4حجم رأس الصفحةعدد صحيح غير موقع 32 بت، حجم رأس الملف بالبايت (عادةً 32)
4الأعلامعدد صحيح غير مُوقّع 32 بت، انظر علامات الخط
4طولعدد صحيح غير مُوقّع 32 بت، عدد الرموز الرسومية
4حجم الرمز الرسوميعدد صحيح غير مُوقّع 32 بت، عدد البايتات لكل رمز رسومي
4ارتفاععدد صحيح غير مُوقّع 32 بت، ارتفاع كل رمز
4عرضعدد صحيح غير مُوقّع 32 بت، عرض كل حرف رسومي

جميع رموز psf1 يبلغ عرضها 8 بكسل.

أوضاع الخطوط

نمط الخط في رأس ملف psf1 هو عدد صحيح غير مُوقّع من 8 بت يحتوي على علامات مختلفة حول الخط

بتات وضع الخط
القيمة ( بالنظام الست عشري )اسممعنى
0x01PSF1_MODE512إذا تم ضبط هذا الخيار، فسيكون للخط 512 رمزًا. أما إذا لم يتم ضبطه، فسيكون للخط 256 رمزًا فقط.
0x02PSF1_MODEHASTABإذا تم ضبط هذا الجزء، فسيكون لخط الوجه جدول يونيكود .
0x04PSF1_MODESEQمكافئ لـ PSF1_MODEHASTAB

علامات الخط

يحتوي حقل علامات الخط في رأس ملف PSF2 على عدد صحيح غير مُوقّع من 32 بت، يتضمن علامات مختلفة متعلقة بالخط. يوجد حاليًا علامة واحدة فقط.

بتات علامة الخط
القيمة (بالنظام الست عشري)اسممعنى
0x00000001جدول رموز يونيكود PSF2_HASإذا تم ضبط هذا الجزء، فسيكون لخط الوجه جدول يونيكود

صور الملفات النقطية

تأتي بيانات الرسوميات الفعلية مباشرةً بعد العنوان. يُمثل كل بت في كل رسمية بكسلًا واحدًا في الخط: 0 للرسم غير المرسوم، و1 للرسم. يُضاف إلى كل صف من كل رسمية عدد صحيح من البايتات. على سبيل المثال، يحتوي خط بحجم 12×12 على بايتين لكل صف. قد يبدو الحرف 'A' في صورة نقطية PSF بحجم 12×12 كما يلي:

 حشوة بيانات الخط | +----------+ +--+ 000001100000 0000 000011110000 0000 000110011000 0000 001100001100 0000 011000000110 0000 110000000011 0000 111111111111 0000 111111111111 0000 110000000011 0000 110000000011 0000 110000000011 0000 110000000011 0000 

مع اثني عشر بتًا من البيانات الفعلية وحشو لملء كل صف إلى أقرب بايت. يتم تخزين الصفوف بدءًا من العمود الأيسر.

جدول يونيكود

إذا احتوى ملف PSF على جدول يونيكود، فإن لكل رمز رسومي مدخلاً في هذا الجدول، حيث يقابل الرمز الرسومي الأول المدخل الأول، والثاني المدخل الثاني، وهكذا. ويعتمد تنسيق المدخل في جدول يونيكود على نوع رأس ملف PSF.

جدول يونيكود PSF1

تُمثَّل المدخلات في جدول يونيكود لملف PSF1 كسلسلة من الأعداد الصحيحة غير الموقعة ذات 16 بت بنظام little-endian وتنتهي بـ 0xffff. تحتوي الأعداد الصحيحة الأولى في المدخل على حرف يونيكود يُمثَّل بالرسم التوضيحي المقابل. تستمر أحرف يونيكود هذه حتى 0xfffeيُصادف العدد الصحيح . بعد ذلك، بدءًا من القيمة 0xfffe، بدلاً من تمثيل أحرف يونيكود منفردة، تُمثِّل الأرقام سلسلة من أحرف يونيكود التي تُطابق الرسم التوضيحي ، حيث تبدأ سلسلة جديدة مع كل 0xfffeوتُصادف وتتوقف عند 0xffffمصادفة . على سبيل المثال، تُفسَّر سلسلة الأعداد الصحيحة غير الموقعة ذات 16 بت بنظام little-endian التالية بالطريقة التالية:

0xdead 0xbeef 0xfffe 0x3141 0x5926 0xfffe 0x1234 0x5678 0xffff 

عند رؤية أي من U+dead، أو U+beefالتسلسل U+3141 U+5926، أو التسلسل ، اعرض الرمز الرسومي المقابل لإدخال جدول Unicode هذا.U+1234 U+5678

جدول يونيكود PSF2

تتشابه مدخلات جدول يونيكود في ملف PSF2 مع تلك الموجودة في ملف PSF1، باستثناء أن أحرف يونيكود تُمثَّل بنظام UTF-8 ، وتبدأ تسلسلات يونيكود بقيمة البايت الواحد 0xfe(بدلاً من قيمة البايتين 0xfffe)، وتنتهي مدخلات يونيكود بقيمة البايت الواحد 0xff(بدلاً من قيمة البايتين 0xffff). ولا يمكن أن تظهر أي من القيمتين 0xfeفي تسلسلات UTF-8 الصحيحة.

مراجع

  1. منظمة نواة لينكس (2007-01-28). "psf.h" .
  2. الثلاثاء (1999). "تنسيق psf" .