Devanagari Script

Devanagari carries Hindi, Marathi, Nepali, Sanskrit, and several other languages, and it's the script most people picture first when they think of Indic type. Its defining feature is the shirorekha, the horizontal bar that most letters hang from. This article covers its letters, its conjunct system, and what a font needs to render it correctly.

Fast facts

Devanagari, in one screen

An abugida descended from Brahmi, used across North and Central India and Nepal, built around a continuous headline and a dense, historically rich conjunct system.

ISO 15924
Deva, Unicode block U+0900 to U+097F
Languages
Hindi, Marathi, Nepali, Sanskrit, Konkani, Maithili, Bodo, and more
Direction
Left to right, with a continuous shirorekha connecting most letters
Signature complexity
Half-forms, reph, rakar, and traditional akhand ligatures such as क्ष and ज्ञ
1.Consonants and vowels

Devanagari has 33 consonants and 11 independent vowels, each carrying its inherent "a" sound until a dependent vowel sign changes it. The vowel signs below are shown attached to a dotted circle, the standard convention for displaying a mark that can't stand on its own.

Independent vowels (11)
a
ā
i
ī
u
ū
e
ai
o
au
Consonants (33)
ka
kha
ga
gha
ṅa
ca
cha
ja
jha
ña
ṭa
ṭha
ḍa
ḍha
ṇa
ta
tha
da
dha
na
pa
pha
ba
bha
ma
ya
ra
la
va
śa
ṣa
sa
ha
Dependent vowel signs, matras (10) + virama
◌ाā
◌िi
◌ीī
◌ुu
◌ूū
◌ृ
◌ेe
◌ैai
◌ोo
◌ौau
◌्virama
Not shown
Anusvara (ं) and visarga (ः), two marks that modify a syllable's nasalization and breath rather than adding a vowel, plus the nukta (़), which extends the consonant set for loanword sounds. All three attach in place and don't take part in the reordering described below.
2.What makes Devanagari distinctive: the shirorekha

Most Devanagari letters share a horizontal stroke across their top, and when letters sit next to each other in a word, those strokes join into one continuous line: the shirorekha, literally "head-line." It's the single most recognizable feature of the script, and it changes how you think about spacing and rhythm. In Latin type, the eye tracks a baseline and a mix of ascenders and x-heights above it. In Devanagari, the eye tracks the shirorekha first, a strong, continuous horizontal band, with the letterforms hanging below it like a row of pendants.

Not every part of a word touches that line. doesn't connect flush the way most consonants do, and below-base vowel signs, the kind that turn into कु or कू, hang entirely beneath the baseline, with no headline stroke at all. That contrast is intentional: it keeps the shirorekha reading as one deliberate line rather than a solid bar with no internal structure. Getting its weight and continuity right, so it reads as one line rather than a series of disconnected caps, is one of the first things worth testing in a new Devanagari design.

3.Visual anatomy: shirorekha and zones

Four horizontal bands do most of the work in a Devanagari design: the shirorekha at the top, the letter body beneath it, the baseline, and a below-baseline zone where several vowel signs and subjoined consonants sit.

Devanagari zones, illustrated with the word Hindi The word Hindi in Devanagari, with guide lines marking the shirorekha, the baseline, and the below-baseline zone, measured against the rendered glyphs. Visual anatomy The shirorekha carries the word Shirorekha (headline) Baseline Below-baseline zone हिन्दी

Notice how the vowel sign in हि sits to the left, above the headline, while the vowel sign in दी extends to the right at headline height, and the conjunct न्द sits entirely within the body between the shirorekha and the baseline. This is the same visual logic covered in the series introduction, applied to real letterforms rather than abstract boxes.

4.How a syllable is built

The introduction article showed plus vowel sign I shaping into कि, with the vowel sign moving to the left of its consonant. Devanagari has two other reordering patterns worth knowing before you draw a single glyph.

कि
Pre-base vowel
+ vowel sign I → कि
को
Split matra
+ vowel sign O → को
कौ
Split matra (au)
+ vowel sign AU → कौ

The vowel signs in को and कौ are each stored as a single Unicode character, but they're drawn as two pieces on either side of the consonant: a short vertical stroke before it and a length mark after it. Unicode calls this a split matra, and a font has to supply both halves as one coordinated glyph so they read as a single mark rather than two unrelated strokes.

