صيغة EPUB في جوهرها حاوية ZIP تحتوي على ملفات HTML وCSS وصور. لا شيء غامض فيها. لكنّ بناء كتاب عربي سليم يحتاج انتباهاً لتفاصيل يتجاهلها أغلب من يعمل باللاتينية. هذا الدليل يغطّي كلّ ما تحتاجه.

الأساسيات: الاتجاه والترميز

قبل أيّ شيء آخر، ملفّ HTML الداخلي يحتاج سطرين:

<html dir="rtl" lang="ar">

dir="rtl" يُعلم القارئ أنّ النصّ يسير من اليمين إلى اليسار. وlang="ar" يُعلمه أنّ اللغة عربية — وهذا يؤثّر على اختيار الخطّ وقواعد كسر الأسطر والتشكيل.

ترميز الملفّ يجب أن يكون UTF-8 دائماً. أيّ ترميز آخر سيُفقدك الحركات أو يُشوّه الحروف.

في ملف package.opf، أضف:

<spine page-progression-direction="rtl">

هذا يجعل الصفحات تتقدّم من اليمين إلى اليسار — أي أنّ الصفحة الأولى تظهر على اليمين عند فتح الكتاب.

تنبيه مهمّ: لا تستخدم CSS لتحديد الاتجاه

مواصفة EPUB3 واضحة في هذا: لا تعتمد على direction: rtl في CSS لتحديد اتجاه النصّ. استخدم سمات HTML (dir وlang). خاصية CSS direction مخصّصة للتنسيق المرئي، لكنّ سمة dir هي ما يفهمه محرّك الاتجاه الثنائي (BiDi engine) في القارئ.

CSS: استخدم الخصائص المنطقية

بدلاً من:

margin-left: 1em;
text-align: left;

اكتب:

margin-inline-start: 1em;
text-align: start;

الخصائص المنطقية تتكيّف تلقائياً مع اتجاه النصّ. start في العربية يعني اليمين، وفي الإنجليزية يعني اليسار. كتاب واحد بأسلوب واحد يعمل في الاتجاهين.

شيئان يجب تعطيلهما في النصّ العربي:

body {
    letter-spacing: 0;
    word-spacing: normal;
}

التباعد بين الأحرف يكسر الربط العربي ويجعل الكلمات تبدو مفكّكة. تجنّبه تماماً.

الخطوط: ضمّنها ولا تتركها للجهاز

إذا لم تضمّن خطّاً عربياً في الكتاب، يختار كلّ جهاز خطّه الافتراضي — وقد لا يدعم التشكيل أو أشكال الحروف الموضعية. الحلّ:

@font-face {
    font-family: "KitabFont";
    src: url("fonts/NotoNaskhArabic-Regular.ttf");
}

body {
    font-family: "KitabFont", serif;
}

خطوط موثوقة للعربية: - Noto Naskh Arabic — من Google، مجّاني، يدعم كلّ الحركات - Amiri — مستوحى من خطّ بولاق الأميري، جميل للكتب الأدبية - Scheherazade — من SIL، ممتاز للنصوص الدينية والتراثية

تأكّد أنّ الخطّ يحتوي على ميزات OpenType اللازمة — init وmedi وfina (الأشكال الموضعية) وrlig وliga (الربط والتراكيب). أغلب الخطوط الحديثة تحتويها، لكن تحقّق.

ارتفاع السطر: اتركه يتنفّس

الحركات العربية توضع فوق الحروف وتحتها. إذا كان ارتفاع السطر ضيّقاً، تُقصّ الحركات أو تتداخل مع السطر الذي فوقها. القاعدة:

body {
    line-height: 1.8;
}

قيمة 1.8 إلى 2.0 مريحة للنصوص المشكّلة. النصوص بدون تشكيل يمكن أن تنزل إلى 1.6.

ZWJ و ZWNJ: أدوات دقيقة

حرفان غير مرئيين لكنهما مهمّان:

ZWNJ (U+200C): يمنع الربط بين حرفين. مفيد حين تريد كسر الربط بين لام وألف لغرض طباعي، أو في بعض لغات الخطّ العربي (الفارسية، الأردية).

ZWJ (U+200D): يُجبر الربط. مفيد حين تقسم كلمة بين عنصرين في HTML (مثلاً لتلوين حرف) وتريد الحفاظ على ترابط الحروف:

<p dir="rtl">عرب&#x200D;<span style="color:red">&#x200D;ي</span></p>

بدون ZWJ، المتصفّح قد يعرض «عرب» و«ي» منفصلتين.

استخدمهما بحذر — كلّ ZWJ أو ZWNJ تضيفه هو حرف خفيّ قد يعيق البحث داخل الكتاب.

علامات الترقيم

استخدم علامات الترقيم العربية:

اللاتيني العربي
? ؟
; ؛
, ،
% ٪

ليس تفضيلاً جمالياً — علامات الترقيم اللاتينية مصنّفة كأحرف «محايدة» في خوارزمية BiDi، وقد تُعرض في مكان خاطئ في سياق RTL.

قائمة التحقّق

  1. ✅ <html dir="rtl" lang="ar"> في كلّ ملف HTML
  2. ✅ page-progression-direction="rtl" في <spine>
  3. ✅ ترميز UTF-8
  4. ✅ خطّ عربي مضمّن (@font-face)
  5. ✅ خصائص CSS منطقية (start/end بدل left/right)
  6. ✅ letter-spacing: 0 وword-spacing: normal
  7. ✅ line-height كافٍ (1.8+)
  8. ✅ علامات ترقيم عربية
  9. ✅ اختبار EPUBCheck للتحقّق من سلامة الملف
  10. ✅ اختبار على جهاز حقيقي (أو أكثر)

أدوات مفيدة