Skip to content

Arabizi Mapping

mmaher88 edited this page Mar 9, 2026 · 1 revision

Arabizi Mapping Reference

Complete mapping of Latin characters to Arabic script used by Laren.

Number Mappings

Numbers are used in Arabizi to represent Arabic letters that have no Latin equivalent:

Input Arabic Name Example
2 ء أ إ ق Hamza, Alef variants, Qaf 2amar → قمر
3 ع Ain 3arab → عرب
5 خ Kha 5alas → خلاص
6 ط Taa (emphatic) 6abee3i → طبيعي
7 ح Haa 7abibi → حبيبي
8 ق Qaf 8alb → قلب
9 ص Sad 9abr → صبر

Consonant Mappings

Input Arabic Notes
b ب
t ت ط Both taa and emphatic taa
g ج Egyptian pronunciation
j ج
d د ض Both dal and dad
r ر
z ز ظ ذ Zayn, dhaa, dhal
s س ص Both seen and sad
f ف
q ق
k ق ك Both qaf and kaf
l ل
m م
n ن
h ه ح Both ha and haa
w و
y ي
p ب (no P in Arabic)
v ف (no V in Arabic)
x خ
c ك

Vowel Mappings

Vowels have a special SKIP option — Arabic doesn't write short vowels, so SKIP produces no output character:

Input Arabic Notes
a ∅ ا أ ى ه ة SKIP + alef + hamza + maqsura + ha + ta marbuta
i ∅ ي ا أ إ SKIP + ya + alef variants
u ∅ و أ SKIP + waw + hamza
o ∅ و أ Same as u
e ∅ ي ا أ إ Same as i

Digraphs

Multi-character combinations (matched before single characters):

Input Arabic Notes
sh ش Sheen
kh خ Kha
gh غ Ghain
th ث ذ Tha or Dhal
dh ذ ض Dhal or Dad
aa ا آ Long alef / alef madda
ee ي Long ya
oo و Long waw
ou و Waw

Apostrophe Variants

Input Arabic Notes
3' غ Ghain (alternative)
7' خ Kha (alternative)
6' ظ Dhaa (alternative)
9' ض Dad (alternative)
d' ذ Dhal (alternative)
t' ث Tha (alternative)
s' ش Sheen (alternative)

Doubled Consonants

Typing a letter twice maps to a single Arabic letter (with implied shadda):

Input Arabic
bb ب
tt ت ط
dd د ض
rr ر
ss س ص
ff ف
kk ك
ll ل
mm م
nn ن
yy ي
ww و
zz ز
gg ج
hh ه

How Matching Works

flowchart TD
    A["Input at position N"] --> B{"Try longest match first"}
    B -->|"3+ chars: 3', 7', etc."| C["Apostrophe variants"]
    B -->|"2 chars: sh, kh, th, etc."| D["Digraphs"]
    B -->|"2 chars: bb, tt, etc."| E["Doubled consonants"]
    B -->|"1 char"| F["Single mappings"]
    B -->|"1 digit"| G["Number mappings"]

    C --> H["For each Arabic option:<br/>recurse at position N+2 or N+3"]
    D --> H
    E --> H
    F --> I["For each Arabic option:<br/>recurse at position N+1"]
    G --> I

    style A fill:#e1f5fe
    style H fill:#c8e6c9
    style I fill:#c8e6c9
Loading

Clone this wiki locally