الشبكة العربية لمطوري الألعاب

موهوب  عبدالله الشمّري مشاركة 1

السلام عليكم ,

أعمل حاليا على تطوير مكتبة بسيطة تقول بحل مشكلة اللغة العربية في   opengl , و xna , حيث توجد الان مكتبات (مثل freetype ) أعتمد عليها لرسم الحروف العربية , لكن هذه المكتبة ترسم الحروف العربية مفصلة ,, مثلا لو كتبت

"السلام عليكم"

تكتبها :
ا ل س ل ا م ع ل ي ك م

وعملت مكتبة لحل هذا الاشكال .. ولم ارفعها الى الان ..  أحتاج الى مشورتكم قبل اصدارها .. ويمكن أن أرفعها لو أحببتم ذلك ( لم أنتهي منها بشكل نهائي ) .
------------------------------------------------------------------------------------------------------


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

1- المكتبة التي أقوم بتطويرها , تقوم بقراءة حروف اليونيكود حرف حرف  :
لنفرض أني قرأت الحرف "ب" في الكلمة التالية :

" ربيع "

حرف الباء هنا قيمته هي : 0x0628


 نفحص حالة الحرف باء -  حالة كل حرف ( هل يرتبط بما قبله - يرتبط بما قبله وما بعد - بما بعده - لايرتبط ) , ثم يتم فحص الحرف الذي بعد الحرف الحالي , والحرف الذي قبل الحرف الحالي , وعلى اثرها يتم تغيير القيمة 0x0628 بالقيمة المناسبة :

FE8F    -    ب
FE90    -    ـب
FE91    -    بـ
FE92    -    ـبـ

وهكذا مع باقي الحروف ,

--------------------------------------------------

السؤال :
- هل هذه الطريقة هي المستخدمة في الويندوز مثلا , في الفوتوشوب , الخ ...  حيث  في كل حرف عربي يتم تنفيذ عدة جمل وشروط , ( مع أني استخدم std::map لتسريع هذا الامر ) .. فكيف يتم وبسرعة ربط الحروف العربية وتصييرها في أي برنامج ؟؟؟

- المسألة الاخرى , حاولت أن اقوم بتصير حروف عربية مع انجليزية , وواجهت مشكلة left to right و العكس , حيث تظهر الكلمة بالمقلوب ..

" مكتبة OpenGL لتطوير الالعاب "

من اليمين لليسار :
مكتبة LGnepO لتطوير الالعاب

من اليسار لليمين :
تظهر الحروف العربية مقلوبة ..


فهل علاج المشكلة تكون في مستوى أعلى ,, بحيث يكون المستخدم النهائي يعالج هذه المشكلة .. أم يجب أن أرتب المصفوفة لمراعاة هذه الحالة .. هل فهمتم قصدي ؟

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

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

المعذرة على الاطالة

--
طالب - تخصص نظم معلومات .
--

محترف مشرف عبد اللطيف حاجي علي مشاركة 2

مكتبة لكتابة الحروف العربية 😒 ؟ ممم، دعني أنصحك بالتالي: أهرب... أركض كأن كل وحوش الأرض تلاحقك، ولا تنظر للخلف، إياك أن تنظر للخلف، جميع الذين نظروا للخلف لم يعيشوا ليحكوا أنهم نظروا للخلف.

أمزح فقط 😄 .

لا أخفيك أن الأمر أعقد مما يبدو عليه للوهلة الأولى. لقد كان لي تجربة لا بأس بها في هذا الخصوص. فقد كتبت منذ أربع سنين (أم هل كانت ست سنين؟ لا أذكر 😖 ) مكتبة كاملة اسميتها ISIRFont (International System Independent Raster Font) تدعم الأحرف العربية والانجليزية في آن واحد (مع إمكانية دعم لغات أخرى في إصدارات جديدة) وقد واجهت جميع المشكلات التي ذكرتها بالإضافة لمشكلات أخرى ستواجهها بالتأكيد.

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