5.Conjuncts: half-forms, reph, and rakar

When a consonant is followed by another consonant with no vowel between them, Devanagari doesn't fall back to a bare virama the way this article's earlier examples did. It ligates, and the shape of that ligature depends on which consonant is involved and where it falls in the cluster.

स्व
Half-form
+ virama +
सूर्य
Reph
sun · र् moves above
क्रम
Rakar
order · rakar hooks below

Half-forms are the default: a consonant followed by virama and another consonant typically drops its right-side vertical stroke and ligates directly onto what follows, as स् does in स्व. Reph is specific to Ra: when Ra opens a cluster and isn't the syllable's base, it contracts to a small hook above the base consonant instead of staying on the baseline, exactly what happens to र् in सूर्य ("sun"). Rakar, sometimes called vattu, is the mirror case: when Ra follows a consonant with no vowel between them, it drops below the base as a curved hook, as in क्रम ("order").

Akhand ligatures
Three conjuncts are traditionally taught as fixtures of the alphabet rather than assembled shapes: क्ष (kṣa), ज्ञ (jña), and त्र (tra). Fonts build these as required ligatures, formed before any other conjunct rule runs.
6.The shaping model for Devanagari

The series introduction covered the general Indic feature set. Devanagari leans on most of it, plus one feature specific to how its conjuncts work.

FeatureTagWhat it builds here
Akhand ligaturesakhnForms क्ष, ज्ञ, and त्र before any other conjunct rule applies.
Reph formationrphfTurns a leading Ra + virama into the above-base reph hook.
Half formshalfBuilds the reduced pre-base form most consonants take before a conjunct partner.
Below-base formsblwfBuilds rakar and the handful of other consonants with a below-base shape.
Post-base formspstfRare in Devanagari, used for a small set of post-base conjunct shapes.
Localized formsloclSwaps in Marathi-specific eyelash-ra and other language variants.
Mark positioningmark / mkmkAnchors matras, anusvara, and visarga, and stacks marks on marks for Sanskrit vedic signs.

Applied in order, these features analyze the syllable, pull out reph and any half-forms, resolve the remaining conjunct, then position matras and marks around the result. The reph and split-matra examples above are the direct output of that pipeline, not something a font hand-places character by character.

7.Rendering pitfalls
SymptomLikely causeFix
Reph appears on the wrong consonantHalf-form classification is missing for a consonant in the clusterCheck every consonant's half lookup, since reph placement depends on it
Half-forms don't triggerFont lacks half glyphs or the feature isn't wired for the scriptVerify half-form glyphs exist and are reachable through the half feature
क्ष, ज्ञ, or त्र render as separate lettersMissing or misconfigured akhn lookupAdd explicit akhand ligature substitutions, applied before other conjunct rules
Matra collides with the shirorekha or an ascenderNo contextual adjustment for tall base glyphsAdd GPOS adjustments or alternate matra forms for tall bases
Rakar lands in the wrong spotBelow-base anchor missing or mispositioned on the base glyphAudit anchor points across the full consonant set, not just common ones
Practical rule
Test with real words, not isolated letters. सूर्य, क्रम, and स्वास्थ्य each exercise a different part of the pipeline, and a font can pass a single-letter check while still failing all three.
8.Design and production checklist
  1. 1Draw a consistent shirorekha across the full consonant and vowel set, and check it reads as one line at text sizes.
  2. 2Build half-forms for all 33 consonants, not just the common ones, and verify each ligates cleanly.
  3. 3Implement reph and rakar, and test both against consonants with ascenders and descenders.
  4. 4Build the three akhand ligatures (क्ष, ज्ञ, त्र) as dedicated glyphs, not assembled from parts.
  5. 5Position every matra, including split matras like the ones in को and कौ, against every consonant shape, including half-forms.
  6. 6Test across shaping engines and at multiple sizes and weights before calling the script done.
9.Test strings

Copy these into a test document. Each targets a different part of the shaping pipeline covered above.

सूर्यReph (sun)
क्रमRakar / below-base Ra (order)
स्वास्थ्यStacked half-forms (health)
क्षत्रियTwo akhand ligatures in one word (kṣatriya)
कोश, कौशलSplit matras (o, au)
हिन्दीMixed pre-base and post-base matras (Hindi)