Introduction to Gurmukhi Script

Gurmukhi is the official script of Punjabi in Indian Punjab and the script of Sikh scripture — a distinct writing tradition from the Perso-Arabic Shahmukhi used for Punjabi in Pakistan. Like other Brahmic scripts it pairs consonants carrying an inherent vowel with dependent vowel signs and marks, but unlike Devanagari it has no continuous headline, and its everyday complexity comes from mark placement and subjoined (pairī) forms rather than tall conjunct stacks.

1Quick Orientation

Gurmukhi is the primary script for Punjabi in India. Like other Brahmic scripts, it uses consonants with an inherent vowel, plus dependent vowel signs (mātrās) and other marks.

Script identity
Name
Gurmukhi ("from the mouth of the Guru") — standardized by Guru Angad, the second Sikh Guru, around 1535, from the earlier Laṇḍā scripts
ISO 15924
Guru
In Unicode since
Version 1.1 (1993), block U+0A00–U+0A7F
Languages
Official script of Punjabi in Punjab, India, and the exclusive script of Sikh scripture (the Guru Granth Sahib) — roughly 31 million native speakers in India per the 2011 census, plus a large diaspora
Not to confuse
Punjabi in Pakistan is written in Shahmukhi, a right-to-left Perso-Arabic script closely related to the Urdu alphabet — same language, unrelated writing system
Key differences vs. Devanagari (important for designers)
  • No continuous headline (shirorekha). Many letters have top strokes, but they do not form one unbroken bar across the word.
  • Everyday Punjabi uses fewer tall conjunct stacks. Common complexity comes from mark placement and pairī letters (subjoined forms).
  • Marks drive legibility. If marks collide or become ambiguous at small sizes, readability drops fast.
What tends to break in real-world rendering
  • Incorrect placement/reordering of ਿ (sihārī).
  • Addak colliding with top vowels (, , , ).
  • Dot marks ( bindi, tippi, nukta) becoming too tiny or crashing into neighbors.
  • Below vowels (/) getting clipped in UI due to tight line-height/containers.
2Typographic Zones

Even without a continuous headline, it helps to think in zones: a core body band plus reserved space above and below for marks. This makes it easier to debug collisions and to set sane line spacing.

Gurmukhi typographic zones Diagram showing the ascender zone, core baseline band, and descender zone, with a sample word strip. Visual anatomy Gurmukhi zones: no continuous headline Design goal: reserve headroom above and depth below the baseline band. arrow_upward Ascender zone Top vowel signs, addak, and dots live here — fonts need headroom to avoid line-to-line clashes. view_agenda Core body band Base consonants sit here. No unbroken headline bar — top strokes on individual letters do not connect. Baseline — primary alignment line arrow_downward Descender zone Below vowels need room here — UI clipping often happens when containers or line-height are too tight. text_fields ਪੰਜਾਬੀ · ਗੁਰਮੁਖੀ
Baseline and stability
  • Baseline: the primary alignment line. If glyphs have inconsistent "sit," paragraphs look uneven.
  • Ascender zone: top vowel signs, addak, and dots often live here; fonts need headroom to avoid line-to-line clashes.
  • Descender zone: below vowels need room; UI clipping often happens here.
UI rule of thumb
For Punjabi UI text, use slightly generous line-height. Tight leading is the #1 cause of clipped / and crushed top marks.
3Vowels & Vowel Signs (Mātrās)

Consonants carry an inherent vowel by default. To change the vowel, Gurmukhi uses dependent vowel signs (mātrās) that attach around the consonant: right side, above, below, and sometimes to the left.

Gurmukhi vowel signs and the zones they occupy Five example syllables showing pre-base, post-base, above-base, and below-base vowel sign placement. Vowel signs Vowel signs by placement ਕ (base consonant) shown with each attaching vowel sign. arrow_back Pre-base ਕਿ sihārī — left arrow_forward Post-base ਕਾ right side arrow_upward Above-base ਕੇ top zone arrow_downward Below-base ਕੁ descender zone call_merge Top + right ਕੋ combined Reordering example Logical: ਕ + ਿ Typed/stored as consonant then vowel sign — ਕਿ rendered with the mark to the left
The "pre-base" vowel sign ਿ (sihārī)
  • You type consonant + ਿ in Unicode order.
  • It renders visually to the left of the consonant.
  • That reordering is done by the shaping engine + font rules. If shaping is missing, ਿ may appear on the right or collide badly.
Practical QA test
Test ਕਿ ਗਿ ਪਿ and words like ਕਿਤਾਬ. Watch whether the left-side mark steals too much space or overlaps the previous letter in tight tracking.
4Consonant Modifiers & Dot Marks
Addak — gemination (doubling)

Addak indicates the following consonant is doubled (geminated). It sits in the upper zone and must remain distinct from both top vowels and dot marks.