المكتبة مؤلفة من جزئين. الأول خاص بـ Windows ويقوم بتحويل خطوط Windows إلى صيغة خاصة بالمكتبة. الصيغة مؤلفة من ملف صورة يحوي جميع الحروف التي تتطلبها المكتبة (العربية و الانكليزية) بجميع أشكالها (العربية منها) بترتيب معين بالإضافة إلى ملف آخر يحوي إحداثيات الزاويتين العليا اليسرى والدنيا اليمنى لكل شكل حرف.

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

بسيط جداً أليس كذلك؟ ليس تماماً 😖

المشكلة تكمن في الحروف العربية حيث يجب أن يكتشف شكل كل حرف بحسب الحرف الذي قبله والذي بعده. هنا قمت باستخدام الطريقة التي ذكرتها. والتي تكمن في تحليل النص واختبار فيما لو يمكن وصل الحرف السابق والتالي بالحرف بالحالي واختيار الشكل المناسب للحرف الحالي بناءً على النتيجة. لاحظ أن المعالجة تتم لكل حرف لوحده. هكذا قمت بحساب أول مجهول: احداثيات شكل الحرف من ملف الصورة.

المشكلة الثانية وهي الأصعب هي حساب احداثيات الحرف على الشاشة. كما قلت فإن المشكلة تظهر عندما تحاول دمج اللغتين معاً. لحل ذلك فقد قمت بمعالجة كل قسم على حدى. أي في النص: "مرحباً بالـ English في لغتنا" أقوم بمعاجلة "مرحباً بالـ " لوحدها ثم “English ” لوحدها وأخيراً أعالج “في لغتنا” لوحدها، دون التعديل على النص الأساسي. المكتبة أيضاً تدعم الكتابة من اليمين لليسار أو اليسار لليمين وقمت بعمل ذلك بحسابات بسيطة لقلب النص.

مشاكل أخرى ستظهر لك عن محاولة دمج الحروف العربية مع الرموز والتي يتصرف بعضها كحروف أنكليزية (كالأرقام بحروف عربية مثلاً) وبعضها الآخر حسب السياق (معظم الرموز الأخرى كذلك).
هناك أيضاً مشاكل الـ word-wrapping وهي أساسية في معظم التطبيقات إن أردت أن تريح المستخدم.

أعتقد أن هذا يلخص معظم ما قمت به 😒 (لقد أضظررت لفتح ملفات أصبح الغبار عليها أطناناً. سأقاضيك لو أصبت بالربو كح كح... 😄 )

هناك مشاكل أخرى لم أتطرق لها في مكتبتي لصعوبتها أو لجهلي المطبق بها آنذاك. أحدها هو الـ kerning حيث أن الحروف (العربية و الإنكليزية) قد تتراكب فوق بعضها لتوفير المساحة فمثلاً جزء من حرف  aفي Wa يرسم تحت الـ W في خط Tahoma
هناك أيضاً تحويلات تضفي جمالية على النص مثل "لا" (عندي شعور ضبابي بأني عالجت هذه الحالة بالذات) و "الله" و "ين" (في بعض الخطوط). باختصار تنتقل هنا من علاج كل حرف على حدى وحساب موقعه إلى حسابات تشمل كافة النص بآن واحد 😲 .

أذكر أني ارتكبت أخطاء عدة (بعضها مضحك 😳 ) لكني لن أذكرها هنا كي لا أشتت تركيزك.

حسناً هذه كانت تجربتي. سأذكر (في مشاركة أخرى تجنباً للإطالة و لأن الوقت تأخر الآن) ما أعتقد أنه الطريقة السليمة لحل هذه المشكلات وإن كانت الأصعب.

