الباب السادس – اللغة العربية


هذه مجموعة من الأفكار التي تخص من يترجم للغة العربية بصفة عامة.

نجمعها في هذا الدرس للفائدة. و هي تخص:



الألعاب التي بها دعم جاهز للعربية


هناك حالات يكون هناك جزء من العمل الذي تحتاج إليه لتعريب اللعبة لا تحتاج لعمله.

لكن أولا... يجب أن نعرف كيف تدعم هذه الألعاب العربية.


كي نفهم كيف يمكن تخزين اللغة العربية في بيانات الحواسيب مثل اللغة الإنكليزية،

يجب أولا أن ننظر لخصائص اللغة العربية.


اللغة العربية بها 28 حرفا، مع زيادة حروف أخرى

(بما أن أنواع الهمزة مثلا تعتبر كل منها حرفا بذاته).

كل حرف عربي يكتب بواحد من 4 أشكال (أو أقل) حسب مكانه في الكلمة.

كل واحد من هاته الأشكال المختلفة يدعى مَحْرَف، و الجمع محارف.


في أجهزة الكمبيوتر الحديثة،

الحرف العربي الواحد يتغير شكله حسب مكانه في الكلمة.

المحرف لا يتغير شكله أبدا و هو رمز ثابت.


نحن عندما نكتب في برامج النصوص على الكمبيوتر،

لا نرى عملية تركيب المحارف المعقدة، و كل ما نفعله هو ضغط أزرار لوحة المفاتيح العربية

التي تنادي الحروف، و معالج النص يقوم باختيار الشكل الصحيح عوضا عنا.


مثلا، بالنسبة لحرف العين:

يمكنكم نسخ الرموز التالية و تجربة كتابة حروف أخرى ملاصقة لها.

الحرف سوف يتغير شكله ليلتصق بها، و المحارف لن تغير شكلها.


حرف

محرف

ع

ﻉ ﻊ ﻋ ﻌ


أما الآن، هيا نرى كيف يتم تخزين الحروف العربية في أجهزة الكمبيوتر العربية.

في البداية كانت هناك محاولات خجولة في أواخر الثمانينات.


كما نعلم، فالبايت الواحد كانت قيمته تتراوح بين 00 و FF ... أي أن لدينا 256 قيمة مختلفة.

و النصوص الإنكليزية كانت تستخدم بايتا واحدا لكل حرف.

لكن الحروف الإنكليزية (31=1, 41=A, 61=a) كانت تنتهي مع الرمز 7F

أي أن المساحة من 80 إلى FF كانت كلها شاغرة و غير مستعملة

(لا داعي أيضا لاستخدامها للبرمجة نظرا أن المساحة الشاغرة بين 00 و 1F تستعمل لذلك عادة).


على هذا الأساس، استعملت الرموز بين 80 و FF لتخزين رموز اللغات الأخرى،

مثل مختلف الرموز الخاصة باللغات الأوروبية.

هناك من فضل استخدام هذه الرموز لتخزين الحروف الروسية، أو اليونانية، أو العبرية،

أو اليابانية (لكن فقط الكاتاكانا لضعف الحيز)، و غيرها...

أو اللغة العربية.


نظرا لغياب التوافق التام، استعملت عدة معايير لترتيب الحروف العربية على هذه الرموز،

إلى أن تم الاستقرار على بعض التراتيب الشائعة.

أبرز ترتيب قد يثير اهتمامنا في نظام تحكم ويندوز المعاصر هو Windows-1256

و الذي راج استعماله أكثر لأسباب عملية، نظرا أنه يجمع بين العربية و بعض الرموز الفرنسية.


على سبيل المقارنة، هذه صورة لجميع قيم الرموز من 00 إلى FF،

مع ترميزي الويندوز عربي 1256 و ترميز رموز لغات أوروبا الغربية 1252.


هذه الصورة تسمح لنا بالتعرف على قيمة كل رمز.

مثلا، A=41 (سطر 4، عمود 1) و ?=3F (سطر 3، عمود 15/F) و الرقم 0 هو 30 (سطر 3، عمود 0)،

أما نقطة الاستفهام العربية (أو الاسبانية في ترميز أوروبا) فهي BF.


Windows-1256 (عربي)

Windows-1252 (أوروبا الغربية)


الخصوصية في ترميز ويندوز-1256 للعربية،

هو أن جميع القيم المتاحة للغة العربية، تنادي على الحروف و ليس على المحارف.

ما يعني أن هذه الرموز تتغير حسب المكان في الكلمة.


أنواع الترميز هذه يطلق عليها الويندوز اسم صفحات الكود codepage.

و هي في الواقع مستعملة جدا في مختلف تطبيقاته.

على سبيل المثال، فأغلب عناوين الويب المكتوبة بالعربية، مثل صفحات الأخبار،

تكون في الواقع مخزنة بالشكل %XX حيث XX هو بايت الحرف العربي.


و أحيانا تفتح الصفحة الخاطئة من الترميز للغة الخاطئة.

و ذلك سببه أن إعدادات الويندوز تحت Control Panel (لوحة التحكم) للغة الجهاز،

تحت Control Panel > Regional and Language Options > Advanced > Language for non-Unicode Programs

لا توافق لغة البرنامج أو النص الأصلية،

أو كون Encoding (الترميز) في متصفح الويب لا يوافق لغة الصفحة.

فيظهر النص في حالات مثل هذه:



و هذه لعبة يابانية صممت في الأصل ليظهر النص الياباني المرمز بصيغة Shift-JIS على الشاشة.

لكن بما أن إعدادات لوحة التحكم في جهازي وضعت على العربية،

فهو يستخدم ترميز ويندوز-1256.

و بالتالي فإن الرمز الياباني الذي يرمز بنظام Shift-JIS باستخدام البايتين 81 متبوعا بـ 79

يتم تأويله على أساس أن البايت 81 هو ( پ ) و البايت 79 هو ( y ).

و هلم جرا لبقية النص، الذي يظهر هو الآخر كله خاطئا.


لا بد أن رؤية نصوص عربية، مخربطة بهذه الطريقة، هو أمر مألوف للعديد منكم،

خاصة على الحواسيب أو الأجهزة التي لا تعترف بالعربية:


هذا النص العربي (الذي بالمناسبة يتحدث عن قواعد لعبة "بنت ولد")

كان في الأصل مكتوبا بترميز ويندوز-1256 عربي،

لكنه يظهر الآن باستخدام ترميز ويندوز-1252 أوروبا الغربية،

التي استخدمت الرموز بين 80 و FF للحروف الأوروبية و ليس للعربية.

لذلك يظهر هذا النص مخربطا.


هناك على فكرة، بعض الرموز المثيرة للإهتمام في ترميز ويندوز-1256،

طبعا عدا الحروف الخاصة بالأردية و الفارسية، و علامات التنقيط المعربة (،؛؟)، و التشكيل.

و هي رموز تحكم لا تظهر على الشاشة لكن لديها أهمية كبرى على ظهور النصوص.


فراغ فاصل بعرض صفر (9D): في العادة عندما نكتب حرفين عربيين ملتصقين،

يتغير شكلهما ليصبح الأول مرتبطا بما بعده و الثاني مرتبطا بما قبله (مع استثناءات مثل ادرولا)

لكن عندما نكتب بينهما هذا الرمز الذي لا يظهر،

يظهر الأول في شكله آخر الكلمة و الثاني في شكله أول الكلمة، رغم أنهما بجانب بعضهما.

هذه الخاصية ضرورية للغة الفارسية و الأردية.

هناك أيضا فراغ واصل بعرض صفر (9E) و هو يجبر حرفين منفصلين عندما يلاصقان بعضهما، على الاتصال.


اشارة اليسار لليمين LRM (FD) و اشارة اليمين لليسار RLM (FE):

عندما يختلط النص العربي بحروف انكليزية، كثيرا ما تظهر الرموز بالترتيب الخطأ بسبب اختلاف ترتيب الحروف.

هذه الإشارات جعلت لإصلاح هذا الترتيب.


على سبيل المثال. لو كتبنا فقط دون أي زيادة البايتات التابعة لجملة

[أنا سعيد. لقد أتيت أخيرا!]

ستظهر لنا في معالجات النص البدائية هكذا:

هناك رموز قوية و هي الحروف العربية أو الإنكليزية التي نعرف أي لغة هي.

و هناك رموز ضعيفة تتبع الغالب و لا لغة لها، من قبيل علامات التنقيط. و المسافات لا تحسب.

الرمز الضعيف عندما يكون متبوعا برمز ضعيف آخر يبحث عن أول رمز قوي ليعرف أي لغة و اتجاه يتبعه.


في حالتنا هذه، النقطة متبوعة بحرف عربي فتظهر بالشكل الصحيح.

لكن نقطة التعجب الأخيرة ليست متبوعة بحرف عربي فتظهر في المكان الخطأ.

لو وضعنا رمز اشارة اليمين لليسار (نرمز لها هكذا ) بعد نقطة التعجب

