RTLTMPro Alternative: Arabic, Persian and Hebrew Without Rewriting Text
Last reviewed
RTLTMPro is a widely used way to show Arabic, Persian and Hebrew with TextMesh Pro: a free, maintained plugin that rewrites the string into presentation forms and reorders it before TextMesh Pro draws it. It makes most lines readable within TextMesh Pro's limits.
UniText removes the need for a rewrite: it shapes text with HarfBuzz from the font's own tables and runs the full Unicode Bidirectional Algorithm, so mixed-direction lines, diacritics, Urdu Nastaliq, input and copying work on the real text.
How RTLTMPro works
RTLTMPro (MIT, with a Unity 6 release in April 2026) provides a component derived from TextMeshProUGUI. Before TextMesh Pro sees the text it removes diacritics, replaces each letter with its isolated, initial, medial or final presentation-form character according to its own joining rules, restores the diacritics, reorders the line while keeping Latin text, numbers and tags in order, mirrors a fixed set of brackets, and turns on TextMesh Pro's right-to-left mode.
That design has costs that come from working around TextMesh Pro rather than inside a text engine:
- The font atlas must contain the presentation-form characters, which many modern Arabic fonts do not include because they rely on OpenType shaping.
- Joining follows the plugin's tables instead of the font's, so fonts with contextual alternates, such as Nastaliq for Urdu, cannot render as designed.
- Mixed lines are reordered by the plugin's rules rather than the Unicode Bidirectional Algorithm; its issue tracker has open reports about punctuation in mixed text, spacing around rich-text tags and reversed Hebrew style tags.
- The stored string is the rewritten one. Input fields, caret placement, selection and reading the text back all have to account for that, and its own README warns about multiline English text with Force Fix enabled.
RTLTMPro and UniText side by side
| RTLTMPro | UniText | |
|---|---|---|
| Approach | Rewrites the string, then TextMesh Pro draws it | Shapes and lays out the text itself |
| Letter forms | Plugin joining tables, presentation-form glyphs | The font’s OpenType rules via HarfBuzz |
| Mixed directions | Plugin reordering rules | Full Unicode Bidirectional Algorithm per paragraph |
| Fonts | Must include presentation forms | Any font that supports the script |
| Other scripts | Arabic, Persian, Hebrew | Every Unicode script, including Indic and Thai |
| Typing | Rewritten string under the caret | Live shaping with bidirectional caret and selection |
| Price | Free, MIT | Free MIT 1.0; current versions licensed |
Questions
Is RTLTMPro a bad choice?
What changes when moving to UniText?
Check it in your project
Run the browser demo, follow the setup guide, or compare the free version with the licenses.
Related problems
- Arabic Text in Unity: Fix Disconnected and Reversed LettersTextMesh Pro has no Arabic shaping or bidirectional ordering, so letters render isolated and reversed. UniText shapes Arabic, Persian and Urdu with HarfBuzz and runs the Unicode Bidirectional Algorithm.
- Hebrew and Right-to-Left Text in Unity: Reversed Numbers and English WordsTextMesh Pro draws right-to-left text in one direction without the Unicode BiDi algorithm, so numbers and English words inside Hebrew come out reversed. UniText runs full UAX #9 BiDi on every paragraph.
- Unity Input Field With IME, Arabic, Emoji and Mobile KeyboardsUnity input fields struggle with IME, right-to-left typing, emoji and WebGL. UniText edits shaped text with native OS input, first-class IME composition and cluster-aware caret movement, whatever the input setting.