تباً يبدو أنني أسهبت بالحديث عن نفس ونسيت الإجابة عن أسئلتك 🙁 .
على كلٍ، نعم هذه (بالإضافة إلى تعقيدات أخرى) هي الطريقة المستخدمة في Windows. أما بالنسبة للسرعة فلا تتسرع أخي الشمري 😨 ، إن عملية مثل التي ذكرتها على تعقديها هي عملية بسيطة جداً لا يكاد يتجاوز زمن تنفيذها ميليات من الثانية لفقرة من الحجم المتوسط ☺ . وهي عمليها لا تحدث 45412549 مرة في الـ frame الواحد بل مرة واحدة كلما أدخل المستخدم حرفاً جديداً (إذا افترضنا أنك تبني نصاً تفاعلياً) أو مرة واحدة في عملية التحميل والتهيئة إذا كان النص ثابتاً. إن ما تفكر به هو الخطأ الذي يقع فيه معظم المبرمجين (premature optimization) أو التحسين السابق لأوانه ☺ . هناك مناطق أخرى من الـ code تحتاج لجهدك أكثر بكثير من هذه (أبدأ بتسريع عمليات الـ lighting مثلاًً 😄 ).

عبد اللطيف حاجي علي
مبرمج
In|Framez

مفصول عمر سمير  مشاركة 3

مرحبأ أعزائي

بالنسبة للكتابة للغة العربية للبرمجة XNA   يجب تنزيل خطوط تدعم  اللغة العربية في البرنامج Microsoft XNA 3.0

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

من الباب الخلفي  اتجه الى أقرب الطرق سهولة XNA
 
لأنني في كتابتي للبرمجة الألعاب XNA  اضفت العربية بسهولة شديدة جداً 

أسئل مجرب ولا تسئل طبيب !!!

OSF متخصص محترف

موهوب  عبدالله الشمّري مشاركة 4

ِشكرا لك أخي عبداللطيف , على هذا السرد الجميل , أحب قراءة الردود المفصلة كثيرا  , ويبدو بالفعل , أني سأهرب ولن أنظر للخلف , في نهاية الموضوع☺

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

هناك أمور افترضتها لتسهيل هذا المشروع :

1- وهي , لايوجد دعم للارقام الهندية ( تطبع كما هي ) - الرموز ( تطبع كما هي )  - الحروف الخاصة مثل "لفظ الجلالة الله " و لآ - ... الخ ( لا نتعامل معها ).
2- المكتبة مفصولة تماما عن graphics , بمعنى أنه يوجد مكتبة تقوم بقراءة الحروف ( من صورة - من ttf - الخ .. ) وتعرف عرض وارتفاع ومكان كل حرف .
3- في الوقت الحالي , نتعامل مع اللغة العربية والانجليزية فقط .

سأتكلم الان عن الفكرة التي أعمل عليها , ثم أناقش المشاكل التي طرحتها , وهي مشاكل "ليست بالسهلة وبعضها لم يخطر على بالي" ,

* المكتبة تتكون من طبقتين two layers وهي :

1- الطبقة الدنيا : تقوم على قاعدة " أرسل نصا - واستقبل نصا " و اختصارها STRT , لاتبحث في wiki , هذا اختصار اخترعته الان .😒

هذه الطبقة .. لاتفهم شيء .. تعطيها نص ( مصفوفة ) , تقوم بفحص النص , وتحويل الحروف العربية الى حروف متصلة وتتجاهل بقية الحروف .. مثلا .

هذه العبارة : "إنGL و DX هما الأفضل"



a[0]='إ'a[1]='ن'...a[11]='ه'a[12]='م'a[13]='ا'...




تصبح :
 
    

a[0]='إ'a[1]='ن'...a[11]='هـ'a[12]='ـمـ'a[13]='ـا'...





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


2- الطبقة العليا : وهي تقوم بما تقوم به الدالة TextOut في Win32 APIs مثلا , حيث تقوم بقراءة الحروف في المصفوفة , حرف حرف , ولكل حرف يتم عمل التالي :
 - طباعة الحرف والتوجه لليمين أو اليسار ( تحت حسابات معيّنة ) ,, مع العلم اننا نعرف ارتفاع وعرض الحرف ..


الطبقة العليا هي المليئة بالمشاكل , اضف إليها المشاكل التي ذكرت , word wrapping و الحروف الخاصة وأمور أخرى ..
لذلك , يمكن اعادة كتابة هذه الطبقة حسب كل تطبيق , ( للألعاب - برامج الصور كالفوتوشوب :-) , برامج التحرير النصية .. الخ ... فيتم تطويرها بشكل متدر<.