[أنا سعيد. لقد أتيت أخيرا!]

ستظهر لنا هكذا كما يجب:


و هي أيضا تستعمل عندما يكون لدينا نص انكليزي و بداخله جملة عربية.

مثلا، لو كتبنا:

[He said AHLA! and nothing else.]

حيث تكون كلمة AHLA هي في الواقع باللغة العربية و كتبت [أهلا]

ستظهر الجملة هكذا:


و نقطة التعجب تظهر في المكان الخطأ.

كي تتبع نقطة التعجب الإتجاه الصحيح، نكتب بعدها إشارة اليمين لليسار (نرمز لها هكذا )

[He said AHLA! and nothing else.]


لكن...

هذه الطريقة مع أنها مستخدمة في عدة برامج إلا أنها بحكم تغيرها حسب لغة النظام

فهي لا تصلح كثيرا لتخزين نصوص بعدة لغات.

لذلك أتى ترميز جديد للنصوص اسمه ترميز اليونيكود Unicode يستخدم 2 بايت (أو حتى 3 أحيانا) لكل رمز

يبقى النص هو نفسه بغض النظر عن لغة النظام.

رأينا في السابق استعمالها في اللغة اليابانية.

من بين أنواع اليونيكود لدينا UTF-8 و UTF-16.


اللغة العربية في اليونيكود توجد منها عدة جداول،

لكن الجداول التي تخص العربية بالذات من دون الفارسية و الأردية، هي الآتية:


الحروف العربية (0600 إلى 06FF) : فيه حروف عربية، تتغير أشكالها حسب المكان في الكلمة

عندما نكتب بلوحة المفاتيح، نستدعي هذه الرموز.



أشكال التقديم العربية-ب (FE70 إلى FEFF) : فيه المحارف العربية، ثابتة

هنا توضع أشكال كل محرف من محارف الحرف الأربعة.

هذه المحارف رموز جامدة لا ترتبط بما حولها، بل تستدعى حسب الحاجة عند كتابة الحروف العادية.

تشمل هذه السلسلة أيضا رمز ذيل كان يرسم مع حرف السين و الصاد في الأجهزة القديمة (الفكرة استخدمناها في درس سابق).



رموز الرياضيات العربية (1EE00 إلى 1EEFF) : فيه حروف عربية منفصلة برسم خاص، ثابتة

هذه رموز جديدة أضيفت لكتابة المعادلات الرياضية العربية على الكمبيوتر.

لكن ليست كل معايير الأونيكود تحتوي هذه الرموز.




كيف يعنينا كل هذا في ترجمة الألعاب؟

هناك فرصة لا بأس بها أن يكون في اللعبة التي نعمل عليها،

لو كانت قد صدرت على أجهزة مثل الحواسيب بالويندوز أو هواتف الأندرويد و هي أجهزة تدعم العربية في نظام تشغيلها،

أن يكون هناك إمكانية لاستثمار ذلك الدعم الجزئي لإظهار الحروف العربية في اللعبة.


هذا الدعم قد يكون كاملا، و قد يكون جزئيا.

دعم العربية الكامل يجب أن يتضمن هذه العناصر:

  1. الحروف نفسها (في الخط و في الترميز)

  2. الحروف تتغير أشكالها حسب مكانها في الجملة آليا

  3. النص يظهر من اليمين لليسار



على سبيل المثال:


الدعم المنعدم


لو ذهبنا لبرنامج ويندوز أو لعبة فيديو من النوع الذي لا يدعم العربية بتاتا،

و غيرنا ملفات النص بالكتابة بحروف عربية فيها بلوحة مفاتيح الكمبيوتر،

و لم يظهر لنا حرف واحد عربي.

على الغالب ستظهر نقاط استفهام أو أحيانا عدة مستطيلات فارغة (بعدد حروف النص)

هذا إن لم تظهر الحروف الأوروبية مكانها، أو عوض كامل النص بالفراغات.

يعني في هذه الحالات أن الدعم منعدم تماما.

و في مثل هذه الوضعيات، نقوم بتطبيق دروس التعريب السابقة، و هي تدور حول واحدة من الأفكار التالية:


  1. الدعم منعدم، و نتصرف بما لدينا:

نعد نسخة جاهزة من النص العربي قمنا فيها بتحويله لنص بحروف انكليزية (طبعا اللعبة تدعم النص الانكليزي،

و لو كان شكل الحرف الانكليزي في الخط عوض برسوم المحارف العربية فستظهر النصوص و كأنها بالعربية)،

مع استعمال برنامج مثل محول الحروف يقوم بربط الحروف (يضع المحارف الصحيحة حسب مكان الحرف في الكلمة)

و قلب ترتيب الحروف (كي لا تظهر الجملة العربية معكوسة) و هذه أمور قمنا بها نحن بدلا عن اللعبة لأنها عاجزة عن ذلك.

هذا الحل يحتاج فقط لتغيير النص و الخط لا غير.


  1. نغير برمجة اللعبة لإضافة برمجة اليمين لليسار.

و هكذا، كل ما نجهزه للعبة في النص في محول الحروف هو ربط الحروف فقط.


  1. نغير برمجة اللعبة لإضافة برمجة اليمين لليسار، و برمجة ربط الحروف ببعضها.

بعبارة أخرى، اللعبة أضيف لها دعم كامل للعربية.


بالطبع فإن تغيير برمجة لعبة هو مغامرة تستدعي الكثير من الجهد و لذلك ستجد الكثيرين يكتفون بالفكرة الأولى،

لكن ذلك لن يكون كافيا في حال ما كان النص يظهر تدريجيا على الشاشة (ما يتطلب الفكرة 2)،

أو لو كان النص يتغير وسط اللعبة مثل اضافة الضمائر للجمل أو برامج معالجة النص (ما يتطلب الفكرة 3).


في الواقع، لدينا فقط بعض المحاولات مع الفكرة الثانية و جلها على النيس لكثرة دروس أسمبلي برمجته مقارنة بأجهزة أخرى،

و محاولة وحيدة (عدا معالج نص أسدير 95 العربي على الفاميكوم المقرصن) للفكرة الثالثة لم تنشر بعد.


الدعم الجزئي (وجود الحروف و الاعتراف باليونيكود)


لو فتحت فيديوهات بترجمة عربية في كونسولات من الجيل السابع (وي، بلاي 3...)،

أو كتبت بالعربية في برامج مثل Flash أو Photoshop (عدا نسخة موجهة للشرق الأوسط)،

فإن الكتابة العربية ستظهر بحروف عربية،

لكنها تكون كلها في شكلها آخر الكلمة و غير مترابطة ببعضها،

و النص مقلوب و يظهر من اليسار لليمين.

يعني أن الدعم جزئي يتوقف عند النقطة 1 (وجود الحروف العربية).


كما رأينا في السابق، فالكمبيوتر لديه مجموعتان تهمنا من الحروف العربية:

الحروف العربية

المحارف – أشكال التقديم ب العربية


عندما نكتب نحن نصا عربيا بلوحة المفاتيح، نحن في الواقع ننادي على الحروف العربية.


لو كان البرنامج الذي نستخدمه يدعم العربية (مثل أغلب معالجات النص في الكمبيوتر)

فإنه سينظر لكل حرف و سيجلب لنا المحارف الصحيحة (من أشكال التقديم ب)، حسب مكان الحرف في الكلمة،

و سيظهر أول حرف من الجملة العربية في اليمين و ليس في اليسار مثل الجمل الانكليزية.


لكن، لو كان يدعم العربية بشكل منقوص، فلن يقوم بأي شيء من ذلك.

كل ما سيحصل هو أن كل حرف عربي سيكتب في شكله آخر الكلمة

و لا يتغير شكله كي "يلتصق" مع الحروف جواره،

و ستظهر الجملة مقلوبة.


بالطبع، هذا لا يعني استحالة اظهار العربية بشكل صحيح في برنامج به دعم جزئي للعربية.

ببساطة، لو عجز البرنامج عما ذكرناه،

فسنقوم بنداء المحارف الصحيحة (من جدول أشكال التقديم ب) و قلب النص بأنفسنا.

لأجل هذا الغرض، علينا طبخ النص للبرنامج مسبقا (كما في فقرة "الدعم المنعدم") بأحد الوسائل التالية:


برنامج محول الحروف

باستعمال قاعدة بيانات حروف خاصة (مرفقة مع الدرس) تحتوي لكل حرف عربي ما يقابله من محارف عربية في الحالات الأربعة،

مع تشغيل خاصية قلب النص، نستطيع الحصول على نصنا الذي يظهر بشكل صحيح عند لزقه في البرنامج ناقص الدعم.


على الأرجح، بعد تحويله سيبدو النص غريبا و كأنه مفكك و مقلوب،

لكن ذلك مرده أن محارف أشكال التقديم العربية من الناحية التقنية حروف انكليزية من اليسار لليمين.


مواقع للتحويل على الأنترنت

نظرا لانتشار استعمال برامج التعديل على الصور و الفيديوهات، و التي كثيرا ما تعاني الدعم المنقوص للعربية،

