مغامرة مع اللغة العربية و Scribus

نشره زايد في الثلاثاء, 2009/01/27 - 2:47م

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

كان الهدف الأول هو بناء التطبيق حتى نستطيع أن نرى ماذا تغير ، حسنا الإصدارة القادمة من هذا البرنامج تعتمد  على مكتبة كيوت 4.4 و Cmake 2.6 مع قائمة طويلة من المكتبات المصاحبة ، عملية الترجمة مرة بسلاسه ولم نواجه الكثير من المشاكل  ، و بعد بعض الترتيب للمجلدات ظهر لنا Scribus في حلته البهية ، توجد به الكثير من التحسينات تستحق موضوع خاص بها.

كان الهدف هو أننا نريد لماذا لا يدعم Scribus اللغة العربية ، مع أن مكتبة كيوت التي كتب بها تدعم اللغة العربية بشكل جيد ؟

و المهم بعد أن تأكدنا أننا نستطيع بناء التطبيق ، دلفنا إلى الشفرة المصدرية نفتش أين مصدر الخطأ ، و بعد فترة من الوقت اكتشفنا أن Scribus لا يستعمل مكتبة الكيوت بشكل كامل ، بل يستعمل مكتبة الرسم ثنائية الأبعاد Cairo لإنتاج المطبوعات  ، و الكيوت للأشياء الأخرى ، هنا بدأت الصورة تتضح لماذا لا يدعم Scribus اللغة العربية بشكل افتراضي مع أنه يستخدم الكيوت.

الخطوة التي تليها كان كيف نجعل النص المرسوم عن طريق مكتبة Cairo يدعم اللغة العربية ، و بعد عناء بحث وجدنا أن هناك عدة خوارزميات لفعل ذلك ، و أن هناك عدة مكتبات تقدم هذه الخدمة وهي مكتبة FriBidi و Pango التي تعتمد على المكتبة FriBidi لتقدم حل ينفع لكل اللغات.

بعد ذلك بدأت المحاولة لمزج بين مكتبة Cairo و FriBidi ، و بعد يوم كامل من المحاولات الفاشلة ( ماذا تتوقعون من أناس ليس لديهم أدنى خبرة في السي ؟) قررنا أن نستعين بمطور مكتبة FriBidi وهو ايراني يسمى بهداد اسفهبد ، و بالفعل أرسلنا له رسالة ، و فرد بأنه مشغول واقترح أن نستخدم مكتبة Pango فهي تقدم توثيق أفضل بكثير من FriBidi التي لا تحوي على أي توثيق أو أمثلة .

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

والآن ما الحل ؟

بعد حديث دار مع مطوري برنامج Scribus حول الموضوع ، وجدنا أن الحل يكمن في مكتبة تسمى حرف باز HarfBuzz ، و هي مكتبة تعمل كمحرك لعرض خطوط OpenType مشتق من مشروع FreeType الذي تم تطويره في مكتبتي Pango و Qt ، ثم توحيده في مشروع واحد باسم مكتبة حرف باز.

المشكلة الأولى أن مكتبة حرف باز لم تصدر لها أي اصدارة مستقلة بمعنى أنه تحت التطوير و لا يوجد لديها توثيق أو أمثلة ، و يتم استخدمها بشكل أساسي (أو أن زبائنها الوحيدون هم مكتبتي Pango و Qt  ، مما يعني نهاية الطريق لمن ليس لديه الخبرة الكافية في لغة سي و البرمجة بشكل عام.

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

Comments