Gujarati Script
Gujarati carries the state of Gujarat, and Microsoft's own OpenType documentation states the relationship plainly: the script "is closely related to Devanagari." That's the most direct family tie in this entire series. Gujarati keeps Devanagari's ligated conjuncts, its reph, and its pre-base i-matra almost unchanged, and drops one thing: the continuous headline that unites a line of Devanagari text. It also adds two vowels Devanagari doesn't have, built for sounds that arrived through trade. This article covers its letters, that inheritance, and what a font needs to render it correctly.
Gujarati, in one screen
An abugida descended from Devanagari, keeping nearly all of its shaping mechanics while dropping the continuous headline.
Gujarati's letter inventory tracks Devanagari's closely: 34 consonants and 13 dependent vowel signs, nearly a one-to-one match. Where it diverges is two independent vowels Devanagari's core set doesn't encode: ઍ and ઑ, "candra" (crescent) forms added to write vowel sounds, like the "a" in English "cat" or the "o" in "office," that came into Gujarati through centuries of trade contact and don't fit its native vowel set.
Microsoft's own OpenType documentation states the relationship without qualification: Gujarati "is closely related to Devanagari." Historically, the script grew out of a cursive, faster-to-write variant of Devanagari used for trade and commercial record-keeping, and the clearest visible trace of that history is what's missing: the shirorekha, the continuous horizontal line that runs across the top of a line of Devanagari text. Gujarati letters keep the same basic shapes without it, each one sitting independently on the baseline.
Everything below that headline carries over. Gujarati ligates conjuncts the way Devanagari does, uses the same reph mechanism for an initial "Ra," and reorders its i-matra to the left of its consonant, the same pre-base pattern the series introduction described. The one clear addition is the pair of candra vowels, ઍ and ઑ, built specifically to carry sounds that arrived through loanwords rather than through Gujarati's native phonology.
Picture this word in Devanagari and a single horizontal stroke would run across the top, linking every letter into one continuous line. Gujarati drops that stroke and nothing else: the baseline still anchors the word, and each letter still reaches whatever height its own shape calls for.
Compare this to the series introduction's Devanagari diagram: the same rough letterforms, the same general proportions, but no horizontal stroke tying the tops together. ુ and ી attach above and below જ and ત in the ordinary way; the word simply reads as a row of independent letters rather than a line hanging from a bar.
Gujarati's reordering rules mirror Devanagari's almost exactly. The i-matra shifts to a pre-base position, an initial "Ra" that isn't the syllable's base rises into reph above the following consonant, and the two candra vowel signs attach in their own position to mark a loanword sound.
કિ reorders exactly the way the series introduction described for Devanagari. ધર્મ ("duty, religion") shows reph doing the same job it does across the northern scripts in this series: a bare "Ra" at the start of a cluster rises above the line instead of staying at reading-order position. And બૅન્ક ("bank"), a loanword from English, shows why the candra vowels exist: the "a" sound here has no native Gujarati vowel sign that fits it.
Gujarati ligates consonant clusters the same way Devanagari does, building dedicated conjunct shapes rather than falling back to a generic stack or a bare mark. This applies equally to native vocabulary and to loanwords, which keep their consonant clusters even when their vowels need a candra sign to render correctly.
ક્ષ is the same conjunct this series has tracked through Devanagari, Tamil, and Telugu, and Gujarati draws it the way Devanagari does, as one fused shape. નમસ્તે ("hello") shows the same treatment inside an everyday word. સ્કૂલ ("school"), borrowed from English, proves the point about candra vowels: the vowel sounds need special letters, but the consonant cluster mechanics don't change at all.
Gujarati uses essentially the same feature set as Devanagari, applied the same way. The only meaningful addition is glyph coverage for the candra vowels, which need their own dedicated forms rather than a reused diacritic borrowed from another mark.
| Feature | Tag | What it builds here |
|---|---|---|
| Localized forms | locl | Swaps in Gujarati-specific glyph shapes where they differ from the script default. |
| Nukta forms | nukt | Substitutes nukta-marked consonants for sounds outside the native set. |
| Akhand ligatures | akhn | Required ligatures formed before any reordering happens. |
| Reph | rphf | Substitutes the above-base form of an initial, non-base "Ra." |
| Half forms | half | Builds the reduced pre-base form of a consonant that ligates into the next. |
| Conjunct forms | cjct | Forms dedicated ligatures like ક્ષ and સ્ત. |
| Post-base forms | pstf | Positions right-attaching signs like ા. |
| Above/below-base marks | abvm / blwm | Final positioning of vowel signs and the candra marks that attach above the base glyph. |
A font that already handles Devanagari's conjunct ligation, reph, and pre-base reordering is most of the way to a working Gujarati implementation; what's left is drawing every letter without a headline stub and adding clean, dedicated glyphs for the two candra vowels.
| Symptom | Likely cause | Fix |
|---|---|---|
| Letters look like they carry a partial or broken top stroke | Glyphs adapted from a Devanagari design without fully removing the headline stub | Redraw each letter's top independently rather than trimming a shirorekha-bearing glyph |
| The i-matra doesn't reorder before its consonant | Missing or misconfigured pre-base reordering lookup | Test કિ explicitly, not just post-base vowel signs |
| Reph collides with a pre-base i-matra in the same syllable | No coordinated anchor between the two above-base elements | Test words that carry both reph and the i-matra together, not each in isolation |
| Candra vowels render as a generic mark or fall back to tofu | Font doesn't include dedicated glyphs for ઍ and ઑ | Draw both candra vowels and their matching dependent signs as first-class glyphs |
| Common conjuncts render as separate letters instead of a ligature | Missing cjct substitution for that consonant pair | Build dedicated ligatures for frequent clusters, the same way a Devanagari font would |
- 1Draw all 34 consonants and 14 independent vowels, including the two candra vowels, at consistent weight.
- 2Build dedicated conjunct ligatures the way a Devanagari font would, not a generic fallback stack.
- 3Implement reph and pre-base i-matra reordering, and test them together in the same syllable.
- 4Draw the candra vowels and their dependent signs as dedicated glyphs, not reused diacritics.
- 5Double-check every letter's top is drawn clean, with no leftover headline stub from a Devanagari-derived design.
- 6Test across shaping engines and at multiple sizes and weights before calling the script done.
Copy these into a test document. Each targets a different part of the shaping pipeline covered above.