شغلت هذه المشكلة بال عدد كبير من هواة هذه البرامج من العرب

و لذلك ظهرت عدة مواقع على الأنترنت تسمح بتحويل النصوص العربية الى نصوص تستعمل محارف أشكال التقديم ب.


من بين هذه المواقع:

لوحة المفاتيح العربية – هذا الموقع موجه لمن لا يمتلك لوحة مفاتيح عربية،

لكن من بين الخدمات التي يتيحها محول نص عربي موجه لمستخدمي الفوتوشوب.

رسام واجهة – موقع آخر، يحتاج إلى اعتراف المتصفح بالفلاش. يتيح تحديد أقصى عدد الحروف في السطر الواحد.

قمت باستخراج ملف الفلاش لمن يريد استخدامه دون اتصال انترنت.

من المفارقات أن النص العربي في هذا الموقع يظهر بشكل خاطئ معكوس مفكك، نظرا أن الفلاش نفسه به دعم عربي منقوص.


الدعم الكامل (و المخفي)


أحيانا يكون دعم اللغة العربية موجودا بشكل كامل في اللعبة أو البرنامج، لكن نحن لا نعلم بذلك.

بل قد يكون المبرمج نفسه لم يتعمد ذلك أو ينتبه أصلا لذلك.

و السبب في عديد من هذه الحالات أن نظام التشغيل (مثل الأندرويد و الويندوز) أو محرك اللعبة هو مصدر هذا الدعم.


بالطبع في كثير من هذه الحالات، لزق نص عربي كما كتبناه في الويندوز، في اللعبة، قد يبوء بالفشل،

و نحتاج لطرق ملتوية بغية إضافة هذا الدعم.


على سبيل المثال:

لعبة Oceanhorn للكمبيوتر أنتجت في الأصل بالإنكليزية و لغات أوروبية أخرى،

لكنها أيضا تحتوي ترجمات يابانية و كورية و روسية.

ما الترميز المشترك الذي يحتوي الياباني بجميع الكانجي، و الروسي؟

لدينا اما Shift-JIS و إما اليونيكود Unicode.

لكن لو أضفنا الكورية... لا يكون إلا اليونيكود.

و اليونيكود... يدعم العربية أيضا.


و عند استعمال هذه اللغتين، فخط اللعبة يتغير ليصبح خط Arial

النسخة المستعملة من هذا الخط ليست نسخة الويندوز تحت c:\windows\fonts بل هي من مجلدات اللعبة،

و هذه النسخة لو فتحناها بأداة تعديل خطوط ويندوز بصيغة ttf (مثل أداة birdfont )

سنجد أنها مازالت تحتوي الحروف العربية.


يمكننا أن نترجم هذه اللعبة بالطريقة المعهودة.

أي نعمل على اللغة الإنكليزية، و كأن اللعبة ليس بها دعم للعربية.

قمت بالبحث في الانترنت عن طريقة تحويل هذا الملف

(و هو بصيغة pvr المستخدمة كثيرا في ألعاب محرك Unreal 3/4) و وجدت هذه الأداة،

و استخراج صوره و هي الخطوط هنا اضافة لعدة أشياء أخرى:


(ماذا لو لم نجد أداة في الأنترنت لهذه الصيغة من الصور؟ عندها نحاول معرفة كيف خزنت الصور بالتجربة..

هذا بحد ذاته ميدان كامل: الفكرة منه تبدأ بفهم كيف تخزن الصور في شكل بايتات كما رأينا في درس التايل)



هناك عدد لا بأس به من الألعاب صار يعتمد هذه الطريقة لتخزين خطوطه،

حيث يتم حشر كل الحروف متفاوتة الأبعاد في ملف كهذا لتقليص حجم الصورة.


كانت هذه الطريقة مستعملة أساسا لتخزين الخامات textures
و الخامات هي صور عادية، لكنها مستعملة لتغطية المجسمات ثلاثية الأبعاد.

مثلا، هذه خامة مجسم الأميرة زلدا في ألعاب الدي اس، و اللعبة "تلبس" المجسم هذه الخامة.


بالطبع هناك ملف في اللعبة به بالضبط تعليمات اللزق هذه.

و في حالة Oceanhorn، لحسن الحظ هذا الملف سهل التعديل و يتمثل في ملف نص،

به أبعاد و مكان كل حرف في الخط.

هناك ملفان تحت مجلد font التابع للعبة يخصان خط اللغة الانكليزية.

هما بصيغة fnt لكن يمكن تعديلهما كأي ملف نص (لأنه لا يوجد خرابيط بهما).

فقط نحرص على استعمال أداة مثل Notepad+ و عدم تغيير الترميز (بإضافة حروف عربية مثلا)

كما نرى، توجد معلومات لكل رمز (char id) عن نقطة بدايته في الصورة (x و y) و أبعاده (width و height)

و عدة معلومات أخرى، قد نجهل ما معناها لكن لو غيرنا هذا الملف قليلا و جربنا اللعبة سنعرف ماذا تفعل.



و بالطبع يمكن تغيير النصوص تحت مجلد String الذي به 11 ملفا، واحد لكل لغة.

و نستعمل الحروف الانكليزية التي في خطنا.



لكن... هذه اللعبة تدعم اليونيكود.

ما يعني أن هناك فرصة كونها تدعم العربية أيضا.

لنفتح ملف لغة تستعمل اليونيكود، مثل اليابانية مثلا.



السطر Night (الليل) ترجم إلى \u0591C

على ما يبدو من الأسطر السابقة، فهذا رمز وحيد.

حرف u ليس غريبا، يبدو و كأنه مشتق من Unicode.

هذا الموقع unicodelookup يسمح لنا برؤية جميع رموز ترميز اليونيكود، لنجرب كتابة 0591C فيه،

مع كتابتها طبعا 0x591C لأنها قيمة بالنظام الست عشري.

و الرمز المقابل يتبين أنه (و ينطق yoru) و هو بالفعل كانجي ياباني يعني "ليل".


لو تتذكرون في أعلى الدرس، لدينا العربية أيضا في اليونيكود.

لدينا جدولان: الحروف العربية (حوالي 30) و المحارف أشكال التقديم ب (125).

لكن بما أنه و لحسن حظنا فاللعبة بها دعم كامل مخفي للعربية اكتشفته بعد التجربة بالاثنين،

نستطيع أن نستخدم الحروف العربية مباشرة.

ترميز حرف الألف هو 0627 و حرف اللام هو 0644 و حرف الياء هو 064A (طبعا، كلاهما بالست عشري).


لو أردنا كتابة هذه الجملة في اللعبة

الليل

و لنحترم طريقة هذه اللعبة في كتابة اليونيكود (لأنه قد ينخرب الملف لو تغير ترميزه من ascii لواحد بحروف عربية،

أو كما في حالة هذه اللعبة لو كنت لا تقتنع الا بالتجربة، سيظهر بالون النص فارغا تماما)

سنقوم بكتابة تلك الجملة بالطريقة التالية، حيث أول حرف من اليسار سيكون أول حرف في الكلمة العربية،

تماما كما جرت العادة في تخزين اللغة العربية في معالجات و ملفات النص

أي هكذا

\u00627\u00644\u00644\u0064A\u00644


كي لا نضطر لكتابة هذه الصيغة الطويلة لكل كلمة، نستطيع استخدام برنامج محول الحروف،

بدون قلب النص، باستعمال جدول يعوض كل حرف عربي بنفس القيمة \u0xxxx لحالاته الأربعة.

و هكذا ينقص الجهد المطلوب.


طبعا الملف الذي سنغيره يجب أن يكون من بين اللغات التي تستعمل اليونيكود.


هذا مثال لجملة مترجمة تستعمل الدعم العربي:



أمر آخر، ألا يبدو الخط المستعمل كريها بعض الشيء؟

يمكننا استخدام أداة birdfont المذكورة أعلاه لتغيير ملف خط ttf الذي تستعمله هذه اللعبة،

و وضع خط أجمل منه بكثير. لكن هذا أمر يعود لذوقكم الشخصي.


هذه حالة أتى دعم العربية فيها من اللعبة نفسها.

و هناك حالات أخرى يكون فيها الدعم نتاج اعتماد اللعبة على نظام تشغيل يدعم العربية.

سندرس الآن حالتين – نظام ويندوز، و نظام الأندرويد.


لنبدأ مع لعبة موجهة للميكروسوفت ويندوز.

أقترح لعبة Akuji The Demon التي صدرت في الأصل باليابانية لكن توجد لها ترجمة انكليزية.

و هذه الترجمة هي التي سوف نعمل عليها.


لدينا مثلا هذا النص:



أولا مبدئيا نظرا أن الخط المستعمل هنا هو Arial الذي في مجلد الويندوز،

لا داعي للقلق بخصوص احتواء الخط حروفا عربية.


اللعبة تحتوي عدة ملفات و مجلدات.


الملف bmp.qda مثلا هو ملف يحتوي جميع صور اللعبة.