Addak vs. no-addak comparison Side-by-side comparison of a word without addak and the same word with addak, showing where the mark sits in the upper zone. Gemination mark Addak sits in the upper zone Compare the same word without and with addak. remove No addak ਪਤਾ Single consonant, no gemination content_copy With addak ਪੱਤਾ addak, upper zone Following consonant doubled (geminated)
Bindi and tippi — nasalization

Punjabi uses bindi/tippi as nasalization marks. Typography-wise the big goals are dot visibility at text sizes, consistent placement, and collision handling with top vowels/addak.

Nukta — borrowed sounds

Nukta extends the script for certain Persian/Arabic sounds. Unicode includes dedicated letters like ਖ਼ ਗ਼ ਜ਼ ਫ਼, and many fonts also support "base + nukta" sequences. Either way, nukta placement must not sink into the baseline or turn into noise at small sizes.

Bindi, tippi, and nukta dot marks Three examples showing bindi, tippi, and nukta marks and what each does. Dot marks What they do, what to watch for record_voice_over Bindi (nasalization) ਹਾਂ Dot must stay visible at small text sizes. record_voice_over Tippi (nasalization) ਹੰਸ Must not collide with addak or top vowels. translate Nukta (borrowed) ਖ਼ Must not sink into the baseline or read as noise.
5Clusters & Pairī Letters (Subjoined Forms)

Punjabi does use clusters, but common complexity is pairī (subjoined) forms rather than huge vertical stacks. These are typically encoded using virama (੍), and then shaped by the font/engine into compact subjoined forms.

Pairī forms and cluster encoding Diagram showing a stored consonant + virama + consonant sequence shaped into a compact subjoined pairī form. Subjoined forms Pairī rakar: consonant + virama + consonant Shaping engine collapses the sequence into a compact subjoined form. keyboard Stored sequence ਕ + ੍ + ਰ auto_fix_high draw Shaped result ਕ੍ਰ pairī rakar (subjoined)
6Unicode Essentials (Debugger-Friendly Subset)
CharacterUnicodeWhy it matters
U+0A4DVirama — encodes clusters; enables pairī forms when followed by another consonant.
ਿU+0A3FVowel sign I (sihārī) — typed after but rendered to the left (reordering).
U+0A41Vowel sign U — below-base; frequent UI clipping/collision risk.
U+0A42Vowel sign UU — below-base; needs descender space.
U+0A47Top vowel; can collide with addak/dots in tight leading.
U+0A48Top vowel; same collision concerns.
U+0A4BTop+right vowel; sensitive to tight tracking.
U+0A4CTop+right vowel; sensitive to tight tracking.
U+0A02Bindi — dot visibility/placement consistency.
U+0A70Tippi — dot visibility/placement consistency.
U+0A71Addak — must sit cleanly above without collisions.
U+0A3CNukta — borrowed sounds; check both dedicated letters and base+nukta sequences.
7Rendering Pitfalls (Symptom → Cause → Fix)

ਿ looks "on the wrong side"

Symptom
The mark appears on the right, or overlaps awkwardly.
Cause
Shaping not applied (font lacks GSUB/GPOS for Indic, or the engine isn't using it).
Fix
Test in another app/browser; if it works there, the issue is environment/config. If it fails everywhere, the font likely needs shaping work.

Addak/dots collide with top vowels

Symptom
Addak merges into a top vowel; dots become ambiguous.
Cause
Insufficient anchors/mark-to-mark positioning, or too-tight line-height.
Fix
Improve anchors + mark-to-mark in the font; increase line-height slightly for Punjabi UI.

Bottom marks clipped in UI

Symptom
/ are chopped off in buttons/inputs.
Cause
Line-height too tight or containers with overflow hidden.
Fix
Allow descender space; test on Windows and Android where clipping is common.
8Copy/Paste Test Strings (Stress-Oriented)
ਕਿ ਕੀ ਕੁ ਕੂ ਕੇ ਕੈ ਕੋ ਕੌ
ਪੱਤਾ ਦਿੱਤਾ ਸੱਚ ਚਿੱਠੀ
ਕ੍ਰ ਗ੍ਵ ਪ੍ਯ
ਖ਼ਬਰ ਗ਼ਜ਼ਲ ਜ਼ਰੂਰ ਫ਼ਲ
ਹਾਂ ਹਾਂਹਾਂ ਅੰਮ੍ਰਿਤ
9Font Production Checklist (Gurmukhi-Specific)
  • GSUB: pairī forms, contextual alternates if your design needs them.
  • GPOS: anchors for all vowel signs; mark-to-mark for stacking (top vowel + dot + addak).
  • Metrics: headroom for addak + top vowels; depth for below vowels; avoid UI clipping.
  • Cross-engine QA: Chrome/Firefox/Safari, Windows DirectWrite apps, Android, plus at least one Adobe app.