Giter VIP home page Giter VIP logo

Comments (13)

khaledhosny avatar khaledhosny commented on June 15, 2024 3

كلا من   ImageMagick و GD يدعمان العربية جيدًا إذا بنيا مع تفعيل استخدام مكتبة رقم (Raqm).

دالة utf8Glyphs توفر حلا بديلا باستخدام Arabic Presentation Forms، لكن هذا الحل له عيوب كثيرة، منها أن بعض الخطوط لا تحتوي على Arabic Presentation Forms وتعتمد على دعم خصائص أوبن تيب ليعمل الخط كما ينبغي. حتى الخطو التي تحتوي هذه العلامات قد يكون هناك اختلاف كبير بين استخدام هذه العلامات واستخدام خصائص أوبن تيب، مثلا قارن السطرين في الخط الأميري، الأول بدعم أوبن تيب والثاني لا:
a
b

from ar-php.

khaledhosny avatar khaledhosny commented on June 15, 2024 2

ستلاحظ أن المحارف الناقصة في الخطين الأخيرين هي الحروف المنفردة (غالبا لأنها موجودة في نطاق يونيكود العربي الأساسي)، لذا أظن أحد الحلول البسيطة هو الإبقاء على الحروف المنفردة دون تغيير، أعني مثلا بدلا من تحويل الألف (U+0627) إلى (U+FE8D) في الحالة المنفردة، إبقائها كما هي دون تغيير وتحويلها في الحالة المنتهية فقط.

from ar-php.

ahmedfawky avatar ahmedfawky commented on June 15, 2024 1

عن تجربة
اذا اصدار PHP لديك أكبر من او يساوي PHP 5.6 لست بحاجة لاستخدام utf8Glyphs مع اللغة العربية بامكانك استخدام النص العربية مباشرة
مثال :

$font = 'arial.ttf';
$text = 'هنا نص عربي';

imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

from ar-php.

khaled-alshamaa avatar khaled-alshamaa commented on June 15, 2024 1

الصديق العزيز خالد حسني @khaledhosny، خبرتك مع الخطوط الحاسوبية العربية مطلوبة هنا، لماذا تعمل الأمثلة مع خطوط مثل Amiri وكذلك Vazirmatn دون مشاكل، في حين تظهر المشكلة المذكورة أعلاه مع خطوط أخرى مثل Cairo وكذلك Tajawal.

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

from ar-php.

khaled-alshamaa avatar khaled-alshamaa commented on June 15, 2024 1

الصديق العزيز خالد حسني @khaledhosny، خبرتك مع الخطوط الحاسوبية العربية مطلوبة هنا، لماذا تعمل الأمثلة مع خطوط مثل Amiri وكذلك Vazirmatn دون مشاكل، في حين تظهر المشكلة المذكورة أعلاه مع خطوط أخرى مثل Cairo وكذلك Tajawal.

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

المشكلة تتعلق من وجهة نظر برمجية بنقص في رسم المحارف الواقعة في نطاق العناوين FE80-FEFF والتي تستخدمها مكتبة PHP واللغة العربية لإظهار النصوص العربية. يمكنكم رؤية الفروقات الواضحة ما بين اكتمال جداول كل من خطي Amiri و Vazirmatn من جهة، والفراغات الموجودة في جداول كل من خطي Cairo و Tajawal:

1- الخط الأميري - النطاق الذي تستخدمه مكتبة PHP واللغة العربية مكتمل، لذا يعمل بشكل سليم
Amiri_font

2- خط Vazirmatn - النطاق الذي تستخدمه مكتبة PHP واللغة العربية مكتمل، لذا يعمل بشكل سليم
Vazirmatn_font

3- خط القاهرة - النطاق الذي تستخدمه مكتبة PHP واللغة العربية غير مكتمل، لذلك لا يعمل بشكل سليم
Cairo_font

4- خط تجوال - النطاق الذي تستخدمه مكتبة PHP واللغة العربية غير مكتمل، لذلك لا يعمل بشكل سليم
Tajawal_font