كيف نعرف هذا؟ هناك أدوات تشويه الألعاب ROM Corruption.

هذه الأدوات تقوم بتخريب أجزاء من الروم أو ملفات اللعبة (طبعا نسخة احتياطية للتجارب)،

و نحن نجرب بعد ذلك اللعبة و نرى ما الذي فسد (في عدة حالات سوف تتعطب اللعبة)،

و نستنتج ان تأثرت الصور مثلا، أن الجزء الذي خربناه كان فيه أمر له علاقة بالصور.

سنتحدث عن ذلك ربما في درس قادم، عندما أتعلم أكثر حول هذه الطريقة.

و على فكرة، بما أن bmp.qda كتلة من الصور (التي على الارجح، من اسم الملف، هي بصيغة bmp)

كيف نستطيع أن نفكك هذا الملف الكبير الى مجموعة الصور التي تحتويه كي نتمكن من تعديلها؟

سنرى ذلك أيضا بحول الله في درس للتعامل مع للملفات المجهولة.


بخصوص مجلد data، فهو يحتوي عددا كبيرا من الملفات.

الملفات من TK001.DAT إلى TK065.DAT تحتوي جزءا كبيرا من نصوص اللعبة.

النص الانكليزي مخزن فيها بترميز ASCII و لذلك يمكن رؤيته ببرنامج هيكس

أو حتى لو كنا مستعجلين بأداة نص مثل Notepad+ (مع ذلك لا أنصح بتغييره بغير برنامج الهيكس).

الجزء الباقي من النصوص في تطبيق اللعبة نفسه akuji.exe و يمكن تعديله ببرنامج هيكس

لكنه حساس أكثر من غيره.


لنعد إلى الصورة التي لدينا.

الحوار الذي فيها وضع بالتحديد في الملف TK001.DAT في السطر الأول.

كل سطر في الملف خصص لنصوص احدى اللافتات في الغرفة الأولى من اللعبة.


لنلاحظ رموز التحكم:

\n هو العودة للسطر

\e هي نهاية الحوار، حيث يتوقف النص و تنتظر اللعبة ضغطة زر لإغلاق نافذة النص.



أود الملاحظة أن محاولة التعديل على هذا الملف في برنامج Notepad بالكتابة بالعربية

ستبوء بنتائج كارثية. و ذلك لعدة أسباب.


أولا: لأن التعديل في معالج نص على ملف و كتابة حروف عربية (ترميز يونيكود) سيفسد الترميز الأصلي للملف.

و النتيجة المباشرة ستكون رسالة خطأ تظهر في أول اللعبة نظرا أن الملف فسد.


ثانيا: لأن هذه اللعبة يابانية المنشأ و كانت تستخدم نظام Shift-JIS،

كي تعترف برموز التحكم. يجب أن تكون رموز التحكم في بيانات الهيكس في مرتبة عدد زوجي،

و الا لن يعترف بها، و النتيجة أن النص يتواصل الى ما لا نهاية و اللعبة تتعطل هنا.


نقوم اذن بفتح TK001.DAT في برنامج هيكس لتفادي هذه الكوارث.

و تحديدا في الكريستال تايل.


الآن هناك أمر مثير للاهتمام بخصوص ملفات النص العادية في الويندوز، و يمكننا ملاحظته هنا.

العودة للسطر يرمز لها ببايتين هما 0D0A.



حان الوقت لتجربة جريئة بعض الشيء.

كما رأينا في أول الدرس، فهذه اللعبة بنسختها اليابانية تظهر في نصها المخربط حروفا عربية.

اذن لو كانت لغة الويندوز تحت Non-Unicode Programs هي العربية،

فسيتم استعمال ترميز ويندوز 1256 الخاص بالحروف العربية لتأويل تلك الرموز.


أمام System Language تحت Proprieties نختار Arabic (Windows) – codepage 1256

و ننقر فوق أول حرف، نغير لغة الكتابة للعربية، و نشرع في الكتابة بلوحة المفاتيح!

أمر مهم وجب أن نتذكره، هو اشارة اليمين لليسار (و مقابلها في الهيكس FE) الضرورية للكلمات العربية.

هذه الاشارة نكتبها دائما بعد كل علامة تنقيط في جملة عربية لو كانت علامة التنقيط هذه آخر شيء في السطر.

و من المهم جدا أيضا ألا نستخدم أي حرف انكليزي في أية جملة نكتبها، لأن الترتيب سيفسد.



لقد تركت رموز التحكم \n و \e في أماكنها هنا،

لكن تحريكها ممكن، طالما تكون نقطة بداية كل واحدة في مرتبة زوجية،

مثلا 00 أو 02 أو 04 أو 06 ...

أسجل الملف و أختبر النص كما يظهر في اللعبة:



حتى على الرغم أنها كانت محاولة على عجل، فالنتيجة تدعو للرضا.

برنامج Ressource Hacker (الذي أراه لنا إيهاب مشكورا) يسمح لنا بتعديل بعض العناصر الأخرى في التطبيق،

مثل الترميز الذي يستعمله التطبيق، أيقونته، اسمه،

و لو كان فيه قوائم – أسماءها (و هي غير موجودة في حالتنا).


ألعاب الأندرويد أيضا لكونها تعتمد في كثير من برمجة نصها على نظام تشغيل الأندرويد،

يمكن أن نستغل أثناء تعريبها الدعم الكامل للغة العربية (يمين ليسار، ربط حروف) بمجرد وضع خط به الحروف العربية،

و لن يكون هناك أية مشاكل، عدا ربما ثقل عمل البرنامج في بعض المواقف بسبب كبر حجم الملف

(لو استخدمنا مثلا خط Arial -الذي يحتوي ايضا الصينية و الكورية و عدة لغات اخرى- سيكون حجمه 22 ميغابايت و هذا ضخم).


[فقرة للتوسع لاحقا]


تشكيل الحروف



معروف أن اللغة العربية تحتوي أيضا رموز التشكيل. و هي رموز صغيرة تظهر فوق الحروف.


لدينا الحركات الدارجة في الاستعمال:



و لدينا حركات أخرى أندر استعمالا خارج الخط العربي و القرآن،

و هي أيضا موجودة في بعض خطوط الكمبيوتر العربية و في معايير اليونيكود،

لكن لا توجد طرق سهلة لكتابتها من لوحة المفاتيح، من قبيل:



و في الخط العربي، هناك أيضا النقاط و الأظافر التي ترسم على حواف الحروف،

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

و سنحصر استعمالها لو أردنا، في الحالات التي يكون فيها النص صورة.


هذه مثلا صورة من المصحف الإلكتروني الذي صدر في 1987

من انتاج شركة العالمية لكمبيوتر صخر، النسخة العربية من MSX.



هذا المصحف الإلكتروني كان بالفعل انجازا فريدا من نوعه في وقته من الناحية التقنية،

و ذلك عائد لعدة جوانب من بينها حجم الكارتردج الذي مع أنه ضخم بالنسبة للجهاز (1024 كيلوبايت)

إلا أنه ضيق و لا يسع النص القرآني كله، فتوصل مبرمجو شركة صخر إلى طريقة لضغط النص

لتقليل حجمه و أظن المصطلح الأفضل لكلمة "ضغط" هو "الاختزال" على حد وصف المبرمجين،

تمثل في تخزين جل الكلمات بجذورها (3 حروف) و تصريفها

و هو حل عبقري مصمم على المقاس للغة العربية للإستفادة من خصائصها.


لكن أبرز ناحية تهمنا هنا في هذا الدرس هي الخط.

إذ أنه خط "عثماني" حسب تسمية المبرمجين،

متغير العرض، كبير و أقصى ارتفاعه 24 بيكسل استخدم منها 18.

و الأهم بالنسبة لنا أنه خط مشكول و يشمل أغلب أنواع التشكيل المستخدمة.

و نظرا لكبر حجم الخط كان التشكيل نفسه كبيرا و محافظا على كامل جماليته،

و كل تشكيل بأبعاد 8×8 بيكسل:



لكن في غالب الأحيان فيما سنتعامل معه، ما نحتاج إليه لن يتعدى الحركات الدارجة في الاستعمال.

بالطبع، فإن إضافة هذه الرموز أمر غير مطروح في حال ما كانت نصوص اللعبة ليس بها حيز كاف لها.

لكن ماذا لو أردنا فعل ذلك؟

خاصة مع العلم أن جل الألعاب لا تحتوي دعما للعربية، و بالأخص دعما فيه تركيب للتشكيل فوق الحروف.


الحل الأول – رموز جاهزة للحروف المشكّلة


في أول عهد أبل بالكمبيوترات، ظهرت عندهم مشكلة الحروف اللاتينية التي فوقها شَكلة (أو طفرة) accent.

و هذه أضافتها اللغات الأوروبية فوق (أو تحت) بعض الحروف الانكليزية العادية، و نطقها مختلف.

مثلا لدينا النبرة الحادة é و النبرة الغليظة è و المدة المعقوفة ê و النقطتان ë و السديلا ç و التلدة ñ و غيرها الكثير.

