Knowledge / Indian Languages and Literature (Hindi / Sanskrit / Urdu / Malayalam / Tamil / Telugu / Kannada / Bengali / Marathi ...) / Indian language computing: Unicode, scripts and input tools

Indian language computing: Unicode, scripts and input tools

Indian Languages and Literature (Hindi / Sanskrit / Urdu / Malayalam / Tamil / Telugu / Kannada / Bengali / Marathi ...) (BA) · Language foundations · free study notes for exams, placements and interviews

In short

Indian language computing is the set of standards and tools by which Brahmi-derived and Perso-Arabic scripts are encoded, stored, sorted, rendered and typed on computers. Its backbone is Unicode, which assigns one code point per character and replaced the 8-bit ISCII standard (IS 13194:1991) and the glyph-based legacy font encodings such as Krutidev and ML-TTKarthika. It matters because an Indic string is not one byte per letter: a single visible syllable may be several code points, stored in logical order but displayed in a reordered visual order, so naive length, sorting and substring code breaks. It is examined in BA language-technology and computational-linguistics papers, in UGC-CBCS "computer applications in languages" courses, and in placement rounds for localisation, publishing, e-governance and NLP roles (C-DAC, NIC, Bhashini, AI4Bharat, Reverie, Process9, newspapers, Amazon/Google/Microsoft India language teams).

Explained

From ISCII to Unicode

The Indic blocks and the ISCII-parallel layout

ScriptBlockScriptBlock
DevanagariU+0900–U+097FTeluguU+0C00–U+0C7F
Bengali/AssameseU+0980–U+09FFKannadaU+0C80–U+0CFF
GurmukhiU+0A00–U+0A7FMalayalamU+0D00–U+0D7F
GujaratiU+0A80–U+0AFFSinhalaU+0D80–U+0DFF
OdiaU+0B00–U+0B7FUrdu (Perso-Arabic)U+0600–U+06FF, U+08A0–U+08FF
TamilU+0B80–U+0BFFOl Chiki (Santali)U+1C50–U+1C7F

Storage: encoding forms, logical order and grapheme clusters

Rendering: fonts, shaping engines and legacy encodings

Input: keyboards, transliteration, handwriting and speech

Locales, databases, the web and domain names

Key points

Formulas and examples

UTF-8 length: U+0000–U+007F → 1 byte; U+0080–U+07FF → 2; U+0800–U+FFFF → 3; U+10000–U+10FFFF → 4.
All Brahmi-derived Indic BMP characters (U+0900 and above) therefore cost 3 bytes each in UTF-8; Urdu's Perso-Arabic letters (U+0600–U+06FF) cost 2.
UTF-16 length: BMP (U+0000–U+FFFF, excluding surrogates) → 2 bytes; U+10000 and above → 4 bytes (surrogate pair).
High surrogate H = 0xD800 + ((CP − 0x10000) >> 10); Low surrogate L = 0xDC00 + ((CP − 0x10000) & 0x3FF)
Offset transliteration (ISCII-aligned Brahmi blocks): CP_target = CP_source + (Base_target − Base_source)
Base values: Devanagari 0x0900, Bengali 0x0980, Gurmukhi 0x0A00, Gujarati 0x0A80, Odia 0x0B00, Tamil 0x0B80, Telugu 0x0C00, Kannada 0x0C80, Malayalam 0x0D00.
Unicode code space: total = 17 × 65,536 = 1,114,112 positions; 2,048 are surrogates and 66 are noncharacters, so 1,111,998 are assignable.
Tamil letter count (அரிச்சுவடி): uyir 12 + mei 18 + uyirmei (12 × 18 = 216) + aytham 1 = 247

Example 1 — the three lengths of नमस्ते. Code points: न U+0928, म U+092E, स U+0938, ् U+094D, त U+0924, े U+0947 → 6 code points.

So VARCHAR(5) would reject this 3-letter word, and truncating at 10 bytes would cut a character in half.

Example 2 — offset transliteration and where it fails.

Conclusion: the offset trick is script-conversion, not transliteration; it is lossy wherever the target inventory is smaller (Tamil aspirates, Gurmukhi vowels, Malayalam chillu), so real work uses ICU transliterators or indic-transliteration.

Example 3 — a supplementary-plane character (Brahmi GA, U+11015; Brahmi KA is U+11013).

Example 4 — storage sizing for a Hindi database. A digitisation project stores 5,00,000 records, each with a 40-character Devanagari title.

Example 5 — Indian number and currency formatting. Value 12345678.5 with locale hi-IN, grouping #,##,##0.00, currency ₹:

AspectISCII (IS 13194:1991)Legacy font encoding (Krutidev etc.)Unicode
Unit encodedIndic characterLatin byte + glyph in fontIndic character
Scripts per documentOne (ATR switch)One, font-dependentUnlimited
Search / sort / spellcheckLimitedImpossibleStandard
Font independenceYesNoYes
Bytes per letter11–23 (UTF-8), 2 (UTF-16)
Current statusSuperseded in practiceMigration legacyStandard; required by GIGW
UTF-8UTF-16UTF-32
Indic BMP character3 bytes2 bytes4 bytes
Brahmi/Grantha (SMP)4 bytes4 bytes (surrogates)4 bytes
ASCII compatibleYesNoNo
Endianness / BOMNot neededBE/LE, BOM usedBE/LE
Typical useWeb, files, Linux, MySQL utf8mb4Java, C#, JS, Windows APIInternal processing

Where it is used

Interview questions

Common mistakes

Related topics

Languages of India: language families, scripts and the Eighth Schedule · Linguistics basics · Classical languages of India · Grammar traditions: Panini, Tolkappiyam and regional grammars · Natural language processing for Indian languages · Translation and interpretation studies

Open in the Knowledge reader →Find jobs →