Tamil is an abugida like Sinhala and Devanagari: each consonant (mey) carries an inherent a, and dependent vowel signs change it. But Tamil handles consonant clusters differently from almost every other script in the family. Where Devanagari stacks or fuses consonants into conjuncts, Tamil keeps every consonant whole and marks the dead one with a dot, the puḷḷi (புள்ளி).

The puḷḷi: clusters you can see

The puḷḷi (U+0BCD TAMIL SIGN VIRAMA) sits above a consonant and removes its vowel. க is ka, க் is k. A cluster is written as one consonant with puḷḷi followed by the next consonant:

பக்கம்  (pakkam, "page")
  = ப  U+0BAA   pa
  + க  U+0B95   ka
  + ்  U+0BCD   puḷḷi  →  க்  k
  + க  U+0B95   ka
  + ம  U+0BAE   ma
  + ்  U+0BCD   puḷḷi  →  ம்  m

Nothing is reordered and nothing fuses. For a type designer, this means Tamil needs no half forms and no conjunct tables: one puḷḷi mark, positioned well above each of the 18 consonants and the Grantha letters, covers every native cluster.

The two true clusters

Tamil has exactly two clusters that are written as single ligatures, both borrowed from Sanskrit through the Grantha letters (ஜ, ஷ, ஸ, ஹ):

Ligature Sequence Reading
க்ஷ க U+0B95 + ் U+0BCD + ஷ U+0BB7 kṣa
ஸ்ரீ ஸ U+0BB8 + ் U+0BCD + ர U+0BB0 + ீ U+0BC0 śrī

Both are stored as ordinary sequences and joined by the font through the akhn OpenType feature. If a font doesn't have the ligature, the reader sees the parts side by side with a visible puḷḷi, which is still correct, readable Tamil.

Where the complexity really is: vowel signs

Sign With க Vowel Code point
ா கா ā U+0BBE
ி கி i U+0BBF
ீ கீ ī U+0BC0
ு கு u U+0BC1
ூ கூ ū U+0BC2
ெ கெ e U+0BC6
ே கே ē U+0BC7
ை கை ai U+0BC8
ொ கொ o U+0BCA
ோ கோ ō U+0BCB
ௌ கௌ au U+0BCC

Three things make these harder than they look.

Pre-base signs. ெ, ே and ை are drawn to the left of the consonant but stored after it, in logical order. The shaping engine moves them into place.

Two-part signs. ொ, ோ and ௌ wrap around the consonant. Unicode treats each as canonically equivalent to its two parts:

Sign Is equivalent to
ொ U+0BCA ெ U+0BC6 + ா U+0BBE
ோ U+0BCB ே U+0BC7 + ா U+0BBE
ௌ U+0BCC ெ U+0BC6 + ௗ U+0BD7

Input methods should emit the single code point, and search should normalise to NFC, so both spellings match.

The u and ū ligatures. The ு and ூ signs don't attach as marks. They fuse with each consonant into a single letterform, and the shape of the fusion depends on the consonant: compare கு, சு, டு, மு, ரு and னு. A Tamil font therefore draws 36 dedicated u and ū letters for the native consonants. The Grantha letters are the exception: ஜு, ஷு, ஸு and ஹு take a separate, detached sign. The i signs fuse in one case too: டி and டீ.

The 1978 script reform

In 1978 the Tamil Nadu government simplified a set of ligatures so that the vowel signs behave more regularly:

  • ா with ண, ற and ன had been written with special looped forms; the reform replaced them with the regular ா: ணா, றா, னா.
  • ை with ண, ல, ள and ன had used a distinctive curled form; the reform replaced it with the regular ை written before the letter: ணை, லை, ளை, னை.

The reform changed glyphs, not text. In Unicode, the traditional and reformed spellings are the same characters, so the choice is entirely the font's. Most contemporary Tamil fonts draw the reformed forms by default. A font made for historical or literary texts, or for readers who prefer the older forms, can offer the traditional ligatures through a stylistic set or the locl feature.

Further reading

  • The Unicode Standard, chapter 12, "South and Central Asia I": Tamil
  • Lanka Glyphsets: the Tamil glyphset Mooniak uses for Sri Lankan fonts
  • Yaldevi and Abhaya Libre: Mooniak typefaces with Tamil