(ملاحظة: هناك شكلات في الأبجدية العربية أيضا، مثل حرف الطاء الصغير و السطر فوق الكاف،

و حصل لها بالضبط في الحواسيب نفس ما حصل للأوروبية، لكنها حصرية للفارسية و الأردية)


الشكلات الأوروبية هي الأجزاء الصغيرة فوق الحروف.

مع أنه في البداية صممت لها أبل رموزا منفصلة،

تسمح بدمجها مع أي حرف في الأبجدية (مثل التشكيل العربي الآن – الفتحة الضمة الخ)،

إلا أنه في النهاية تم عمل رموز جاهزة مسبقا أدمجت فيها هذه الشكلات مع الحروف اللاتينية.

مثلما أدمجت المدة (~) مع حرف الألف في العربية في الرمز الجاهز (آ).

السبب كان أن هذه الحروف قليلة و يمكن حصر جميع الإمكانيات بسهولة،

اضافة إلى كون وضع الشكلات ممنوع ما عدا لعدد قليل من الحروف التي تقبلها، و ذلك حسب اللغة.


لم لا نقوم إذن بعمل رموز جاهزة مسبقا بها الحرف العربي و التشكيل فوقه؟


العائق الرئيسي هو طبعا العدد الهائل من الامكانيات المختلفة.


لنقل أن لدينا خطا عربيا به 60 رمزا لمختلف المحارف.

و نريد عمل نسخ من جميع رموز هذا الخط بمختلف أنواع التشكيل:

بسكون، بفتحة، بفتحة مع شدة، بضمة، بضمة مع شدة، بكسرة، بكسرة مع شدة.

7 حالات. 420 رمز مختلف.

نضيف حالات التنوين التي لن تكون فوق جميع أشكال الحروف بل فقط التي آخر الكلمة،

أي تنوين الضمة و تنوين الكسرة. نقول تقريبا 35×2 أي 70 رمزا اضافيا.

تنوين الفتحة يكون دائما متبوعا بألف (2 حالات)، إلا في حالة التاء المربوطة (2 حالات) و الهمزة على السطر (حالة).

لنتحايل على العدد، نضع حركة تنوين الفتحة جزءا من رمز الألف. و هكذا لدينا 5 رموز اضافية.

صار لدينا 60 رمزا أصليا و حوالي 500 رمزا مشكولا.


(طبعا لو أردنا اضافة حالات الشدة فوق التنوين، و لو أن هذا غير واقعي نظرا لصغر الخط، نضيف 75 رمزا آخر)



أين نضع كل هذا؟

بالطبع يجب أن تكون اللعبة تحتوي خطا كبيرا مثل الكانجي مثلا.

ما يعني أن هذه الطريقة ستكون أفضل مع ألعاب الدي اس، مع أنها قد تنجح في عدة حالات أخرى.


و أن تكون مستعدا على هذا الأساس لاستعمال حروف تستهلك ضعف الحرف العادي،

و الأهم، أن نغير اللعبة لتسمح لنا بوضع نص أطول من النص الأصلي. هذا أمر نطمح لرؤيته في الدرس القادم.


هذا لا يمنع أن هذه الطريقة مستحيلة في الألعاب بالخطوط الصغيرة،

لو بقيت لك بعض الحروف غير المستعملة و أردت تخصيصها لبعض الحروف المشكلة.

مثلا، في أول ترجمة للعبة زلدا استيقاظ لينك (و هي ترجمة لم تنشر)،

تم تخصيص 3 رموز لتنوين الفتحة: [ ـًـا ] [ ًا ] [ ً ]

و رغم أن هذا قد يبدو أمرا غير كبير، إلا أنه أضاف جمالية لا بأس بها للعبة،

و كنت أتمنى لو رأت ترجمة عربية النور بهذه الفكرة.


الحل الثاني – التشكيل رمزا منفصلا


لو تتذكرون الباب الرابع من الدرس، حيث تحدثنا عن التنازلات التي يجب أن نقوم بها لوضع الأبجدية العربية...

لقد ذكرنا طريقة تقطيع الحرف الى أجزاء رئيسية،

و ذيل يمكن أن يضاف لتكوين شكل الحرف آخر الكلمة.


ذلك المقترح كان من فكرة الأخضر غزال من المغرب في 1958 لمجمع اللغة العربية كفكرة لإصلاح المطابع العربية

و ملائمة الخط العربي للعوائق التقنية التي تحول أمام استعماله في الحواسيب.

و رغم أنه كتب له أن يجابه بالرفض و النكران حينئذ (و لم يكن الوحيد، إذ أن المجمع رفض تقريبا أغلب المقترحات)،

إلا أن الحكومة المغربية احتضنت مقترحه نظرا أنها كانت لديها مشاريع هيئات تعريب بعد فترات الاستعمار.



و بفضل هذه الجهود كان ذلك الخط من أوائل الخطوط العربية في عصر الكمبيوتر

و خطوة ضرورية لإدخال العربية الحواسيب، حتى رغم كون الفكرة لا تلائم سوى نوع معين من الخطوط،

و مازال "جزء الذيل" لديه ترميز في اليونيكود في جدول المحارف العربية (أشكال التقديم ب)، بيد أنه خرج عن الاستعمال.


(هذه المعلومات و المزيد مأخوذة من مدونة 29 حرف، لمن يريد القراءة أكثر عن هذه المقترحات.)


لكن لم تكن تلك الفكرة الوحيدة التي أتى بها هذا المقترح.

إذ أنه قدم طريقة فريدة من نوعها تحل مشكل التشكيل فوق الحروف العربية،

في مطابع لا تحتمل سوى اضافة الحروف وراء بعضها (مثل البرمجة الموجودة في غالب برامج و ألعاب الكمبيوتر).


أكيد تعرفون رمز الكشيدة، و هو الرمز (ــ) الذي يستخدم أحيانا للتطويل بين الحروف العربية. هـــــــــكذا.

هذا الرمز جعل لتنسيق الفقرات و تقليدا للخط العربي المرسوم باليد،

بيد أن معالجات النص لا ترسمه منحنيا كما يجب أن يكون و النتيجة بشعة في كثير من الأحيان.


المقترح المذكور فكرته أن يتم تخصيص رموز عرضها صغير جدا تكون فيها الحركات.

و هذه الرموز تكون على نسختين.


طبعا، هناك حالات لن تستعمل، مثل تنوين الضمة و الكسرة (سواء منفردا أو مع شدة) الذي يكون متصلا بما بعده،

نظرا أن التنوين لا يكون إلا في آخر الكلمة. و هناك الحالات التي تستبعد بسبب صغر حجم الخط، و ما إلى ذلك.



هذه الفكرة كتب لها أن تنجح و تطبق في أوائل البرامج المعربة في الثمانينات،

على يد مبرمجي شركة العالمية من الكويت، في النسخة المعربة من كمبيوتر MSX الملقبة بكمبيوتر "صخر".

و هي تعمل بالضبط على نفس الأساس، ما عدا بعض النواحي:

لكن بحكم استعمال خط ثابت العرض في كمبيوتر صخر كانت هذه الأجزاء كلها بعرض كبير يساوي عرض جميع الحروف.



و بالطبع، لو كان عمل هذه الطريقة مع روم لكمبيوتر صخر بعرض ثابت (8 بيكسل) يعطي نتيجة مقبولة كهذه،

يمكننا أن نتصور أن استخدامها مع ألعاب خطها متغير العرض، سيعطينا نتائج أفضل و أفضل.

حيث بالإمكان وضع عرض صغير جدا للتشكيل.

و في حال ما كانت الحروف يمكن أن تتداخل (و هذا لو استخدم المبرمجون "أو" OR في برمجة رسم الخط)

يمكن وضع عرض صفر للتشكيل بحيث يتداخل مع الحرف التالي أو السابق و يرسم في نفس المكان.


هذه الطريقة طبقها صديقنا عادل في تعريبه للفاير امبلم 6 (الذي مازال لم ينشر بعد)،

و الفارق بينها و باقي الترجمات واضح للعيان من أول نظرة:



الحل الثالث – استغلال برمجة تظهر نصا صغيرا فوق الحروف، لو وجدت


