Comments (13)
كلا من ImageMagick و GD يدعمان العربية جيدًا إذا بنيا مع تفعيل استخدام مكتبة رقم (Raqm).
دالة utf8Glyphs توفر حلا بديلا باستخدام Arabic Presentation Forms، لكن هذا الحل له عيوب كثيرة، منها أن بعض الخطوط لا تحتوي على Arabic Presentation Forms وتعتمد على دعم خصائص أوبن تيب ليعمل الخط كما ينبغي. حتى الخطو التي تحتوي هذه العلامات قد يكون هناك اختلاف كبير بين استخدام هذه العلامات واستخدام خصائص أوبن تيب، مثلا قارن السطرين في الخط الأميري، الأول بدعم أوبن تيب والثاني لا:
from ar-php.
ستلاحظ أن المحارف الناقصة في الخطين الأخيرين هي الحروف المنفردة (غالبا لأنها موجودة في نطاق يونيكود العربي الأساسي)، لذا أظن أحد الحلول البسيطة هو الإبقاء على الحروف المنفردة دون تغيير، أعني مثلا بدلا من تحويل الألف (U+0627) إلى (U+FE8D) في الحالة المنفردة، إبقائها كما هي دون تغيير وتحويلها في الحالة المنتهية فقط.
from ar-php.
عن تجربة
اذا اصدار PHP لديك أكبر من او يساوي PHP 5.6 لست بحاجة لاستخدام utf8Glyphs مع اللغة العربية بامكانك استخدام النص العربية مباشرة
مثال :
$font = 'arial.ttf';
$text = 'هنا نص عربي';
imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
from ar-php.
الصديق العزيز خالد حسني @khaledhosny، خبرتك مع الخطوط الحاسوبية العربية مطلوبة هنا، لماذا تعمل الأمثلة مع خطوط مثل Amiri وكذلك Vazirmatn دون مشاكل، في حين تظهر المشكلة المذكورة أعلاه مع خطوط أخرى مثل Cairo وكذلك Tajawal.
تبدو لي مشكلة تتعلق برسم الحروف بحالتها المنفصلة، لكني لا أعلم سبب اختلاف السلوك ما بين الخطوط المذكورة أعلاه!
from ar-php.
الصديق العزيز خالد حسني @khaledhosny، خبرتك مع الخطوط الحاسوبية العربية مطلوبة هنا، لماذا تعمل الأمثلة مع خطوط مثل Amiri وكذلك Vazirmatn دون مشاكل، في حين تظهر المشكلة المذكورة أعلاه مع خطوط أخرى مثل Cairo وكذلك Tajawal.
تبدو لي مشكلة تتعلق برسم الحروف بحالتها المنفصلة، لكني لا أعلم سبب اختلاف السلوك ما بين الخطوط المذكورة أعلاه!
المشكلة تتعلق من وجهة نظر برمجية بنقص في رسم المحارف الواقعة في نطاق العناوين FE80-FEFF والتي تستخدمها مكتبة PHP واللغة العربية لإظهار النصوص العربية. يمكنكم رؤية الفروقات الواضحة ما بين اكتمال جداول كل من خطي Amiri و Vazirmatn من جهة، والفراغات الموجودة في جداول كل من خطي Cairo و Tajawal:
1- الخط الأميري - النطاق الذي تستخدمه مكتبة PHP واللغة العربية مكتمل، لذا يعمل بشكل سليم
2- خط Vazirmatn - النطاق الذي تستخدمه مكتبة PHP واللغة العربية مكتمل، لذا يعمل بشكل سليم
3- خط القاهرة - النطاق الذي تستخدمه مكتبة PHP واللغة العربية غير
مكتمل، لذلك لا
يعمل بشكل سليم
4- خط تجوال - النطاق الذي تستخدمه مكتبة PHP واللغة العربية غير
مكتمل، لذلك لا
يعمل بشكل سليم
from ar-php.
رائع، هذه الملاحظة القيّمة تفسّر سبب المشكلة وتعطي تلميحا محددا لطريقة حلها، شكرا جزيلا يا خالد، خبرتك دوما متميزة ومرجعية يعتدّ بها.
قد كنت بصدد إخراج خريطة الربط ما بين الأحرف بمواضعها المختلفة ورموز اليونيكود المقابلة لها، كي لا تكون جزءا من الشيفرة البرمجية بل ملف بيانات بصيغة JSON مثلا لتعزيز المرونة وتبسيط بنى المعطيات والمعالجة في برنامج المكتبة، وأتت هذه المشكلة لتكون حافزا على تسريع ذلك وتضمينه في الإصدار القادم الشهر المقبل إن شاء الله.
from ar-php.
أتوجه إليكم بجزيل الشكر أساتذتنا @khaled-alshamaa و @khaledhosny على المساعدة وتوضيح المفاهيم وتنويرنا بهذه المعلومات.
from ar-php.
الحركات في هذه النطاقات مصممة لتأتي بعد الحرف لا فوقه (بعض نظم الطباعة العربية المبسطة كانت تتفادى تركيب الحركات مع الحروف، مثل النطام الذي وضعه أحمد الأخضر غزال:
).
بعض هذه العلامات يأتي بين الحروف غير المتصلة وبعضها على كشيدة ليأتي بين الحروف المتصلة. فبدلا من ضَرَبَ تصبح ضـَر َب َ.
from ar-php.
لقد تم حل المشكلة التي أشار إليها الصديق فراس درويش في هذه المداخلة، يمكنك الحصول على آخر نسخة قيد التطوير من على منصة GitHub هنا، أو انتظار الإصدار القادم من مكتبة PHP واللغة العربية والذي سيتم إطلاقه خلال الشهر الحالي بإذن الله تعالى.
فيما يلي صورة توضح استخدام خط تجوال مع النص الذي أشار إليه سابقا في عرض المشكلة وذلك من خلال مثال يستخدم مكتبة GD:
from ar-php.
عن تجربة اذا اصدار PHP لديك أكبر من او يساوي PHP 5.6 لست بحاجة لاستخدام utf8Glyphs مع اللغة العربية بامكانك استخدام النص العربية مباشرة مثال :
$font = 'arial.ttf'; $text = 'هنا نص عربي'; imagettftext($im, 20, 0, 11, 21, $grey, $font, $text);
اهلا صديقي احمد
جربت في النسخة 7.3 والنسخة 8 لكن الأحرف العربية تظهر منفصلة
from ar-php.
ونفس المشكلة عند استخدام native php مثل المثال الموجود هنا
from ar-php.
عن تجربة اذا اصدار 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.
كلا من ImageMagick و GD يدعمان العربية جيدًا إذا بنيا مع تفعيل استخدام مكتبة رقم (Raqm).
دالة utf8Glyphs توفر حلا بديلا باستخدام Arabic Presentation Forms، لكن هذا الحل له عيوب كثيرة، منها أن بعض الخطوط لا تحتوي على Arabic Presentation Forms وتعتمد على دعم خصائص أوبن تيب ليعمل الخط كما ينبغي. حتى الخطو التي تحتوي هذه العلامات قد يكون هناك اختلاف كبير بين استخدام هذه العلامات واستخدام خصائص أوبن تيب، مثلا قارن السطرين في الخط الأميري، الأول بدعم أوبن تيب والثاني لا:
![]()
لدي سؤال إضافي @khaledhosny
كيف تعالج الحركات مع الشدّة بحيث تظهر بشكل سليم دون تراكب كما هو موضّح في مثالك هذا؟ عندما قمت بتجربة الرموز المركّبة للشدة مع الحركات الأخرى الواقعة ضمن النطاق من FC5E حتى FC62 كان يتم إضافة فراغ ما بين الأحرف تحتها، على عكس السلوك المتوقع كما هي الحالة مع طريقة رسم الحركات (الواقعة في نطاق اليونيكود العربي الأساسي من 064B وحتى 0652) وعرضها بشكل متراكب مع الأحرف دونما إزاحة.
from ar-php.
Related Issues (20)
- Undefined array key \" \" at khaled.alshamaa/ar-php/src/Arabic.php:2375
- Arabic numerals not showing correctly HOT 9
- واجهة مشكلة غريبة مع نص طويل HOT 11
- Bug when I use LAM ALEF as first two letters HOT 1
- Bug when I use Hindi numbers HOT 1
- Bug when I use TANWEEN HOT 1
- Some letters are not displayed properly HOT 1
- consecutive occurrences of stopwords HOT 3
- Texts are not showing properly HOT 8
- Unable to install any version above 6.0.0 HOT 8
- حرف لا يظهر كما يجرب HOT 10
- Unusual margin after using ar-php with Dompdf HOT 11
- خطأ: ظهور خطأ عند استخدام الأحرف (للإ) في بداية أي كلمة مثل (للإحسان) HOT 7
- Security issue: Reflected XSS in example files HOT 2
- ثغرة أمنية: Reflected XSS في ملف الأمثلة القبلة HOT 2
- Bug in versions after 6.2.0, if the string starts with double ل HOT 6
- Not able to transform 'للا' to utf8 format HOT 4
- مشكلة مع نص الطويل اكتر من سطر واحد HOT 1
- Implicit conversion from `float` to `int` when using `getPrayTime()` method
- Urdu Support
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ar-php.