Malayalam Script
Malayalam carries Kerala, and Microsoft's own OpenType documentation opens with a comparison that sets up this whole article: the letters "resemble the Tamil script," but "Malayalam has a full set of consonant conjuncts." It looks like the series' most conjunct-averse script and behaves like one of its most conjunct-heavy. It also solves the bare-consonant problem a completely different way, with nine dedicated letters, the chillus, that need no virama at all. This article covers its letters, that resemblance-versus-behavior gap, and what a font needs to render it correctly.
Malayalam, in one screen
An abugida descended from Brahmi, with the largest character count in this series so far and a unique set of atomic letters for bare, vowelless consonants.
Malayalam's Unicode block is the largest in this series so far, 118 characters, and its consonant range is the only one that's fully populated with no gaps: 38 consonants where Telugu has 36 and Kannada has 35, including two letters, ഩ and ഺ, that don't exist in either of those scripts. It shares the same 14 independent vowels as Telugu and Kannada.
Microsoft's own OpenType documentation opens its Malayalam chapter with a direct comparison to the script this series just covered: the letterforms "resemble the Tamil script," but "Malayalam has a full set of consonant conjuncts." That's the opposite of what Tamil does. Where Tamil marks a bare consonant with a pulli and moves on, Malayalam ligates clusters the way Devanagari does, building dedicated conjunct shapes rather than falling back to a generic stack or hook.
Malayalam also breaks from its closer Dravidian relatives, Telugu and Kannada, on vowel sign reordering. This series' Unicode reordering data shows Malayalam's e, ē, and ai vowel signs classified BeforeMain, meaning they shift to the left of their consonant at render time, the same behavior Devanagari uses for its i-matra. Telugu and Kannada don't reorder anything. So Malayalam's letters look like Tamil's, its conjuncts behave like Devanagari's, and its vowel signs reorder like Devanagari's too, a genuinely distinct combination in this series.
Malayalam has no continuous headline, so the baseline anchors the word the way it does across this series. What stands out here is the pre-base vowel sign: unlike Telugu and Kannada, Malayalam actually moves a mark to the left of its consonant, and the effect is visible in ordinary words.
കേരളം ("Kerala") shows the pre-base shift directly. The vowel sign for ē is typed after ക but renders before it, the leftmost mark in the word, the same reordering pattern the series introduction covered for Devanagari, applied here to a script that looks nothing like Devanagari on the page. ള and the closing anusvara ം stay in the shallow zone below and at the baseline, unremarkable by comparison.
Malayalam's vowel signs split into two behaviors. E, ē, and ai move to a pre-base position, matching Devanagari. Everything else, including i, ī, and ā, stays where it was typed, attaching above, below, or to the right of the consonant, matching Telugu and Kannada.
A font has to implement both behaviors correctly and keep them from interfering with each other. The pref feature handles the leftward shift for e, ē, and ai, while ordinary mark positioning handles everything that stays put, the same division of labor this series first described for Devanagari, reused here inside a script with Tamil's silhouette.
Every other script in this series marks a bare, vowelless consonant with some visible trace, a pulli, a vattu, a hook. Malayalam instead has nine letters, the chillus, that are themselves the bare form: separate Unicode codepoints with no virama attached and no vowel sign to strip away. Before Unicode 5.1 added the first six as atomic characters in 2008, the same shapes were built from a consonant, a virama, and a zero-width joiner telling the font to render the pure form instead of a conjunct; three more chillus followed in Unicode 9.0. Fonts built today typically need to support both encodings.
അവൻ ("he") and കാൽ ("leg, foot") are both everyday words that end in a bare consonant, and both use a chillu rather than a consonant plus a floating virama mark. കൃഷ്ണൻ ("Krishnan") shows the two distinctive features of this article together: a real ligated conjunct, ഷ്ണ, the kind of shape the series' opening quote about Malayalam promised, followed by a chillu ൻ closing the name.
Malayalam uses a fuller feature set than Telugu or Kannada, closer to Devanagari's, because it actually ligates conjuncts and reorders a subset of its vowel signs. The chillu system adds one more responsibility on top: recognizing when a consonant should resolve to its atomic pure form instead of joining the next consonant into a cluster.
| Feature | Tag | What it builds here |
|---|---|---|
| Localized forms | locl | Swaps in Malayalam-specific glyph shapes where they differ from the script default. |
| Akhand ligatures | akhn | Required ligatures formed before any reordering happens. |
| Pre-base forms | pref | Shifts the e, ē, and ai vowel signs to the left of their consonant. |
| Below-base forms | blwf | Builds below-base conjunct shapes for clusters that don't get a full ligature. |
| Conjunct forms | cjct | Forms the dedicated ligatures behind Malayalam's "full set of consonant conjuncts." |
| Post-base forms | pstf | Positions right-attaching signs like ാ. |
| Above/below-base marks | abvm / blwm | Final positioning of vowel signs that attach above (ി ീ) or below (ു ൂ ൃ ൄ) the base glyph. |
| Chillu resolution | rphf / half | Distinguishes an atomic chillu letter from a legacy consonant-plus-ZWJ sequence encoding the same shape. |
A font that gets conjunct formation, pre-base reordering, and chillu resolution right has covered the three things that make Malayalam different from its closest relatives in this series, even though its letters look like a fourth script entirely.
| Symptom | Likely cause | Fix |
|---|---|---|
| A word-final consonant renders as a full letter plus a floating virama instead of a chillu | Font or engine doesn't recognize the atomic chillu codepoint, or the legacy ZWJ sequence | Support both the atomic chillu characters and the consonant-plus-ZWJ legacy encoding |
| The pre-base ē or ai sign doesn't move left, or moves too far | Missing or misconfigured pref lookup | Test കേ and കൈ explicitly, not just post-base vowel signs |
| Common conjuncts render as separate letters instead of a ligature | Missing cjct substitution for that consonant pair | Build dedicated ligatures for frequent clusters like ക്ഷ and ഞ്ച |
| A chillu collides with the vowel sign or consonant that follows it | Insufficient spacing reserved after a chillu glyph | Test chillus at the end of a word followed immediately by another word, not in isolation |
| Rounded strokes look mechanically uniform at heavy weights | Stroke expansion applied evenly without adjusting curve tension | Adjust counters and curve tension as weight increases to preserve the script's calligraphic roundness |
- 1Draw all 38 consonants and 14 independent vowels at consistent weight, plus the two letters, ഩ and ഺ, that don't appear in Telugu or Kannada.
- 2Build all nine chillu letters as dedicated glyphs, and support the legacy consonant-plus-ZWJ encoding alongside the atomic codepoints.
- 3Implement pref for the e, ē, and ai vowel signs so they shift left of their consonant correctly.
- 4Draw dedicated ligatures for frequent conjuncts rather than falling back to generic stacking.
- 5Test chillus at word boundaries and against following vowel signs for spacing collisions.
- 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.