كما رأينا في درس الألعاب اليابانية، فهناك حوالي 20 رمز كانا لديه نسخة رسم فوقه رمز صغير، إما (") أو (°)،

و هذه الرموز هي الداكوتن. لكن في عصر النيس، لم تكن ترسم هذه الرموز الصغيرة في الحرف مباشرة،

و ذلك لسببين:


الحل كان تخصيص رمزين منفصلين للداكوتن يرسمان فوق الرمز الياباني.

هناك قيمة بايت هيكس معينة تكون مخصصة لكل واحد من الاثنين.

عندما نكتب حرفا أو رمزا عاديا، ثم نكتب بعده مباشرة هذا البايت، يرسم الداكوتن فوق الحرف السابق.


في حالات أخرى، يكون بايت الداكوتن يرسم بعد الحرف المقصود.

أو يكون جزءا من قواميس ضغط النصوص (سنرى هذا لاحقا).
أو لا يكون في متن النص أصلا، بل هناك تعليمات قبل النص بالهيكس فيها مواقع الداكوتن.


على سبيل المثال، نأخذ لعبة Utsurun Desu على الفاميكوم،

و هي لعبة في منتهى الغرابة صدرت في اليابان فقط.

قمت بعمل التيبل الياباني لجميع الرموز المستعملة في اللعبة تقريبا.

لننظر الى نص استعمل فيه الداكوتن، في اللعبة و في برنامج الهيكس:



للتوضيح، تم تلوين الرموز التي سنركز عليها بلون آخر. هي تظهر بالأبيض في الأصل.

في الهيكس، رمز الداكوتن (") هو 5D و اذا وضع فإن اللعبة ترسمه فوق الرمز الذي سبقه.



في أعلى الشاشة على اليمين يمكن ملاحظة نص

كتب فيه よした゛の こころ (قلب/روح يوشيدا، يوشيدا هذا هو مؤلف هذه المانغا)

لكن الكانا كتب و الداكوتن أمامه (و كأنه رمز عادي) و ليس فوقه،

و ذلك بسبب ضيق الحيز فوق الحروف في تلك النافذة ربما.


هذه الطرق لديها عيب أنه لكتابة هذه الرموز بالداكوتن، تحتاج لرمزين اثنين ما يضيع الحيز المكاني.

لذلك فكر البعض في تخصيص قيم معينة، بحيث تكتب رمزا واحدا و هو ينادي على الرمزين.

و من أبرز الأمثلة النسخ اليابانية من ألعاب الفاينال فانتازي على النيس.


هاتان الطريقتان شائعتان بشكل كبير في ألعاب النيس اليابانية،

و بالطبع في عدد هام من النسخ الانكليزية المترجمة عنها التي لا تستعملها

لكن لا تبذل مجهودا في حذفها: تترجم النص كله للانكليزية و تغير الخط لكي لا يبقى به حرف واحد ياباني،

لكن البرمجة بحد ذاتها للداكوتن مازالت تعمل.


و في الواقع فكر بعض المترجمين الأوروبيين الرسميين في استغلالها للشكلات الأوروبية فوق حروف نصوصهم.

مثلا، في النسخة الرسمية للسوبر نيس من لعبة علاء الدين باللغة الإسبانية:




نلاحظ هنا أن الشكلة (أو الداكوتن في النسخة اليابانية من علاء الدين) تطبق على الحرف الذي بعدها هنا.

و البرمجة أعيد استعمالها لكتابة الرموز الاسبانية Ú و Ñ

و طبعا الشكلة يمكننا لو غيرنا النص استعمالها فوق أي حرف نريد.


و قد استعملت في عدة ترجمات عربية لألعاب النيس لوضع التشكيل فوق الحروف.

لكن بما أنه لديها نوعان من الداكوتن فقط، لا يمكن وضع كل الحركات العربية.

(و لا يمكن وضع الكسرة لأنها في الأسفل)


مثلا، هناك ترجمات لألعاب الكابتن ماجد وضعت تنوين الفتح، و استعملت الهانداكوتن (°) دون تغيير للسكون.

و ترجمة عادل للفاير امبلم 1 وضعت تنوين الفتح و الشدة.

طبعا، يخطر للبال أن نغير البرمجة لنتيح أكثر حركات، لكن هذا أمر سنفكر به لاحقا.


هناك طريقة أخرى ينتهجها المبرمجون لوضع الداكوتن، لكنها أقل استعمالا.

و تتمثل في وضع جدول قبل النص فيه مكان و نوع الداكوتن.

بسبب مشكل المساحة، علينا أولا نقل هذا الجدول لمكان آخر قبل تعديله (ما يجعل التعامل معه أصعب)،

نظرا أن عدد الداكوتن في الجملة و الجدول لن يكون بالضرورة نفس عدد الحركات في النص المترجم.


على سبيل المثال، من نفس اللعبة السابقة لدينا هذه الشاشة.



"المستوى 2 – كاواوسو كون"

و الداكوتن (") مرسوم فوق الكانا و هو الرمز الرابع.

رقم المستوى يتغير حسب التقدم في اللعبة،

و هو يكتب الرمز السابع بعد كلمة مستوى すてーじ (لو احتسبنا الفراغ و الداكوتن).


في الهيكس، تظهر نصوص هذا الجزء هكذا – حيث يمكن بوضوح رؤية الداكوتن (") و مكانه (04)،

مباشرة قبل جزء النص (すてーし).



سمعت أن هذه الطريقة المقلقة في تغييرها موجودة و العياذ بالله

في بعض الألعاب اليابانية على السوبر فاميكوم أيضا.

و في تلك الحالات يكون من الافضل اللجوء للطرق الأخرى لو أردنا التشكيل العربي.


عدا هذا كله، هناك نظام آخر لكتابة رموز فوق الحروف، و هو الفوريغانا.

كما رأينا في النبذة البسيطة عن اللغة اليابانية في الباب الخامس،

فاليابانية عدا "حروفها الأبجدية" الكانا،

فهي تحتوي رموزا مقتبسة عن الصينية تدعى الكانجي كلها تحفظ عن ظهر قلب.

و لمساعدة الأطفال يتم وضع كتابة بالخط الصغير فوق كل كانجي، فيها طريقة النطق باستعمال الكانا.


مثلا، في حالة لعبة Ni no Kuni للنينتندو دي اس، في هذا الحوار مثلا،

فوق الكانجي من 見せたい (يريد أن يريه) تم وضع النطق في الفوريغانا.



و في ملف النص داخل ملفات اللعبة، كتب هذا المقطع هكذا:

じゃあ おばさんが<:>ってた/<:>せたいものって!


في حالة هذه اللعبة بالذات، تم كتابة الفوريغانا بالصيغة <كانجي:فوريغانا>

لكن هذا لا يمنع أن هناك ألعابا أخرى تخزن الفوريغانا في النصوص بطرق أخرى

مثل ألعاب النينتندو مثلا التي تضع جدولا للفوريغانا في أول ملف النص في حالة ملفات bmd.


في ألعاب الدي اس التي تستخدم هذه الطريقة،

يمكن إيجاد ملف خط إسمه ruby أو شيء كهذا مخصص لهذه الكانا الصغيرة فوق الحروف:



يمكننا تغيير بعض هذه الرموز التي تظهر فوق الحروف،

لنضع مكانها تشكيل الحروف، ثم نغير النص لنظهر هذه الرموز فوق الحروف.

النتيجة قد تكون غير مثالية، لكن ذلك يختلف حسب الخط و ارتفاعه.



تصميم الخط العربي


هذا الأمر مهم جدا، نظرا أنه في كثير من الحالات يكون الخط بشعا لدرجة تجعل التعريب منفرا للنفوس

و النص صعب القراءة و حينها يذهب كل الجهد المبذول فيه عبثا و هدرا.


لا أظنني سأعطي الكثير من الأمثلة عن تعريبات بخطوط رديئة تفاديا لإحراج جميع الأطراف (لأن هذا ليس هدفي)

لكن ربما تتذكرون مثلا تعريب الكابتن ماجد 2 على الفاميكوم (الذي هناك من يقول أنه أول تعريب للعبة فيديو،

و هذا غير صحيح على فكرة لأن هناك تعريبات على كمبيوتر صخر أو MSX سبقته لألعاب مثل بومبرمان).

الحروف المنفصلة غير المستوية كانت من بين مشاكله العديدة لدرجة أن هناك باتش صدر له هدفه الأساسي اصلاح الخط.


السبب الأساسي وراء بشاعة الكثير من الخطوط التي نراها،

هو عدم احترام خصوصيات الخط العربي.

هذه الخصوصيات قد تبدو بديهية لنا كعرب تعلمنا كيف نرسم الحروف في المدارس، لكن التذكير بها يظل أمرا مهما.


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

إلى أن أغواه المال و الجاه و السلطة و فسدت طباعه، فكانت نهايته مأساوية.

إذ أن خصومه حاكوا له وشاية بأنه يتعامل مع خصوم السلطان و أقنعوه بقطع يده و تجريده من الوزارة،

و بعدها ندم و أتى له بالأطباء. ربط ابن مقلة قلما بذراعه و واصل رسم خطوط لا تقل جمالا عن سابقتها.

لكنه لم ينس الوزارة و بعد أن يئس من رضا السلطان قام بالفعل بمراسلة خصومه تقربا لهم،

فقاد نفسه لميتة بائسة. لكن فنه لم يمت، و مازال يؤثر على طريقتنا لكتابة الحروف العربية إلى اليوم.


وضع إبن مقلة ثلاثة قواعد أساسية للخط العربي و هي:


القاعدة الأولى – نظام الدوائر

لو أخذنا الدائرة التي يكون قطرها هو حرف الألف، مع تقسيمها لأربعة أجزاء،

فإن الشكل العام لباقي الحروف يتبع تلك الدائرة.


هذه صورة من خط الثلث طبقت عليها قاعدة نظام الدوائر،

و فيه الحروف غير معجمة (أي بدون نقاط فوق الحروف) نظرا أنه لو استبعدنا النقاط من اعتبارنا

يبقى لنا فقط 18 حرفا (دون احساب ء، لا): ا ب ح د ر س ص ط ع ف ق ك ل م ن ه و ى



و هذا رسم بياني للشكل العام للحروف.

قبل اضافة التفاصيل للحصول على الرسم في الأعلى، انطلقنا من هنا:



هناك أمر وجب التنويه إليه هنا:

بالطبع، نظرا لإعتبارات تقنية، قد لا يتيسر احترام هذه القواعد كلها.


القاعدة الثانية – نظام النقط

الخط العربي كان يرسم بقلم رأسه خط مستوي كان يحدد سمك خط الحرف المستعمل.

اعتمد إبن مقلة النقطة التي ترسم بهذا القلم وحدة قيس لأبعاد مختلف أنواع الخطوط تحدد عرضها و انحناءها.

هذه النقطة كانت معينا () و كالعادة، كانت الألف هي التي تحدد كل شيء.


بما أن الخطوط العربية متنوعة (النسخ، الثلث، الديواني، الرقعة، الفارسي، المغربي، الكوفي...)

فإن كل خط كان لديه قواعده و عدد النقاط لكل حرف، و كل خط كان لديه بالتالي "ميزان".


في خط الثلث مثلا، كانت الألف طويلة (7 نقاط):


خط النسخ كان ارتفاع الألف فيه 5 نقاط:


خط الرقعة المرسل، و هو خط حديث كان يعادل خط اليد السريع،

ضبط له الخطاط جلال أمين صالح قواعد تحفظ طريقة رسمه، و الألف فيه من 3 إلى 4 نقاط:


أما خط "النستعليق" الفارسي، فكانت الألف فيه قصيرة (3 نقاط):



هناك أيضا الخط الكوفي، و لكنه يختلف عن الخطوط السابقة من ناحية مهمة.

هو أنه خط هندسي، و النقطة فيه ليست معينا () بل مربعا ().

و بالطبع، لم تكن مصادفة كون هذا النمط من الخط بالذات

هو المفضل عند مصممي خطوط الكمبيوتر المعربة،

نظرا أنه يناسب تماما وحدة الرسم في الكمبيوتر و هي البيكسل.




القاعدة الثالثة – نظام التشابه

جميع الحروف العربية يمكن تفكيكها و بناءها من أجزاء أساسية، و هي:


على سبيل المثال، يتم الحرص على تشابه هذه الأجزاء من الحروف:

إلخ...


كما يمكننا أن نرى مجموعات تتشابه من ناحية الخصائص.


الحيز العمودي الذي تكتب فيه الحروف هو بين "السماء" (قمة الألف) و "الأرض" (قاع ع).

لو نقسم ذلك الحيز إلى 3 أجزاء، و يكون سطر الكتابة "سطر القاعدة" هو السطر فوق الطابق السفلي،

نستطيع أن نرى أن الحروف أنواع حسب تشابه كتابتها فوق "سطر القاعدة" و أيها تنزل تحته.


(طبعا بعض هذا يتغير حسب الخط)


عند تصميم الخطوط الالكترونية للغة العربية، وجب مراعاة هذه القواعد الثلاثة مهما كان الثمن.

و المعايير الأربعة المهمة هي:


هذه القواعد مهمة لنا جدا عند تصميم خط البيكسل للألعاب، و ذلك لثلاثة أسباب:


أما كيف نختار هذه المعايير، فذلك يكون بالاستعانة بقواعد إبن مقلة، بعد اختيار نوع الخط.

مثلا، لو اخترنا خط النسخ للحصول على خط انسيابي يشبه خط اليد، فستكون لنا عدة ارتفاعات ثانوية

قد تصل إلى 5 ارتفاعات للأسنان، و ارتفاعين للأرض (ح ع منخفضة أكثر من س ص).



أما الخط الكوفي فهو هندسي أكثر، و يتيح التبسيط أكثر في هذه المعايير،

ليصبح لدينا ارتفاع ثانوي واحد للأسنان و الحلقات معا (مثل ارتفاع x-height في الخطوط الانكليزية)

و ارتفاع واحد للأرض بالنسبة للحروف النازلة تحت السطر.

و لقربه من المعايير الانكليزية لو طوع لها هكذا، نجد الخط الكوفي ذا رواج لدى مصممي خطوط الكمبيوتر،

و قد يكون هو أسهل الخطوط في التعامل معها في ميداننا هذا.



عدا هذا.

عندما نختار نوع الخط نفكر أولا في استعماله الصحيح.

على سبيل المثال، الخطوط الكثيرة التزويق أو الثخينة مثل الخط الديواني أو عديد أنواع الكوفي

قد تناسب عناوين و سطور من بضع كلمات و ليس نصوصا طويلة (حيث قد يكون خط النسخ مناسبا أكثر).

أفضل شيء يظل بالطبع هو التجربة، و اختبار الخط في اللعبة مع بعض النصوص.


عرض الحروف

الخط العربي هو خط متغير العرض لا تتساوى كل حروفه.

و قد خددت أول المطابع العربية 3 أنواع من الحروف:


لهذا وجب مراعاة هذه الخاصية في الحسبان عند تصميم خطنا.

لو كنا نتعامل مع لعبة عرض حروفها ثابت و نريد خطا ثابت العرض monospaced،

يمكننا أن نقسم الحروف العريضة إلى جزئين بما أنها تشغل حوالي ضعف الحروف المتوسطة.


ما لا يجب فعله

هناك من يأخذ خطا لاتينيا و يقتلع أجزاء من حروفه و يقلبها إلى أن يتحصل على حروف عربية.

طبعا، للناظر من أول وهلة، هناك تشابه في أشكال الحروف...

مثلا حرف l (L) الانكليزي يصبح ا (ألف) أو لـ (لام) العربية، حرف o الانكليزي يصبح مـ (ميم) العربية،

حرف i (I) أو u (U) الانكليزي يصبح جزءا من الباء العربية و أخواتها...



و على هذا الأساس، يتم تركيب خط عربي هجين من أشلاء الحروف اللاتينية،

و كثيرا ما يكون ذلك حتى من دون تنظيفها من السريف serif و هي الأظافر فوق بعض الحروف الانكليزية

و التي لا مكان لها في العربية مع كثير من الحروف التي تطمس معالمها

(ما عدا ربما الأجزاء العمودية مثل ا، ط، و ربما لو تمسكنا بالفكرة أول أسنان الحروف بـ سـ فقط اذا لم ترتبط بما سبقها).


هذا الخط لا يحترم خصوصيات الخط العربي التي ذكرناها منذ قليل.

أهمية القواعد المذكورة أعلاه ندركها حقا عندما نرى خطا يفتقد إليها، و هو مستعمل مع نصوص.

إذ أن النتيجة تكون طلاسم غير قابلة للقراءة، أو بشعة في أفضل الأحوال.


تعديل الخطوط اللاتينية لاشتقاق حروف عربية منها... أمر ممكن.

لكن وجب تعديلها لاحترام الضوابط المذكورة كي تكون النتيجة رائقة للعين و يمكن قراءة نصوص طويلة بها.


بعض الحيل لوضع الخطوط في الروم


مقاومة التعرج Anti-Aliasing

هناك كما نعلم نوعان من الرسوم على الكمبيوتر:

الرسوم المتجهية (الفكتور) و هي التي مهما كبرناها تحافظ على شكلها بدون تشويش،

لأنها مجموعة من الأسطر الهندسية الرابطة بين نقاط.


و هناك الرسوم النقطية (أو البيتماب) و هي التي عندما نكبرها نصبع نرى مجموعة من البيكسل المربعة.

السبب هو أن الرسوم النقطية هي جدول من نقاط البيكسل و كل نقطة لديها لون.


سنهتم الآن بالرسوم النقطية (البيتماب bitmap) بما أنها التي نجدها في أغلب ملفات الصور المتداولة

و بالطبع في البرامج و الألعاب بصفة عامة (ما عدا طبعا تلك التي تستخدم خطوط ttf و otf و هي رسوم متجهية تكبر

بالحفاظ على تفاصيلها، لو لاحظتم من تجربتكم تكبير أي نص في برنامج كتابة نصوص على الكمبيوتر).


في البرامج التي تظهر الرسوم النقطية يوجد ما يسمى بمقاومة التعرج Anti-Aliasing.

لو تلاحظون من الرسم أسفله، فنقط البيكسل في الصورة الأصلية (بالتعرج) تعطي حوافا حادة ظاهرة للعين.

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

و عندما نقوم بتكبير أو تصغير صورة في برامج الصور النقطية (مثل الفوتوشوب، الرسام Paint، GIMP، الخ..)

فتلك الألوان الإضافية تبقى بصفة دائمة في الصورة.



هذا كله كلام جميل.

لكن لو كنت تصمم خط بيكسل لأجل لعبة فمقاومة التعرج تصبح عدوك اللدود.

و السبب – أن هناك حدا على الألوان المسموح بها في ملفات اللعبة.

لو كانت اللعبة تسمح لك باللون الرمادي، يمكنك استعمال اللون الرمادي لتلك "الحواف الناعمة".


لكن لو كان لديك الحق فقط في الأبيض و الأسود في اللعبة...

و تريد أن تعدل في برامج الرسوم على خط أو صورة من اختيارك بهذه الشروط، وجب التخلص من مقاومة التعرج:


تحت Proprieties اختر وضع الأبيض و الأسود. (قد يتلف التفاصيل)

Preferences/General/Image Interpolation/Nearest Neighbour

Image/Scale Image/Quality :Interpolation/None


أيضا، عند استخدام الفوتوشوب أو GIMP لتعديل أي صورة بغية اعادة ادخالها للعبة ما، من الأفضل عمل التالي:


حتى لو اضطررنا للتعامل مع رسوم و لدينا مشكلة مقاومة التعرج، فاستعمال ألوان معينة للخلفية

مثل اللون الوردي الفاقع أو الأخضر الليموني يقلل من حدة تأثير مقاومة التعرج.


الحروف الكبيرة جدا

لو كان لدينا حروف يكون فيها الإرتفاع الكلي صغيرا و لا يسعها كلها ماذا نفعل؟

مثلا، لو كانت لدينا الألف المقصورة و كان بطنها يلامس بالفعل أرض التايل.

كيف نضيف لها النقاط في الأسفل لنحصل على الياء؟


لا نستطيع رفعها – هناك نقطة التقاء بين الحروف (بالأحمر في الصورة) تكون على نفس المستوى لكل الحروف،

و إلا ظهرت على غير نفس الإستقامة و كانت النتيجة مثل خط نسخة عدنان من الكابتن ماجد 2.


يمكننا أن نغير غلظ الخط، أو تصميمه، لكن هناك حل آخر.

و هو القيام بقلب الحرف إلى اليمين بحوالي زاوية 20 درجة.

أو بإمالة الرسم، إما بواسطة خاصية Transformation/Warp في الفوتوشوب مع اختيار Perspective

و بالطبع يكون هذا بعد الغاء مقاومة التعرج Anti-Aliasing،

و اما حتى في الرسام Paint باختيار خاصية التكبير، ثم الإمالة العمودية بقيمة -20 مثلا (القيم السلبية تميل لليمين).


نقوم بإضافة أي بيكسل ناقص لتحسين شكل الرسم، و نتحصل على رسم جديد للحرف يسمح لنا بإضافة النقاط:


نستطيع أيضا ازاحة النقط و الهمزات للأمام قليلا، مثلا: و ...


يجب التنبه لأمر آخر – هل اللعبة تظهر الأسطر مباشرة فوق بعضها، أم تترك مسافة بين الأسطر؟

لأنه لو كانت الأسطر تظهر دون فراغات بينها، فبعض أنواع الخطوط لا تناسبها.


هذا الخط الأصلي للعبة Clash In Demonhead بنسختها الإنكليزية، و هو بأبعاد 8×8 بيكسل،

إلا أنه في الواقع يستعمل فقط 7 بيكسل من ارتفاعه، لأن السطور تظهر مباشرة فوق بعضها:




لو استخدمنا خطا يستعمل 8 بيكسل كاملة من هذا الارتفاع في هذه اللعبة بالذات،

فسوف تتلامس الأجزاء العلوية و السفلية من الحروف و النتيجة قد لا تكون حسنة على الاطلاق.

هذا الخط قد يكون مناسبا أحيانا، لكن ليس في هذه الحالة بالذات.




لهذا السبب يجب أن نطرح بيكسل واحد من الارتفاع الكلي للتايل و نتركه فراغا لا نرسم فيه (مثل أول خط أعلاه)،

في حال ما لم توجد مسافة بين الأسطر كما في حالتنا هذه.


الأمر أصعب مع الحروف العربية في تايلات أبعاد 8×8 بيكسل، مع أن هناك شركات مثل صخر تمكنت من ذلك.

و عديد المبرمجين اليابانيين واجهوا نفس المشكلة بالضبط لنفس الأسباب.

الحل مع هذه الخطوط كان في وضع سطر فارغ بين كل سطري كتابة، أثناء كتابة النص.

و هذه الطريقة كانت شائعة جدا بشكل كبير.



الخطوط المفككة

بسبب ضيق سعة الكارت، كثيرا ما وجد المبرمجون أنفسهم يفتقرون للحيز الكافي لوضع جميع الحروف،

ففكر البعض منهم في حل لهذه المسألة.

إذ أن هناك حروفا و رموزا تشترك في نفس الأجزاء، مثلا:


لذلك و في حالة الخطوط بأحجام 8×16 بيكسل، التي كثيرا ما تكون مخزنة على شكل تايلين 8×8،

تم تخزين "الجزء" الذي يتكرر مرة واحدة فقط، ليستعمل مع الأجزاء الأخرى لتكوين جميع الرموز.


على سبيل المثال، هذا خط انكليزي مخزن بهذه الطريقة:



التايل الثاني يصلح لعدة استعمالات:

+ = G

+ = C

+ = O

+ = Q

+ = 2

+ = 8

+ = 9

+ = ؟

لدينا 8 رموز كان بالإمكان أن تخزن على 16 تايلات،

لكن بهذه الطريقة استعملنا فقط 9 تايلات، أي حوالي نصف هذا العدد!

و الأمر لا يتوقف هنا.

حتى الجزء السفلي من O استخدم في الحرف U بمجرد اضافة الجزء

الذي هو نفسه استخدم لتكوين الحروف V و W لو جمع مع الأجزاء ...


مثال آخر لكن هذه المرة باللغة العربية،

مأخوذ من برامج كمبيوتر صخر، و هذا من برنامج من انتاج شركة البرق:



هذا الخط مخزن تقريبا على ارتفاع 11 بيكسل لذلك وجب استعمال 2 تايل لكل حرف.

مع أن الطريقة تحتمل التحسين (برفع الحروف قليلا) إلا أنه لا بأس بها.

نلاحظ أن:

إلخ.


اللغة العربية تلائم هذا النوع من الاختزال في الخط أكثر من غيرها من اللغات،

لأن هناك عددا كبيرا من الحروف العربية تتشابه في نفس الرسم و لا تختلف إلا بالإعجام، أي النقاط على الحروف.


و في الواقع كان القدماء من العرب يؤكدون عند ذكر اسم الحرف على وصف النقاط فوقه،

فلا يكتفون بالقول "زاي" بل يقولون "زاي معجمة" (أي منقوطة)، و يقولون "راء مهملة" (أي غير منقوطة).

و مع بعض الحروف يكون وصف النقاط بالتفصيل بذكر عددها و مكانها:

"باء موحدة فوقية"، "تاء مثناة فوقية"، "ثاء مثلثة فوقية"، "ياء مثناة تحتية"...


الحل إذن هو استغلال هذه البرمجة أينما اعترضتنا لتخزين الحروف العربية بنجاعة أكبر.

على سبيل المثال:



الحرف خزن معه تايل منفرد آخر يستعمل جزءا علويا له ليصبح ، و في النسخة العربية من الخط

تم استغلال هذه الخاصية، فخزننا (ت) في التايل الرئيسي،

و وضعنا في الجزء الثالث ثلاثة نقاط كي يعطينا (ث).

و هكذا دواليك... بهذه الطريقة خط عربي يصل إلى 70 رمزا تمكننا من تخزينه داخل خط ياباني.


هناك عديد الحيل الأخرى المتعلقة بالنقاط فوق الحروف يمكننا تطبيقها،

خاصة لو كان عدد الحروف في الخط قليلا جدا.

أحد الأفكار الذكية التي توصل لها عادل في ترجمة الفاير امبلم 6،

كانت استخدام البرمجة متغيرة العرض لكتابة بعض الرموز فوق بعضها (بوضع 0 مكان عرض بعض الحروف).

عدا كون هذه الطريقة تنفع لتشكيل الحروف،

فهي تنفع أيضا لتخزين النقط أجزاء منفصلة يمكن وضعها فوق جميع الحروف.

و باستعمالها مع طريقة تفكيك الخط بتركيب بعض الحروف من أجزاء أفقية تتكرر في عدة حروف،

مثل الجزء في أول (ـج/ـح/ـخ) و (ج/ح/خ)، أو الجزء في آخر (ب/ت/ث/ف) أو الجزء في آخر (س/ش/ص/ض)...

يمكن تقليص عدد الرموز في الخط بقدر لا بأس به (لكن في المقابل سيكون النص أطول قليلا).



هذه نهاية هذا الدرس.

و ان شاء الله في المرة القادمة نتحدث عن موضوع مثير للإهتمام،

و هو يخص الملفات المضغوطة أو المختزلة، و كيفية التعامل معها.

دمتم بأمان الله.