2 min readMohammad Shaker

[Français] Arabic Diacritics Done Right: How Amal Handles Tashkeel, Shadda, and Hamza

[Traduction] Amal handles the full complexity of Arabic diacritics: 8 tashkeel marks, 4 alef variants, 3 hamza variants, and Lam-Alef ligatures. The app's speech r...

Engineering

Réponse rapide

[Traduction] Amal handles the full complexity of Arabic diacritics: 8 tashkeel marks, 4 alef variants, 3 hamza variants, and Lam-Alef ligatures. The app's speech r...

# Arabic Diacritics Done Right: How Amal Handles Tashkeel, Shadda, and Hamza [Contenu complet en français] ## Arabic Diacritics Done Right: How Amal Handles Tashkeel, Shadda, and Hamza Amal handles the full complexity of Arabic diacritics: 8 tashkeel marks (fatha, damma, kasra, shadda, sukun, fathatan, dammatan, kasratan), 4 alef variants (standard, madda, hamza above, hamza below, wasla), 3 hamza variants (isolated, on waw, on ya), and Lam-Alef ligatures. The app's speech recognition, text rendering, and similarity scoring all treat diacritized Arabic ("كَتَبَ") differently from undiacritized Arabic ("كتب") — a critical distinction most Arabic learning apps ignore. ### Why Diacritics Matter for Learning **The Ambiguity Problem** Arabic without diacritics is ambiguous: - "كتب" can mean: - "kataba" (he wrote) — past tense - "kutub" (books) — plural noun - "kutiba" (it was written) — passive voice All are spelled identically without diacritics. Diacritics remove ambiguity. **The Learning Progression** 1. **Beginner**: Learn to read WITH diacritics (easy — vowels are marked) 2. **Intermediate**: Practice WITH diacritics until automatic 3. **Advanced**: Gradually remove diacritics, reading becomes harder 4. **Fluent**: Read without diacritics fluently (native-level reading) Most Arabic learning apps skip step 1 — they don't teach diacritics at all, or strip them away. This teaches bad habits. Amal's progression is scientifically correct. ### Our Unicode-Level Implementation **The Diacritical Marks** (8 total) ```dart // lib/src/utils/arabic_extension.dart class ArabicE

Articles connexes