الأرقام العربية والهندية والخطوط: ما الفرق ولماذا يهمك برمجياً؟
الفرق بين ١٢٣ و123 ليس مجرد شكل — إنه قرار برمجي تقني يؤثر على العرض والسيو والقراءة. دليل عملي للمطور والكاتب العربي.
عدد الكلمات: ~١٨٠٠ • مدة القراءة: ٨ دقائق
الأرقام العربية والهندية والخطوط
ما الفرق بين ١٢٣ و123 — ولماذا يهمك القرار برمجياً؟
في هذا المقال من منصة ذي يزن، نبدأ سويةً سلسلةً جديدة تماماً: كيف نعرض الأرقام والبيانات المالية بشكل صحيح في التطبيقات والمواقع العربية. وأول سؤال يطرح نفسه — وغالباً يُتجاهَل — هو: ما الرقم الصحيح أصلاً؟ هل هو ١٢٣ أم 123؟
الجواب ليس “أيهما تحب”، بل هو قرار تقني ولغوي له تبعات على عرض الصفحة، وعلى محركات البحث، وعلى تجربة القارئ. لنفهم هذا معاً من البداية.

أولاً: من أين جاءت “الأرقام العربية”؟
هناك خلطٌ شائعٌ بين الأصل الفلسفي للأرقام وبين شكلها الهندسي الحالي. تاريخياً، اقتبس العرب النظام العشري وقيم الخانات من الهند، لكنهم طوروا شكلين هندسيين مختلفين تماماً للأرقام، وإذا دققت النظر فإن كلا النظامين يعتمد على عدد الزوايا في شكل الأرقام:
الأرقام العربية الشرقية (٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩): هي التي نراها في الصحف والكتب العربية اليوم، وقد تطورت واستخدمت في المشرق العربي والإسلامي، وهي المسمّاة في معيار يونيكود بـ “الأرقام الهندية”، أو بدقة أكبر: الأرقام العربية-الهندية.
الأرقام العربية الغربية (0 1 2 3 4 5 6 7 8 9): ابتكرت وتطورت في المغرب العربي والأندلس، ومنها انتقلت إلى أوروبا والعالم، والشائع تسميتها بالأرقام الغربية/ العربية، وتسمى في اليونيكود لاتينية وهو أمر غير دقيق فالأرقام الرومانية/ اللاتينية الحقيقية اعتمدت الأحرف الأبجدية مثل (I, II, III, IV, V, X, L,C, D, M.) وهي نظام غير موضعي “لا يعتمد على خانة الآحاد والعشرات” ولا يحتوي على الصفر “الابتكار الهندي”.
وأيضاً فإن الأرقام التراثية القومية للهند هي أرقام ديفنغاري: (० १ २ ३ ४ ५ ६ ७ ८ ९) رغم أنهم يستخدمون الأرقام الغربية عملياً.
لذلك، كلا النظامين المستخدمين في العالم العربي هما “عربيان” من حيث التطوير والتهذيب وادخال الصفر واعتماد النظام العشري، والفرق بينهما هو جغرافيا المشرق والمغرب العربي. وهنا، في سياق السلسلة سنميز بينهما بالقول: أرقام عربية “هندية أو لاتينية”
إذن لدينا نظامان في النصوص العربية الرقمية:
| الاسم الشائع | الأرقام | التسمية في يونيكود | النطاق في Unicode |
|---|---|---|---|
| أرقام لاتينية | 0 1 2 3 4 5 6 7 8 9 | Western Arabic (Latin) | U+0030–U+0039 |
| أرقام هندية / عربية-هندية | ٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩ | Arabic-Indic (Eastern) | U+0660–U+0669 |
هذا التمييز ليس أكاديمياً، إنه الأساس الذي يبني عليه معيار يونيكود كيفية تخزين كل رقمٍ في الذاكرة ومعالجته برمجياً. والمتصفح لا يرى “ثلاثة وعشرين”، بل يرى نقطتَي ترميز مختلفتين تماماً: U+0032 U+0033 في الأرقام اللاتينية، مقابل U+0662 U+0663 في الهندية.
الرقم الذي تراه على الشاشة ليس صورةً، إنه حرف له هوية رقمية فريدة في جدول عالمي يضم أكثر من مليون رمز.
ثانياً: متى تستخدم أيهما؟
لا توجد قاعدةٌ مطلقة، لكن هناك عرفٌ راسخٌ في الكتابة العربية المعاصرة:
| السياق | النظام المفضّل | مثال |
|---|---|---|
| متن المقالات والصحافة العربية | هندية (١٢٣) | بلغت التكلفة ١٥٠ ريالاً |
| الكود البرمجي والمعادلات التقنية | لاتينية (123) | const price = 150; |
| العناوين والروابط (URLs) | لاتينية (123) | zyyazan.sy/article-2026 |
| الفواتير والمستندات الرسمية العربية | هندية (١٢٣) غالباً | المبلغ: ١٬٢٥٠ ر.س |
| التطبيقات متعددة اللغات | يتحدد بالـ locale | ar-SA ← هندية / ar-MA ← لاتينية |
لاحظ السطر الأخير جيداً: ليس كل العرب يستخدمون الأرقام الهندية. المغرب والجزائر وتونس تستخدم اللاتينية في معظم سياقاتها المكتوبة، بينما مصر والخليج والشام يميلون للهندية في النصوص الرسمية. هذا الاختلاف الجغرافي — كما سنرى في المقال الثاني — هو بالضبط ما تعالجه واجهة Intl في JavaScript تلقائياً.
ثالثاً: تأثير الخط (Font) على عرض الأرقام
هنا تبدأ المشكلة البرمجية الحقيقية. معظم المطورين يظنون أن الأرقام الهندية ستظهر صحيحةً بمجرد كتابتها في الكود. الحقيقة أن الظهور يعتمد اعتماداً كبيراً على الخط المستخدم.
الخطوط العربية تنقسم إلى فئتين من حيث دعم الأرقام:
الخطوط الداعمة للأرقام الهندية بشكلٍ كامل
هذه الخطوط تمتلك رسومات (glyphs) مصممةٌ خصيصاً للأرقام الهندية، فتظهر بشكلٍ طبيعيٍ ومتسقٍ مع باقي الحروف العربية:
- Scheherazade New — مثل:
من مشروع SIL المفتوح المصدر، ممتازٌ للنصوص الطويلة (٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩)
- Amiri — (نفس الخط المستخدم في المنصة)
خط أكاديمي راقٍ يستخدمه كثير من المواقع التعليمية (٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩)
- Noto Naskh Arabic — مثل:
خط غوغل، الأكثر شمولاً وتوافقاً (٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩)
- Lateef — مثل:
سينديّ الطابع، يدعم الأرقام الهندية والأوردية (٠ ١ ٢ ٣ ٤ ٥ ٦ ٧ ٨ ٩)
الخطوط التي تعرض الأرقام الهندية بصيغةٍ لاتينية
بعض الخطوط العربية الشائعة — خاصةٌ تلك المصممة للشاشات، لا تملك رسوماتٍ مستقلةٍ للأرقام الهندية، فتعود تلقائياً للأرقام اللاتينية حتى لو كانت قيمة يونيكود المخزّنة هندية:
- Cairo —
(نفس خط العناوين في المنصة) شائعٌ جداً في مواقع الويب العربية لكنه يعرض الأرقام لاتينياً (0 1 2 3 4 5 6 7 8 9)
- Tajawal — مثل:
خفيف وجميل للشاشات، لكن له المشكلة ذاتها (0 1 2 3 4 5 6 7 8 9)
- Almarai — مثل:
مستخدم واسعاً في الخليج، الأرقام فيه لاتينية (0 1 2 3 4 5 6 7 8 9)
وهذا يعني أنك قد تكتب ١٢٣ في الكود، وتختار خط Cairo، فيظهر على الشاشة 123 — دون أن تُغيّر شيئاً أنت!
الخط ليس مجرد جماليات — إنه جزء من منظومة العرض التي تحدد كيف يُقرأ المحتوى فعلياً على الشاشة.
رابعاً: كيف تتحكم في ذلك برمجياً؟
لدينا مستويان من التحكم: مستوى CSS ومستوى JavaScript.
على مستوى CSS — خاصية font-variant-numeric
توفر CSS خاصيةً متخصصةً للتحكم في عرض الأرقام داخل الخط:
/* تفعيل الأرقام المناسبة لسياق النص العربي */
.arabic-content {
font-variant-numeric: normal; /* الافتراضي — يعتمد على الخط */
}
/* إجبار الأرقام على أن تكون متناسبة في العرض */
.financial-table {
font-variant-numeric: tabular-nums; /* أرقام بعرض متساوٍ — مفيد للجداول */
}
/* إجبار الخط على استخدام أرقام القديمة أو الحديثة */
.old-style {
font-variant-numeric: oldstyle-nums; /* أرقام بارتفاعات متفاوتة — للنص الأدبي */
}
لكن هذه الخاصية تعمل فقط إذا كان الخط نفسه يدعم هذه المتغيرات. الحل الأشمل هو اختيار الخط المناسب من البداية، أو استخدام JavaScript لتحويل الأرقام برمجياً.
على مستوى JavaScript — تحويل الأرقام يدوياً
إذا كنت تريد ضمان ظهور الأرقام الهندية بصرف النظر عن الخط، يمكنك تحويلها برمجياً:
// دالة تحويل الأرقام اللاتينية إلى هندية
function toArabicIndic(number) {
return number.toString().replace(/[0-9]/g, (d) => '٠١٢٣٤٥٦٧٨٩'[d]);
}
// دالة تحويل الأرقام الهندية إلى لاتينية
function toLatinDigits(number) {
return number.toString().replace(/[٠-٩]/g, (d) =>
'٠١٢٣٤٥٦٧٨٩'.indexOf(d)
);
}
// أمثلة
console.log(toArabicIndic(2026)); // ← ٢٠٢٦
console.log(toArabicIndic(150.5)); // ← ١٥٠.٥
هذا النهج مضمونٌ لكنه يدوي، وسيصبح عبئاً في المشاريع الكبيرة. لهذا السبب بالتحديد وُجدت واجهة Intl.NumberFormat ، وهي موضوع مقالنا القادم.
خامساً: تأثير الأرقام على السيو والبحث
سؤالٌ يطرحه كثير من أصحاب المواقع: هل تؤثر الأرقام الهندية على ظهوري في محركات البحث؟
الجواب الدقيق: نعم، لكن بشكلٍ غير مباشر.
محرك البحث يُفرّق بين ٢٠٢٦ و2026 عند المطابقة الحرفية. إذا بحث المستخدم عن “أرباح ٢٠٢٦” وصفحتك تحتوي فقط “أرباح 2026″، قد لا تُطابَق بشكلٍ مثالي. لكن غوغل أصبح ذكياً بما يكفي لفهم السياق وربط النظامين في حالاتٍ كثيرة. مع ذلك، الأفضل دائماً هو اتساق النظام الرقمي داخل الصفحة الواحدة.
أما الروابط الدائمة (Slugs) فقاعدتها مطلقة: استخدم الأرقام اللاتينية دائماً. الأرقام الهندية في الروابط تُسبّب مشاكل في الترميز والمشاركة. (راجع مقالتنا: السيو داخل الصفحة — ما يفعله الكاتب بيده)
سادساً: الفاصل الألفي وعلامة العشرية — تفصيلٌ يُغفَل كثيراً
في الكتابة المالية، الأرقام الكبيرة تحتاج إلى فواصلٍ للقراءة. لكن هذه الفواصل تختلف بحسب المنطقة:
| المنطقة | الفاصل الألفي | الفاصل العشري | مثال: ١٢٣٤٥.٦ |
|---|---|---|---|
| السعودية / الإمارات / مصر | ٬ (فاصلة عليا) | ٫ (نقطة عليا) | ١٢٬٣٤٥٫٦ |
| المغرب / تونس / الجزائر | , (فاصلة عادية) | . (نقطة) | 12,345.6 |
| بعض دول أوروبا (بتأثير فرنسي) | مسافة غير قابلة للكسر | , (فاصلة) | 12 345,6 |
تخيّل أنك تبني نظام فواتيرٍ لعميلٍ سعودي وآخرٍ مغربي. إذا استخدمت قيمةً ثابتةً مكتوبةً يدوياً، ستكون مخطئاً لأحدهما بالضرورة. الحل الوحيد المستدام هو ترك المنطقة الجغرافية (locale) تحدد هذه الفواصل تلقائياً، وهو بالضبط ما سنبنيه في المقال القادم.
خلاصة المقال والخطوة القادمة
ما تعلمناه في هذا المقال يمكن تلخيصه في ثلاث نقاطٍ جوهرية:
- النظامان مختلفان برمجياً: الأرقام الهندية والأرقام اللاتينية ليستا مجرد مظهرَين مختلفَين للعدد ذاته، بل هما نقطتا ترميز مستقلتان في يونيكود
- الخط يتحكم بالعرض: اختيارك للخط قد يُغيّر كيفية عرض الأرقام على الشاشة بصرف النظر عما كتبت
- الفواصل تختلف بحسب المنطقة: لا توجد صيغةٌ “عربيةٌ موحدة” للأرقام الكبيرة، والحل الصحيح هو اعتماد الـ locale لا القيم الثابتة
الخطوة التالية الموصى بها:
تابع معنا: توطين الأرقام والتواريخ بـ Intl.NumberFormat و Intl.DateTimeFormat
المراجع والمصادر:
- معيار يونيكود — الكتلة العربية: unicode.org — Arabic Block U+0600
- تاريخ الأرقام وأنظمة العد وأمور مثيرة للاهتمام: Archimedes’ Lab Project
- توثيق MDN — خاصية
font-variant-numeric: developer.mozilla.org - مشروع Noto Fonts من غوغل: fonts.google.com — Noto Naskh Arabic
- خط Amiri المفتوح المصدر: amirifont.org
منصة ذي يزن © ٢٠٢٦
سلاسل التوطين
دليل معايرة البيانات المالية — ٤ مقالات
سلسلة دليل معايرة البيانات المالية — ٤ مقالات | منصة ذي يزن © ٢٠٢٦




