Arabic engineering reference
Arabic Letter Forms: 28 Letters and Joining Rules
Arabic letters change visual shape according to their joining context, while the stored base character normally stays the same. This table identifies the twenty-eight basic letters and their contextual shapes, explains the six letters that do not join onward, and separates a visual teaching aid from production text encoding.
The 28-letter shape table
The contextual cells deliberately show Unicode compatibility glyphs for visual identification against the chart. Do not copy those cells into application text; the Copy table button copies only the base letters, code points and joining column. A dash means no distinct initial or medial joining form exists; glyph appearance still depends on the available font.
| Base / Unicode name | Code point | Isolated | Initial | Medial | Final | Joins onward |
|---|---|---|---|---|---|---|
| ا / Alef | U+0627 | ﺍ | — | — | ﺎ | No |
| ب / Beh | U+0628 | ﺏ | ﺑ | ﺒ | ﺐ | Yes |
| ت / Teh | U+062A | ﺕ | ﺗ | ﺘ | ﺖ | Yes |
| ث / Theh | U+062B | ﺙ | ﺛ | ﺜ | ﺚ | Yes |
| ج / Jeem | U+062C | ﺝ | ﺟ | ﺠ | ﺞ | Yes |
| ح / Hah | U+062D | ﺡ | ﺣ | ﺤ | ﺢ | Yes |
| خ / Khah | U+062E | ﺥ | ﺧ | ﺨ | ﺦ | Yes |
| د / Dal | U+062F | ﺩ | — | — | ﺪ | No |
| ذ / Thal | U+0630 | ﺫ | — | — | ﺬ | No |
| ر / Reh | U+0631 | ﺭ | — | — | ﺮ | No |
| ز / Zain | U+0632 | ﺯ | — | — | ﺰ | No |
| س / Seen | U+0633 | ﺱ | ﺳ | ﺴ | ﺲ | Yes |
| ش / Sheen | U+0634 | ﺵ | ﺷ | ﺸ | ﺶ | Yes |
| ص / Sad | U+0635 | ﺹ | ﺻ | ﺼ | ﺺ | Yes |
| ض / Dad | U+0636 | ﺽ | ﺿ | ﻀ | ﺾ | Yes |
| ط / Tah | U+0637 | ﻁ | ﻃ | ﻄ | ﻂ | Yes |
| ظ / Zah | U+0638 | ﻅ | ﻇ | ﻈ | ﻆ | Yes |
| ع / Ain | U+0639 | ﻉ | ﻋ | ﻌ | ﻊ | Yes |
| غ / Ghain | U+063A | ﻍ | ﻏ | ﻐ | ﻎ | Yes |
| ف / Feh | U+0641 | ﻑ | ﻓ | ﻔ | ﻒ | Yes |
| ق / Qaf | U+0642 | ﻕ | ﻗ | ﻘ | ﻖ | Yes |
| ك / Kaf | U+0643 | ﻙ | ﻛ | ﻜ | ﻚ | Yes |
| ل / Lam | U+0644 | ﻝ | ﻟ | ﻠ | ﻞ | Yes |
| م / Meem | U+0645 | ﻡ | ﻣ | ﻤ | ﻢ | Yes |
| ن / Noon | U+0646 | ﻥ | ﻧ | ﻨ | ﻦ | Yes |
| ه / Heh | U+0647 | ﻩ | ﻫ | ﻬ | ﻪ | Yes |
| و / Waw | U+0648 | ﻭ | — | — | ﻮ | No |
| ي / Yeh | U+064A | ﻱ | ﻳ | ﻴ | ﻲ | Yes |
Six letters break onward joining
Alef, dal, thal, reh, zain and waw can join a preceding letter on their right, but do not join the following letter on their left. Reading order and screen direction are different concepts: “onward” here means the next letter in the logical text sequence.
The table covers the conventional 28 basic letters, not every letter in the Arabic block. Hamza variants, teh marbuta, alef maksura and letters used in other Arabic-script languages require additional cases. Do not infer a complete shaping algorithm from this teaching table.
Store letters, let the renderer shape them
In application strings, use ordinary base letters in logical order. A shaping engine chooses contextual glyphs using the font. Unicode discourages encoding the contextual shapes as characters for general interchange; that would couple stored text to a visual form.
const word = "\u0643\u062A\u0628"; // base letters, logical order
// HTML example: <span lang="ar" dir="rtl">...</span>
// Never replace each letter with a FE** presentation-form character.Debug joining without rewriting content
Guidance: check the original code points, font coverage, direction markup and unexpected format controls before changing text. Keep a representative set of words with initial, medial and final joins in visual regression checks. Use the range reference to distinguish encoded letters from compatibility forms.
Related references and tools
- Arabic Digits: Unicode and JavaScript Reference
- Arabic Tashkeel: Diacritics and Removal Regex
- Arabic Unicode Ranges: Blocks, Regex and Font Subsets
- Arabic Language Codes: lang, dir and hreflang
- Arabic Numeral Converter
- Arabic Text Normalizer
- Arabic Regex Patterns
- Arabic Search Normalization
- What lang="ar" and dir="rtl" each do
Questions and answers
Which six basic letters do not join onward?
Alef, dal, thal, reh, zain and waw do not join the following letter on their left. They can still connect to a preceding joining letter on their right.
Should I store isolated or medial presentation forms?
Store ordinary base letters in logical order. Contextual presentation forms in the table are visual reference material; the rendering engine should choose glyph shapes from the font.