- في البداية نريد مكتبة للألعاب , بسيطة , لا تعالج مثير من المشاكل المتقدمة , أذكر أن لعبة Winning eleven الشهيرة .. لا تقوم بعمل word wrapping بطريقة صحيحة _ يتم تجزيء الكلمة على سطرين , دون وضع "-" مثلا , , وذلك في مربعات الحوار التي تظهر ,


بتاريخ 10/ربيع الأول/1430 10:57 م، قطب عبد اللطيف حاجي علي حاجبيه بشدة وهو يقول:

هناك مشاكل أخرى لم أتطرق لها في مكتبتي لصعوبتها أو لجهلي المطبق بها آنذاك. أحدها هو الـ kerning حيث أن الحروف (العربية و الإنكليزية) قد تتراكب فوق بعضها لتوفير المساحة فمثلاً جزء من حرف  aفي Wa يرسم تحت الـ W في خط Tahoma

مشكلة أخرى , لم أفهمها أيضا 😳


- عموما سأحاول الانتهاء من هذه المكتبة في أسرع وقت ممكن , وفي انتظار أي مشاركة تكتبها عن مكتبتك التي قمت بتطويرها ..

وفي 11/ربيع الأول/1430 10:30 ص، أعرب عمر عن رأيه بالموقف كالآتي:

لأنني في كتابتي للبرمجة الألعاب XNA  اضفت العربية بسهولة شديدة جداً 


كيف ؟ , كل ما أعرفه امكانية تحديد مدى الحروف المطلوبة .. ولكن لا اعرف طريقة جاهزة لعمل ربط للحروف العربية ,
عموما .. المشكلة ليست في XNA فقط , بل ستجدها في OpenGL  وفي SDL و أي مكتبة أو أي محرك ألعاب يخطر ببالك  .. لن تجده يدعم العربية بكل تأكيد  ,  لذلك , لانعتمد على Microsoft كثيرا 😏

--
طالب - تخصص نظم معلومات .
--

خبير مشرف مؤيد مارديني مشاركة 5

وفي 09 آذار 2009 07:33 م، أعرب الشمري عن رأيه بالموقف كالآتي:

مشكلة أخرى , لم أفهمها أيضا

أعتقد أن مشكلة الـKerning من المشاكل التي ستتردد عليك كثيراً في كوابيسك في الأيام القادمة 😄 (أمزح بالطبع)

