Unified Hindi, Marathi & Kruti Dev text rendering for Unity.
Solves broken conjuncts (क्ष, त्र), detached matras, and missing ligatures in Unity's text components. Supports Unicode and Legacy (Kruti Dev) workflows with full mixed-language text support.
- ✅ Unicode NFC Normalization — fixes broken conjuncts for Hindi & Marathi
- ✅ Legacy Mode (Kruti Dev) — auto-converts Unicode to Kruti Dev encoding on the fly
- ✅ Mixed-Language Safe — English, numbers, and symbols (₹, etc.) pass through unchanged in Legacy Mode
- ✅ Marathi Support — proper ळ (LLA) and ऱ (Eyelash Ra) handling
- ✅ Input Fields — real-time conversion while typing (TMP & Legacy)
- ✅ Devanagari Numerals — toggle between Western (0-9) and Devanagari (०-९)
- ✅ TextMeshPro & Legacy Text — works with both UI systems
- ✅ Zero-Config — attach component, assign font, done
- ✅ Editor Tools — font validator, demo scenes, easy testing
- ✅ Bundled Assets — includes
KrutiDev010.ttfand pre-built TMP SDF asset
- Add
Devanagari Text Fixer(orDevanagari Text Mesh Pro) to your GameObject. - Assign the included
KrutiDev010_SDFfont asset to your TMP component. - Done! Legacy Mode is on by default — Hindi/Marathi text renders correctly out of the box.
Mixed text works too: A string like
"Hello नमस्ते ₹999 बाळ"will convert only the Devanagari portions, leaving English and symbols untouched.
- Uncheck Legacy Mode in the Inspector.
- Select Hindi or Marathi (important for
ळ/ऱhandling). - Assign a Unicode-compliant Devanagari font.
- Create a TMP Input Field.
- Add the
Devanagari TMP Input Fieldcomponent. - Assign KrutiDev010_SDF to the Input Field's Text Component.
- Play — text converts and shapes in real-time as you type. Placeholder text is supported.
| Component | Description |
|---|---|
DevanagariTextFixer |
Universal fixer. Attach to any Text/TMP object. |
DevanagariTextMeshProUGUI |
Standalone TMP UGUI with built-in fixing. |
DevanagariTextMeshPro |
Standalone 3D TMP component. |
DevanagariLegacyText |
For Unity's legacy Text UI. |
DevanagariTMPInputField |
Auto-fixes input text and placeholders while typing. |
DevanagariLegacyInputField |
Same as above, for legacy Input Fields. |
using DevanagariText.Components;
// Set text — auto-converts if Legacy Mode is on
var fixer = GetComponent<DevanagariTextFixer>();
fixer.Text = "Hello नमस्ते 999";
// Manual conversion
using DevanagariText.TextProcessing;
string krutiText = KrutidevConverter.Convert("नमस्ते");com.akshay.devanagari-text-engine/
├── Runtime/
│ ├── Fonts/ # Kruti Dev & Noto Sans assets
│ ├── Components/ # All script components
│ ├── TextProcessing/ # Converter, normalizer, search
│ ├── Core/ # Unicode ranges, language enum
│ └── Shaping/ # Text processor, cache
└── Editor/ # Custom Inspectors & Tools
- Unity 2021.3+
- TextMeshPro (com.unity.textmeshpro)