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

- تلاوة صوتية: يمكن للمستخدم النقر على أي آية ضمن الصفحة لتشغيل تلاوتها الصوتية، ويتم تظليل الآية المقروءة، ويمكن أيضًا تشغيل الانتقال التلقائي للآيات التالية.

- المشاركة كصورة: يمكن مشاركة أي آية بسهولة كصورة عالية الدقة وبنقرة واحدة.
- إضافة إشارات مرجعية: يتيح إمكانية إضافة إشارات لحفظ المواضع والوصول إليها بشكل سريع.

نظرة تقنية على المشروع
اعتمدت لبناء الواجهة الأمامية على HTML و CSS و JavaScript، لم أستخدم أطر عمل ثقيلة لضمان أن يكون التطبيق سريعًا، وإليكم شرحًا لطريق تنفيذ أهم وظائف التطبيق:
التظليل والعرض
للتأكد من أن النص المعروض يطابق طبعة مصحف مجمع الملك فهد بنسبة 100%، لم أستخدم الخطوط العادية، بل اعتمدت على مشروع quran-svg من الموسوعة القرآنية الذي عرفنا به الأخ @عبدالله عبيد .
يوفر هذا المشروع صور متجهة (Vector) مرفقة ببيانات دقيقة تحتوي على إحداثيات الآيات، وقد استخدمت هذه البيانات لعمل تظليل للآيات بدقة عالية.

المزامنة الصوتية
بسبب مشكلة اختلاف أنظمة العد بين الروايات الموضحة في المقدمة، كنت أحتاج إلى قضاء وقت طويل لعمل المزامنة الصوتية للقراءات الشائعة التي تعتمد العد الكوفي، ولذلك بالاعتماد على مشروع qiraat-ayah-map من الموسوعة القرآنية أيضًا قمت ببناء ملف مرجعي بتنسيق JSON لحالات الفروق بين نظامي العد.
ثم برمجت مشغل الصوت ليستخدم ملف الفروقات ليعرف رقم الآية التي تم النقر عليها في نظام العد الكوفي ثم يشغل بناء على ذلك الملف الصوتي المناسب.
عالج هذا الحل مشكلة التزامن الأساسية المرتبطة باختلاف عدد الآيات بين الروايتين، لكن المواضع التي تدمج فيها آيتان من ورش في آية واحدة عند حفص لم يتم معالجتها، ففي هذه الحالة وبسبب الاعتماد على صوتيات مقسمة حسب حفص، يحتوي ملف صوتي واحد أحيانًا على آيتين، ولذلك عند النقر على أي منهما، يتم تلاوتهما كلتاهما، وحل هذه المشكلة يتطلب تقسيم الملف الصوتي إلى ملفين يدويًا.
تجربة التطبيق
يمكنكم تجريب التطبيق والمساهمة في تطويره من خلال مستودعه المفتوح على GitHub:
https://github.com/alinice1998/warsh-digital-mushaf
كما يمكنكم تجربة التطبيق مباشرة (Live Demo) عبر الرابط التالي:
https://alinice1998.github.io/warsh-digital-mushaf/
وختامًا، بصفتكم مطورين مهتمين بالتقنيات القرآنية، ما هي أبرز التحديات التي واجهتكم عند العمل على تشغيل الصوتيات وتظليلها في الروايات المختلفة عن رواية حفص، وهل تفضلون الحلول البرمجية للفروقات كما فعلت في هذا التطبيق، أن ترون أنه من الأفضل توفير بيانات جاهزة لكل رواية؟
وهل لديكم أي أفكار لحل المشكلة الأخيرة التي ذكرتها حول الملفات الصوتية التي تتضمن آيتين وبالتالي عند النقر على آية قد يتم تلاوة الآية التي قبلها معها أو الآية التي بعدها معها؟