docs:تطوير_الخطوط
اختلافات
عرض الاختلافات بين النسخة المختارة و النسخة الحالية من الصفحة.
جانبي المراجعة السابقةالمراجعة السابقةالمراجعة التالية | المراجعة السابقة | ||
docs:تطوير_الخطوط [2009/02/16 22:31] – خالد | docs:تطوير_الخطوط [2015/04/23 03:19] (حالي) – تحرير خارجي 127.0.0.1 | ||
---|---|---|---|
سطر 1: | سطر 1: | ||
+ | {{tag> | ||
+ | <box red 90%> | ||
+ | **قيد الإنشاء: | ||
+ | </ | ||
+ | ====== تطوير الخطوط العربية ====== | ||
+ | |||
+ | ====== عدة العمل ====== | ||
+ | الجزء الأكبر من عملية بناء الخط يتم باستخدام [[http:// | ||
+ | |||
+ | قد نستخدم أيضا برمجيات خارجية لرسم الحروف، مثل برنامج الرسم المتجهي [[http:// | ||
+ | |||
+ | جنو/ | ||
+ | |||
+ | ====== تجهيز ملف الخط ====== | ||
+ | افتح فونتفورج واضغط على زر '' | ||
+ | |||
+ | {{ docs: | ||
+ | |||
+ | أو من سطر الأوامر: | ||
+ | < | ||
+ | fontforge -new | ||
+ | </ | ||
+ | |||
+ | ===== بيانات الخط ===== | ||
+ | {{ docs: | ||
+ | اذهب إلى قائمة '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | * '' | ||
+ | كل هذه الحقول يجب أن تستعمل محارف أسكي (إنجليزية فقط) | ||
+ | |||
+ | ===== الترميز ===== | ||
+ | |||
+ | بعدها اذهب إلى قائمة '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ====== رسم الحروف ====== | ||
+ | يمكنك استخدام برمجيات خارجية لرسم الحروف ثم تصديرها إلى فونتفورج. مثلا يمكنك رسم الحروف على الورق، ومسحها بالماسحة ثم تشذيبها باستخدام إنكسكيب، وبعدها تستورد الصور من داخل فونتفورج. أو يمكنك رسم الحروف مباشرة في فونتفورج. | ||
+ | |||
+ | ===== استيراد رسم الحروف ===== | ||
+ | سنشرح هنا طريقة استيراد الحروف من مصادر خارجية مثل استعمال الماسح الضوئي على نماذج الخطاطين التعليمية أو أعمالهم الفنية. حيث تساهم هذه العملية في تسريع تصميم الخط وهي تتألف من المراحل التالية: | ||
+ | * مسح الصورة | ||
+ | * معالجة الصورة نقطيا | ||
+ | * تحويل الصورة النقطية إلى متجهية | ||
+ | |||
+ | فلنبدأ بصورة من موقع لتعليم الخط العربي على سبيل المثال صورة التالية من موقع الخطاط أحمد عبد الرحمن خلف | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | نفتح الصورة في برنامج GIMP نستخدم الأداة '' | ||
+ | |||
+ | ^ المرحلة الاولى من معالجة الصورة | ||
+ | | {{ : | ||
+ | |||
+ | ثم نستخدم الاداة color curve في تطبيق دالة درجية (تقفز من الصفر إلى القيمة الكاملة في منطقة ما بين اللونين البعيدين في المخطط) ويمكن عمل القفزة | ||
+ | |||
+ | |||
+ | ^ المرحلة الثانية من معالجة الصورة | ||
+ | | {{ : | ||
+ | |||
+ | |||
+ | بعد أن حصلنا على صورة نظيفة متباينة جدا نستورد الصورة في برنامج الرسم المتجهي inkscape بكل بساطة بسحب الملف وإفلاته ثم نختار '' | ||
+ | |||
+ | ===== أشكال الحروف ===== | ||
+ | تختلف عدد الأشكال المطلوبة لكل حرف حسب طبيعة الخط الذي تصممه، أغلب الخطوط الحديثة تحتاج أربعة أشكال للحروف التي تتصل بما بعدها؛ **منفرد** و **أول** و **وسط** و **آخر** الكلمة، وشكلين فقط للحروف التي لا تتصل بما بعدها (ا، د، ذ، ر، ز، و)؛ **منفصل** و **آخر** الكلمة. بعض الخطوط تستعمل شكلين فقط لكل الحروف، حيث يكون أول ووسط الكلمة نفس الشكل. الاختيار يعود إليك وإلى الغرض من الخط الذي تستخدمه. | ||
+ | |||
+ | الخطوط الاحترافية التي تحاول محاكاة القواعد التقليدية للخط والطباعة العربية قد تحتاج لعشرات الأشكال لكل حرف يتم الاختيار بينها على حسب الحروف المجاورة، في لمقابل بعض الخطوط " | ||
+ | |||
+ | ===== وضع الحروف في مكانها ===== | ||
+ | |||
+ | سنفترض أن الحروف موجودة الآن في ملفات SVG (أو أي نسق متجهي آخر يدعمه فونتفورج)، وعلينا الآن وضعها في الخط. | ||
+ | |||
+ | اذهب إلى الحرف الذي تريده في نافذة فونتفورج -وليكن حرف الألف- ثم انقر عليه لفتح نافذة رسم الحروف (Outline View)، يمكنك البدء برسم الحرف داخل فونتفورج أو استيراده من ملف خارجي. | ||
+ | اذهب إلى '' | ||
+ | |||
+ | {{ docs: | ||
+ | |||
+ | في هذه النافذة تستطيع ضبط أبعاد الحرف وموضعه من السطر. | ||
+ | |||
+ | يوجد بالنافذة ثلاث خطوط أفقية وخطين رأسيين تحدد موضع الحرف وعلاقته بما يجاوره. | ||
+ | |||
+ | الخط الثاني من أسفل هو خط الأساس الذي ترتكز عليه الحروف، ما تحته يعتبر " | ||
+ | |||
+ | الخطوط الأفقية تحدد امتداد الحرف يمينا ويسارا، أجزاء الحرف التي تتجاوز هذين الخطين ستتقاطع مع الحروف المجاورة (قد يكون هذا مقصودا أحيانا). | ||
+ | |||
+ | ==== الحروف المنفصلة ==== | ||
+ | |||
+ | كما نعرف لكل حرف عربي عدة أشكال، منها المنفصلة عندما لا يتصل بحرف آخر. | ||
+ | عند برمجة الخط تكون الصورة المنفصلة هي الشكل الأساسي و الأشكال الأخرى هي تنويعات سياقية منه (أي تتحدث حسب السياق وموضع الحرف من الكلمة.) في يونيكود توجد الحروف العربية في منطقتين؛ '' | ||
+ | |||
+ | بعد ملء كل خانات الحروف المنفصلة، ننتقل للأشكال الأخرى. | ||
+ | |||
+ | ==== التنويعات ==== | ||
+ | الحروف التي تتصل بما بعدها لها ثلاث صور بالإضافة إلى الصورة المنفصلة، وهي أول والكلمة ووسطها وآخرها، مثل **ب بـ ـبـ ـب**. الحروف التي لا تتصل بما بعدها لها صورتين فقط؛ منفصلة و متصلة (آخر الكلمة)، مثل **د ـد**. | ||
+ | |||
+ | هذه هي الأشكال الأساسية التي تعد الحد الأدنى، لكنك لست محدودا بها، فكل صورة من هذه قد يكون لها عدة تنويعات، فمثلا في خط النسخ الباء في أول الكلمة " | ||
+ | |||
+ | توضع هذه الصور من الحروف العربية عادة في منطقة '' | ||
+ | |||
+ | ستجد لكل حرف أربع خانات (أو اثنتين)، أحدها الخانة المنفصلة وهذه ليست ضرورية. سيكون عليك ملء الحروف كما فعلنا مع الصور المنفصلة سابقا، لكن تذكر أن تضع الصورة الصحيحة في المكان الصحيح. | ||
+ | |||
+ | {{ docs: | ||
+ | |||
+ | بعد ملء كل الخانات بالحروف المناسبة سنلاحظ وجود بعض النقوش ((glyphs)) الخاصة التي تمثل أكثر من حرف، مثل " | ||
+ | |||
+ | ==== الاقترانات ==== | ||
+ | |||
+ | الاقترانات ((Ligatures)) هو صنف خاص من النقوش يتكون من حرفين أو أكثر يتخذان معا شكلا خاصا يختلف عن شكل كل منهما لو لم يتصل بالآخر، أشهرها في اللغة العربية لام ألف " | ||
+ | |||
+ | يعتمد شكلها على تصميمك للخط. | ||
+ | |||
+ | بعد ملء هذه الخانات يكون خطنا الجديد قد اكتمل ولم يبق إلا اختباره. | ||
+ | |||
+ | {{ docs: | ||
+ | |||
+ | فائدة: اذهب إلى قائمة '' | ||
+ | |||
+ | ====== اختبار الخط ====== | ||
+ | |||
+ | بعد الانتهاء من الحروف كلها، يتبقى توليد الخط وتجربته. | ||
+ | |||
+ | لتوليد الخط اذهب إلى '' | ||
+ | |||
+ | {{ docs: | ||
+ | |||
+ | من القائمة المنسدلة على اليسار اختر نوع الخط، سنختار حاليا '' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |||
+ | بعدها انسخ الخط إلى مجلد الخطوط، في لينكس ~/ | ||
+ | |||
+ | الآن افتح أي محرر نصوص وجرب الخط الجديد (اسم الخط هو الاسم الذي وضعته في نافذة بيانات الخط). | ||
+ | |||
+ | **فائدة**: | ||
+ | |||
+ | لكن مهلا، الخط لا يظهر كما ينبغي؛ الحروف كلها منفصلة! | ||
+ | {{ docs: | ||
+ | |||
+ | هذا لأننا لم نضع بعد معلومات أوبنتيب اللازمة لعرض الخط بشكل سليم. | ||
+ | |||
+ | ====== إثراء الخط ====== | ||
+ | |||
+ | ===== مقدمة ===== | ||
+ | |||
+ | حتى الآن لم يحتو الخط على أي معلومات عن طريقة عرضه، مجرد مجموعة من صور الحروف دون تحديد لعلاقتها ببعضها. قد يناسب هذا الكتابة اللاتينية، حيث يكفي رص الحروف بجوار بعضها لتكوين الكلمات، لكن في الكتابة العربية يتحدد شكل الحرف حسب موضعه من الجملة وعلاقته بالحروف الأخرى المحيطه به. سنتحدث في هذا الجزء عن كيفية إثراء الخط بالمعلومات المطلوبة لعرض الكتابة العربية بشكل سليم اعتمادا على تقنية أوبنتيب. | ||
+ | |||
+ | ==== المحرف والصورة ==== | ||
+ | |||
+ | يجب أن نفرق بين مفهومين أساسيين؛ المحرف (character) و صورته (glyph). المحرف ((يشمل المحرف الحروف " | ||
+ | |||
+ | ==== الخطوط البسيطة والخطوط الذكية ==== | ||
+ | |||
+ | خطوط الحاسوب الآن نوعان خطوط بسيطة ((dumb fonts)) وخطوط ذكية ((smart fonts)). في الخطوط البسيطة لا يوجد تمييز كبير بين الحرف وصورته، فكل صورة في ملف الخط تمثل محرفا واحدا والتطبيق الذي يعرض النص يقوم بعملية استبدال بسيطة " | ||
+ | |||
+ | للوهلة الأولى يبدو هذا بسيطا وفعالا، لكن هذا لا يصلح للغة العربية، فالتتابع " | ||
+ | |||
+ | يبدو هذا أيضا كافيا للوهلة الأولى، لكن مع النظر يتضح لنا أن به أوجه قصور عدة، فتنويعات الحروف ثابتة بمعنى أن مصمم الخط لا يستطيع التحكم فيها، فمثلا إذا أردنا عمل خط نسخ يتبع قواعد الخط العربي فسيكون هذا شبه مستحيل، فبعض الحروف لها عشرات التنويعات التي تختلف حسب الحروف المحيطة بها وحسب موقعها من الجملة، أشياء كهذه لا يمكن الوصول إليها مع تقنيات الخطوط البسيطة إلا إذا برمجنا البرمجية التي ستعرض النص لتفهم كل هذه القواعد واستخدمنا خطوطا غير قياسية لن تعمل إلا على هذه البرمجية فقط، وليس هذا ما نريد. لا تتيح الخطوط الذكية أيضا إضافة أي معلومات غنية إلى الخط، مثل مواضع علامات التشكيل بالنسبة لكل حرف، اتصال الحروف ببعضها بطريقة تسلسلية، والكثير الكثير من الخصائص المطلوبة للحصول على جودة طباعية عالية. | ||
+ | |||
+ | في المقابل، الخطوط الذكية تحل كل هذا. فيمكنك " | ||
+ | |||
+ | توجد عدة أنظمة خطوط ذكية، أشهرها أوبنتيب حيث تدعمه أغلب أنظمة التشغيل، كما يوجد " | ||
+ | |||
+ | سنركز على أوبنتيب فقط لكونه معيارا دوليا معتمد من أغلب الأنظمة والنظم الطباعية الحديثة، ما يضمن أن تعمل الخطوط التي نطورها على أي نظام ولا ترتبط بنظام أم منتج برمجيات معين. | ||
+ | |||
+ | ==== أوبنتيب ==== | ||
+ | |||
+ | ببساطة، أوبنتيب ((OpenType)) عبارة عن معيار يحدد مجموعة من الجداول الإضافية على تروتيب التي تحتوي معلومات تتحكم في سلوك الخط والجوانب المختلفة لكيفية عرض النص بهذا الخط. | ||
+ | |||
+ | يتكون أوبنتيب من أربع جداول رئيسية: | ||
+ | * GSUB: جدول استبدال الصور ((Glyph SUBstistution))، ويحتوي المعلومات التي تتحكم في استبدال صورة محرف بأخرى؛ مثل " | ||
+ | * GPOS: جدول تموضع الصور ((Glyph POSitioning))، ويحتوي المعلومات الخاصة بالعلاقة المكانية لصور المحارف، مثل مواضع علامات التشكيل، أو اتصال الحرف بما قبله في الخطوط التي لا تلتزم بالسطر مثل الخط الفارسي (النستعليق)، الخ. | ||
+ | * BASE: جدول سطر الكتابة (سطر الأساس)، يستخدم لمحاذاة أنظمة الكتابة التي تستخدم سطور كتابة مختلفة (مثلا أنظمة الكتابة الهندية تكتب معلقة في سطر الكتابة على عكس العربية واللاتينية التي تكتب غالبا فوق السطر). | ||
+ | * JUST: جدول المساواة ((JUSTification)) يحتوي هذا الجدول على المعلومات اللازمة لمساواة النص على جانبي الصفحة، مثل اختيار بعض صور المحارف الطويلة أو إضافة تطويل (كشيدة) في الكتابة العربية. | ||
+ | |||
+ | الجدول الأول والثاني هي ما تهمنا أكثر وتدعمها كل البرمجيات التي تدعم أوبنتيب، الجدول الثالث ليس مهما كثيرا للخطوط العربية كما أن دعمه في البرمجيات ضعيف. جدول المساواة يبدو من وثائق المعيار مفيدا جدا للخطوط العربي لكن للأسف يبدو أنه لا توجد أي برمجيات تدعمه على الإطلاق. | ||
+ | |||
+ | ===== إضافة جداول أوبنتيب ===== | ||
+ | يوفر فونتفورج واجهة سهلة (وغنية في الوقت ذاته) لإضافة جداول أوبنتيب. اذهب إلى **'' | ||
+ | |||
+ | |||
+ | {{ : | ||
+ | |||
+ | ==== GSUB ==== | ||
+ | يحتوي هذا الجدول على المعلومات اللازمة لاستبدال المحرف بصورته المناسبة حسب موضعه من الكلمة، وكذلك عمل الاقترانات. | ||
+ | |||
+ | === الأشكال الأربعة لكل حرف === | ||
+ | |||
+ | الخطوات التالية لتحديد الشكل الذي سيأخذه الحرف إذا وقع في بداية، نهاية ووسط الكلمة. شكل الحرف مفردا يأخذ تلقائيا من المدخلة التي تحمل ترميز الحرف، لكن إذا أردنا أن نستخدم شكلا آخر للحرف مفردا (مثلا استخدام الهاء " | ||
+ | |||
+ | == خطوة ١ == | ||
+ | اذهب إلى لسان '' | ||
+ | |||
+ | == خطوة ٢ == | ||
+ | قف على اسم الجدول الذي أنشأناه، وانقر على '' | ||
+ | |||
+ | انقر على زر '' | ||
+ | |||
+ | == خطوة ٣ == | ||
+ | في حال لم تف الخطوة السابقة بغرضك -أو أردت تحكما أكثر- فيمكنك تحرير محتوي الجدول يدويا. اتبع نفس الخطوات السابقة، أو انقر على الجدول الفرعي الذي أنشأته إن كنت فعلت هذا مسبقا. سيعرض عليك فونتفورج نافذة تحتوي جدولا، كل خانة به من قسمين: القسم الأول يحتوي اسم صورة الحرف التي ستحوّل إلى صورة أخرى، مثلا في حالة جدول صور الحروف في أول الكلمة ('' | ||
+ | |||
+ | == خطوة ٤ == | ||
+ | سنكرر الخطوات الثلاث السابقة مرتين أخريتين، ونختار جداول من نوع '' | ||
+ | |||
+ | |||
+ | === الاقترانات === | ||
+ | الاقترانات هي الصور التي تمثل أكثر من حرف مثل " | ||
+ | |||
+ | == خطوة ١ == | ||
+ | اذهب إلى لسان '' | ||
+ | |||
+ | == خطوة ٢ == | ||
+ | قف على اسم الجدول الذي أنشأناه، وانقر على '' | ||
+ | |||
+ | انقر على زر '' | ||
+ | |||
+ | == خطوة ٣ == | ||
+ | في حال لم تف الخطوة السابقة بغرضك -أو أردت تحكما أكثر- فيمكنك تحرير محتوي الجدول يدويا. مثلما فعلنا سابقنا. الاختلاف هنا أن القسم الثاني من كل خانة سيحتوي على مدخلتين فأكثر التي تشكل مكونات هذا الاقتران، مثلا في حالة " | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | ==== GPOS ==== | ||
+ | يغطي هذا القسم دعم ضبط والتحكم في مواضع علامات التشكيل. | ||
+ | |||
+ | في البداية يوفر أوبنتيب خاصيتان يهماننا في هذا السياق: | ||
+ | * mark: لتحديد موضع علامة التشكيل نسبة إلى الحرف الأساسي | ||
+ | * mkmk: لتحديد مواضع علامات التشكيل بالنسبة لبعضها، مثلا الفتحة بالنسبة للشدة، بحيث تتراكب علامات التشكيل فوق بعضها بشكل صحيح بدلا من تكدسها في بقعة واحدة | ||
+ | |||
+ | توضح هذه الصورة الخط قبل أن نضيف دعم التشكيل إليه، لاحظ كيف أن علامات التشكيل على ارتفاع واحد من كل الحروف وعلى يسارها، ولاحظ اشتباك الشدة مع الفتحة: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | |||
+ | === خطوة ١ === | ||
+ | |||
+ | افتح ملف الخط ثم اذهب إلى '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | من قائمة النوع (أعلى النافذة) اختر '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | في خانة '' | ||
+ | |||
+ | === خطوة ٢ === | ||
+ | |||
+ | الآن اضغط على اسم الجدول في القائمة ثم اضغط زر '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ثم اضغط على ''< | ||
+ | |||
+ | === خطوة ٣ === | ||
+ | |||
+ | الآن اذهب لمكان علامات التشكيل، ولنبدأ بالفتحة، لنقر فوق الحرف لفتح نافذته الخاصة ثم انقر بالفأرة في نقطة تحت علامة الفتحة ثم اذهب إلى قائمة '' | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | ثم عليك تكرار هذه الخطوة مع كل علامات التشكيل التي تقع فوق الحرف. | ||
+ | |||
+ | === خطوة ٤ === | ||
+ | |||
+ | بعدها اذهب إلى أحد الحروف وليكن الباء وانقر فوقها على مسافة مناسبة حيث تريد أن توضع علامة التشكيل ثم أضف نفس النقطة لكن أشر على نوع '' | ||
+ | |||
+ | بعدها نعود لخطوة ٢، ونضيف نقطة جديدة، ولتكن '' | ||
+ | |||
+ | الآن مواضع التشكيل مضبوطة، لكن الفتحة ليست موضوعة جيدا فوق الشدة: | ||
+ | |||
+ | {{ : | ||
+ | |||
+ | === خطوة ٥ === | ||
+ | |||
+ | نعود لخطوة ١، وننشئ جدولا جديدا لكن من نوع '' | ||
+ | |||
+ | === خطوة ٦ === | ||
+ | |||
+ | نذهب إلى علامة التشكيل التي تحتمل علامات أخرى فوقها، الشدة مثلا ونضيف نقطة '' | ||
+ | |||
+ | === خطوة ٧ === | ||
+ | |||
+ | نذهب لعلامة تشكيل مثل الفتحة ونضيف '' | ||
+ | |||
+ | الآن كل علامات التشكيل مضبوطة: | ||
+ | |||
+ | {{ : | ||
+ | === خطوة ٨ === | ||
+ | |||
+ | قد نحتاج لتحسين وضبط المواضع بدقة ونريد رؤية الحركة في مكانها فوق الحرف، اذهب إلى موضع الجدول ثم انقر على الدول الفرعي واضغط زر '' | ||
+ | |||
+ | {{ : | ||