/alquran-tools

Various tools for Parsing Quran Tajweed, Buck, etc.

Primary LanguagePHPGNU General Public License v3.0GPL-3.0

بِسْمِ اللهِ الرَّحْمٰنِ الرَّحِيْمِ

Quran Tools for Parsing Tajweed and Buck

These PHP tools are to be used with the AlQuran.cloud and GlobalQuran.com APIs. They are made available so you may get the most out of the APIs.

There's a React equivalent of this package @ https://github.com/aamirbhat382/Tajweed.

What do they contain

For now, a Tajweed and Buck helper. Each section is detailed below.

Install and Get Started

The tools add developer libraries you can use in your application. Install using composer:

composer require alquran/tools

Tajweed Example

To get tajweed text to become legible, use:

<?php
require_once('vendor/autoload.php');

$parser = new \AlQuranCloud\Tools\Parser\Tajweed();
$html = $parser->parse($text); // $text is the output text of a Verse from quran-tajweed edition. For example: http://api.alquran.cloud/ayah/24:35/quran-tajweed. Also see data/tajweed.json.

Buckwalter Transliteration example

To get tajweed text to become legible, use:

<?php
require_once('vendor/autoload.php');

$parser = new \AlQuranCloud\Tools\Parser\Buck();
$arabic = $parser->toArabic($text); // $text is the output text of a Verse from quran-buck edition. For example: http://api.alquran.cloud/ayah/24:35/quran-buck.

Tajweed Documentation

See Tajweed Documentation.

Buck (Buckwalter Transliteration) Documentation

See Buck Documentation.

Are there any known Issues

Yes, with the Tajweed parser. Webkit has a known bug that breaks Arabic with inline tags. There is an experimental fix in the Tajweed Parse class for this using the Zero Width Joiner (‍), but it still needs some work. I've manually tried this on some Ayahs and ZWJ is not smart enough to parse all the characters and join them properly, so this is not ideal. See See https://stackoverflow.com/questions/11155849/partially-colored-arabic-word-in-html and https://bugs.webkit.org/show_bug.cgi?id=6148. The issue with parsing in Chrome seems to have been resolved with Chrome's new layout implementation (https://www.chromium.org/blink/layoutng). It has been tested on version 77.0.3865.90.

Credits

Most of this code is created using logic from the Global Quran website and codebase.