from ar-php.

khaled-alshamaa avatar khaled-alshamaa commented on June 15, 2024 1

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

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

from ar-php.

firasdarwish avatar firasdarwish commented on June 15, 2024 1

أتوجه إليكم بجزيل الشكر أساتذتنا @khaled-alshamaa و @khaledhosny على المساعدة وتوضيح المفاهيم وتنويرنا بهذه المعلومات.

from ar-php.

khaledhosny avatar khaledhosny commented on June 15, 2024 1

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

بعض هذه العلامات يأتي بين الحروف غير المتصلة وبعضها على كشيدة ليأتي بين الحروف المتصلة. فبدلا من ضَرَبَ تصبح ضـَر َب َ.

from ar-php.

khaled-alshamaa avatar khaled-alshamaa commented on June 15, 2024 1

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

فيما يلي صورة توضح استخدام خط تجوال مع النص الذي أشار إليه سابقا في عرض المشكلة وذلك من خلال مثال يستخدم مكتبة GD:
2022-06-01 15_53_09-glyphs_gd php (600×150)

from ar-php.

firasdarwish avatar firasdarwish commented on June 15, 2024

عن تجربة اذا اصدار PHP لديك أكبر من او يساوي PHP 5.6 لست بحاجة لاستخدام utf8Glyphs مع اللغة العربية بامكانك استخدام النص العربية مباشرة مثال :

$font = 'arial.ttf';
$text = 'هنا نص عربي';

imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

اهلا صديقي احمد
جربت في النسخة 7.3 والنسخة 8 لكن الأحرف العربية تظهر منفصلة

from ar-php.

firasdarwish avatar firasdarwish commented on June 15, 2024

ونفس المشكلة عند استخدام native php مثل المثال الموجود هنا

from ar-php.

khaled-alshamaa avatar khaled-alshamaa commented on June 15, 2024

عن تجربة اذا اصدار PHP لديك أكبر من او يساوي PHP 5.6 لست بحاجة لاستخدام utf8Glyphs مع اللغة العربية بامكانك استخدام النص العربية مباشرة مثال :

$font = 'arial.ttf';
$text = 'هنا نص عربي';

imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);

لا أعتقد أن هذا الكلام دقيق، يمكنك الاطّلاع على المثال التالي: https://ar-php.org/github/examples/ar_glyphs.php

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

from ar-php.

khaled-alshamaa avatar khaled-alshamaa commented on June 15, 2024

كلا من   ImageMagick و GD يدعمان العربية جيدًا إذا بنيا مع تفعيل استخدام مكتبة رقم (Raqm).

دالة utf8Glyphs توفر حلا بديلا باستخدام Arabic Presentation Forms، لكن هذا الحل له عيوب كثيرة، منها أن بعض الخطوط لا تحتوي على Arabic Presentation Forms وتعتمد على دعم خصائص أوبن تيب ليعمل الخط كما ينبغي. حتى الخطو التي تحتوي هذه العلامات قد يكون هناك اختلاف كبير بين استخدام هذه العلامات واستخدام خصائص أوبن تيب، مثلا قارن السطرين في الخط الأميري، الأول بدعم أوبن تيب والثاني لا: a b

لدي سؤال إضافي @khaledhosny
كيف تعالج الحركات مع الشدّة بحيث تظهر بشكل سليم دون تراكب كما هو موضّح في مثالك هذا؟ عندما قمت بتجربة الرموز المركّبة للشدة مع الحركات الأخرى الواقعة ضمن النطاق من FC5E حتى FC62 كان يتم إضافة فراغ ما بين الأحرف تحتها، على عكس السلوك المتوقع كما هي الحالة مع طريقة رسم الحركات (الواقعة في نطاق اليونيكود العربي الأساسي من 064B وحتى 0652) وعرضها بشكل متراكب مع الأحرف دونما إزاحة.

from ar-php.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.