أضيف لك هذه الصورة من مقالة Wikipedia عن الـKerning (على العنوان http://en.wikipedia.org/wiki/Kerning) للتوضيح :



لاحظ أن حرف الـV يبدأ في الحالة الأولى (دون تطبيق الـKerning) بعد أن تنتهي المساحة الأفقي التي يشغلها حرف A، ولكن في الحالة الثانية (مع استخدام الـKerning) فلاحظ أن الحرفين متراكبان، فهما يشتركان بمساحة أفقية يشغلها حرف A من الأسفل وحرف V من الأعلى.
هذه الميزة من ميزات الخطوط المتقدمة والتي يوجد مثلها في العربية، ففي كلمة مثل "أحرف" ستجد أن حرف الفاء متراكب مع حرف الراء، فهو يبدأ من "فوق" حرف الراء وإلى يساره وليس "بعد" أن ينتهي.
إن أردت إضافة مثل هذه الميزة فعليك أن تبحث عن تراكيب الأحرف التي ستقوم برسمها بطريقة مصممة مسبقاً، فمثلاً هناك الراء وأخواتها و بعدها الفاء والقاف في اللغة العربية، و V أو W بعد حرف A في اللغة الإنكليزية، ابحث على الإنترنت فربما سيحالفك الحظ وتجد قائمة بالأحرف العربية التي تصلح لعمل Kerning لها.
أرجو أن تكون قد فهمت الفكرة الآن.

بالمناسبة، في تصنيف Typography terminology في أسفل صفحة Wikipedia العديد من مزايا الخطوط الطباعية التي ربما سيهمك أن تضيف "بعضها" إلى محرك الخطوط الخاص بك، آسف على تشتيتك على كل حال 🙁

بالتوفيق!

Moayad Mardini,
MSDN Forums Moderator

محترف مشرف عبد اللطيف حاجي علي مشاركة 6

الطريقة التي أحبذها والتي أتمنى أن تسنح لي الفرصة لتنفيذها هي عدم ربط مسائل وصل حرف العربي بآخر وغير ذلك من قواعد الخطوط بمحرك الكتابة ورسم الخطوط وترك ذلك لملف تعريف خط. أي كما هو الحال في خطوط Windows
حيث أن الخط يحوي جميع قواعد الكتابة، كتحديد شكل حرف حسب النص (وسط الكلمة أولها أو آخرها بالنسبة للخط العربي)، بالإضافة لاستبدال كلمات كاملة بأشكال أخرى مثل لفظ الجلالة والـ kerning وغيرها من قواعد الخطوط.

أظن أنه سيكون من الجميل لو أمكن استخدام ملفات خطوط Windows نفسها في أي نظام (linux أو PS3 مثلاً) أو على الأقل تحويلها لصيغة موحدة. واستخدام هذه الملفات لتعريف أشكال الحروف وقواعد الخط.

عبد اللطيف حاجي علي
مبرمج
In|Framez

خبير مدير وسام البهنسي مشاركة 7

من تجربتي الشخصية وجدت أن من أسهل وأكثر الطرق ضماناً لدعم تعدد اللغات، هو الاعتماد على نظام التشغيل نفسه في ذلك.
 
في أحد البرامج التي عملت عليها مؤخراً، قمت بالاعتماد على وظائف ويندوز التقليدية (+GDI) لكتابة النص العربي بالخط والحجم واللون المرغوبين، ثم تحميل النص على سطح دايركت ثري دي والرسم باستخدامه. والنتيجة؟ خطوط جميلة، لا مشاكل أو مزايا ناقصة، سرعة في الأداء (نعم سريعة جداً!)، حواف ناعمة، دعم شفافية، كتابة من اليمين لليسار أو اليسار لليمين في نفس النص دون مشاكل... الخ.
 
بالمثل تستطيع الاعتماد على نظام لينوكس لرسم النص، ومن ثم وضعه في صورة يستعملها أوبن جي إل.
 
هذا الحل (على أناقته) غير متاح على أنظمة الكونسول، وذلك لأنها لا تقدم خدمات كتابة النصوص للمبرمجين (خصوصاً بالعربية). فستضطر لكتابة إجراءاتك الخاصة. في هذه الحالة تستطيع استخدام مكتبة رسم محارف كما هي. صحيح أنك ستفقد بعض التفاصيل، لكن هذا أفضل من لا شيء 😒 .

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

محترف مشرف عبد اللطيف حاجي علي مشاركة 8

أيهما تفضل؟ أن تعيد كتابة برنامجك من أجل كل نظام تشغيل وأن يختلف إظهار النص في البرنامج بين نظام وآخر؟
أم أن تستثمر وقتاً في كتابة مكتبة متكاملة وتعمل على حميع الأنظمة دون عناء من مستخدمها (قد تكون واجهة بسيطة لمهام نظام التشغيل في حال كون ذلك مناسباً)

عبد اللطيف حاجي علي
مبرمج
In|Framez

خبير مدير وسام البهنسي مشاركة 9

في 17 مارس 2009 05:37 م، غمغم عبد اللطيف حاجي علي باستغراب قائلاً:

أيهما تفضل؟ أن تعيد كتابة برنامجك من أجل كل نظام تشغيل وأن يختلف إظهار النص في البرنامج بين نظام وآخر؟
أم أن تستثمر وقتاً في كتابة مكتبة متكاملة وتعمل على حميع الأنظمة دون عناء من مستخدمها (قد تكون واجهة بسيطة لمهام نظام التشغيل في حال كون ذلك مناسباً)

طبعاً لو كان البرنامج بحاجة إلى إعادة كتابة كاملة فقط لأجل إظهار النصوص على نظام تشغيل مختلف فإننا نتهم المبرمج بسوء تصميم الكود. ☺
 
بصراحة لا أرى حلاً كاملاً للمشكلة، لكني أوافقك تماماً بأن الحل الأمثل هو أن تكون المكتبة واجهة بسيطة لخدمات نظام التشغيل حيث أمكن. هذا هو ما قلته في ردي أنك تستطيع تطبيق نفس المبدأ في لينوكس مع أوبن جي إل مثلاً. 😒
 
استثمار الوقت في دعم مكتبة تعمل بشكل موحد على "جميع" الأنظمة ليست بالجهد السهل إطلاقاً، وقد يكون مشروع العمر لشركة صغيرة. وصدقني عندما أقول لك أن كلفة دعم مثل هذه المكتبة _ضخمة_ 😲 بالنسبة لأنظمة تشغيل تختلف بالمقدار الذي تختلف فيه أنظمة الكونسول بين بعضها البعض (الحديث هنا عن تعدد المنصات ضمن نطاق الألعاب). كلما طرَحَت شركة إصدار جديد من الـ SDK الخاص بمنصتها فإنك ستضطر إلى تجريب المكتبة وتصحيحها إن لزم الأمر.
 
في مثل هذه الحالات ستجد نفسك مضطراً لاتباع مبدأ: قم بتطوير ما يلزم لعبتك فقط ولا تشغل نفسك بالباقي.
طبعاً تستطيع إعادة استخدام الكود نفسه في مشاريع أخرى، لكنك قد تضطر غالباً إلى إجراء تعديلات عليه قبل أن ينهض ثانية للعمل بشكل صحيح. 😧

وسام البهنسي
مبرمج في إنفيديا وإنفريمز

موهوب  عبدالله الشمّري مشاركة 10

السلام عليكم ,

- في الحقيقة , أخي مؤيد , رأيت من الكوابيس مايكفي 😒 , لن أقوم بتضمين مفهوم الـ kerning في المشروع , لقد فهمته من شرحك جزاك الله خير , لكن يبدو أنه يحتاج لمشروع منفصل ...


-

في 21/ربيع الأول/1430 03:47 م، قال وسام البهنسي بهدوء وتؤدة:

في أحد البرامج التي عملت عليها مؤخراً، قمت بالاعتماد على وظائف ويندوز التقليدية (+GDI) لكتابة النص العربي بالخط والحجم واللون المرغوبين، ثم تحميل النص على سطح دايركت ثري دي والرسم باستخدامه. والنتيجة؟ خطوط جميلة، لا مشاكل أو مزايا ناقصة، سرعة في الأداء (نعم سريعة جداً!)، حواف ناعمة، دعم شفافية، كتابة من اليمين لليسار أو اليسار لليمين في نفس النص دون مشاكل... الخ.

- جميل ,, على الأقل نعالج حلّ مشكلة OpenGL على نظام windows ,

- ولكن كيف قمت بنقل النص الى سطح الدايركت ثري دي , أفكر الان أثناء كتابتي لهذا الرد , بطريقة مشابهة في OpenGL  , ولكن لا أذكر , سأفكر بهذا الأمر .



- أمس كتبت الجزء الاخر من المشروع TextOut , ووجدت نفسي أطبق مافعله الاخ عبداللطيف ... أقرأ كلمة كلمة ( مثلا "مكتبةOpenGL" ) اعتبرها كلمتين .. حتى لو لم توجد مسافة فاصلة ..  والسبب في ذلك هو علاج مشكلة الكتابة من اليمين لليسار والعكس .
لكن من الأمور المزعجة .. هو ان النظام النهائي لن يسمح بكتابة حروف عربية في بيئة تفاعليه مثل Text Box , لكن ممكن تفيدنا في كتبة نص ستاتيكي .. نعالجه مرة واحدة .. حتى لانقوم بتعديل مكان كل حرف .. اذا ادخلنا حرف جديد في منتصف الصندوق النصي مثلا ..
المشاكل كبيرة , سأرفع المكتبة بعد ان تكتمل .. هنا لتقيّموها ان شاء الله ..

--
طالب - تخصص نظم معلومات .
--