Open-source project
pnarimani/RTLTMPro avatar
pnarimani/RTLTMPro

RTL Text Mesh Pro gives Unity right-to-left text in the editor

Right-To-Left Text Mesh Pro for Unity. This plugin adds support for Persian and Arabic languages to TextMeshPro.

726 stars128 forksShaderLabMIT

At a glance

What is it?
RTL Text Mesh Pro is a Unity plugin that adds Persian, Arabic and Hebrew support to TextMeshPro with live conversion as you type, and the part that determines whether it works for you is the font asset you have to build before anything renders correctly.
Who is it for?
RTL Text Mesh Pro suits a Unity team shipping a Persian, Arabic or Hebrew interface who wants the text to be right while it is being typed rather than corrected afterwards, and it suits anyone who needs the rich text tag set to keep working in a right-to-left layout.
Can I use it commercially?
Yes. MIT is a permissive licence: you can use, modify and sell software built on it, as long as you keep its copyright and licence notices.
Is it still maintained?
Yes. The repository last received commits 177 days ago.
What is it written in?
Mainly ShaderLab, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on October 23, 2026, and from our analysis. They are not legal advice.

Editorial analysis

A TextMeshPro companion rather than a replacement

RTL Text Mesh Pro is a plugin that adds right-to-left language support to the TextMeshPro Unity plugin, and the first requirement is that you have TextMeshPro in your project, installed through the Package Manager. The installation section is emphatic about that detail, telling you not to install Text Mesh Pro from the Asset Store. The supported languages are Arabic, Farsi and Hebrew, and the readme says to open an issue if you find a problem with one of them or want another right-to-left language added. The repository is a Unity project in the ordinary sense, with an Assets/ directory, a Packages/ directory, ProjectSettings/ and UserSettings/ at the top level, and the primary language is recorded as ShaderLab, which is a hint that the work is as much about text rendering as about the editor behaviour.

The headline feature is that you do not convert text yourself

The feature list is screenshots, and the first one is the point. Realtime RTL text means you do not need to convert, copy and paste texts, because you start writing and the text is converted right away. That is a meaningful difference for a right-to-left language, where a string that was written in logical order usually has to be reshaped and reordered before it can be displayed correctly, and doing that by hand in the editor is the kind of step that produces a bug report. The remaining features cover the surfaces a real interface needs. Rich text works, with all of TextMeshPro's tags available. The RTL input field is supported in realtime, so typing into a field is converted as well. There is an RTL dropdown, multiline text is not a problem for the plugin, and auto font size is fully supported. Digits are handled in three scripts, with English, Farsi and Arabic numbers all supported, and Arabic tashkeel is supported too, along with the Zero-Width No-Joiner character, which can be inserted with a Ctrl+Shift+2 hotkey.

The font asset is where the work is

You need to create font assets from font files to use them with TextMeshPro, and the readme walks through the process with a pointer to the official TextMeshPro documentation. You open the Window/TextMeshPro/Font Asset Creator window, assign your font in the Font Source field, where the font must include your characters. Then you set the atlas size, and here the recommendation is specific, 512 by 512 for Arabic and 128 by 128 for Hebrew as a minimum, with a larger atlas giving better quality at the cost of size on disk. You set the Character Set to Unicode Range, and then you copy character ranges from the files under the Assets/RTLTMPro/Ranges folder into the Character Sequence field. Those files are ArabicLetters.txt, ArabicDigits.txt, ArabicTashkeel.txt, HebrewLetters.txt and ArabicAll.txt, with the last being the one you would normally use to create the font asset. Then you press Generate Font Atlas, wait, and press Save TextMeshPro Font Asset.

Four options on the component control the conversion

The component exposes a small set of checkboxes, and they are worth understanding because they are where the behaviour is decided. The Farsi option, when checked, converts English numbers to Farsi numbers, and when unchecked it converts them to Arabic numbers instead, which is a slightly surprising default worth checking against your content. The Preserve Numbers option, when checked, leaves numbers unconverted. The Force Fix option exists because the plugin does not fix texts that start with English characters, and checking it forces the fix even in that case, with the readme warning that multiline English texts will have a problem on components that have ForceFix checked. And the Fix Tags option, when checked, makes the plugin try to fix rich text tags. The usage itself is short, using the GameObject/UI menu to create RTL UI elements, alternatively replacing Text Mesh Pro UGUI components with RTL Text Mesh Pro, assigning the font asset in the Font Asset property, and entering text in the RTL TEXT INPUT BOX section.

Where this plugin is the wrong choice

Three limits are worth naming. The first is language coverage, which is exactly three right-to-left languages, and while asking for more is easy, a plugin that reshapes text is not a small feature to add for a script nobody has tested. The second is the build step, because the font asset with the right character ranges and a large enough atlas has to be generated per project, and the demo resources are shipped as a separate unitypackage that the readme suggests you import to see everything working and then remove for optimised builds. The third is the dependency on TextMeshPro itself, and the specific warning about not installing it from the Asset Store, which is the kind of instruction that exists because getting it wrong produces subtly broken text. There is also a version story to keep in mind, with the current release at 4.0.0 for Unity 6 and later and the previous line at 3.4.3 from 2022, so a team on an older Unity will be on the older branch of the plugin and should expect a different set of behaviours.

Editorial conclusion

RTL Text Mesh Pro suits a Unity team shipping a Persian, Arabic or Hebrew interface who wants the text to be right while it is being typed rather than corrected afterwards, and it suits anyone who needs the rich text tag set to keep working in a right-to-left layout. It is the wrong tool if you need a language the plugin does not list, since the supported set is Arabic, Farsi and Hebrew and the issue tracker is the route for asking for more, and it is the wrong choice for a project that cannot ship a custom font asset, because the whole rendering path depends on a generated atlas. Before installing it, read the font asset section, because building the atlas with the right character ranges and a large enough size is the step that decides whether Persian text renders correctly, and note that TextMeshPro itself must be installed through the Package Manager rather than the Asset Store. The last push was on 2026-04-29 and the current release is v4.0.0 for Unity 6 and later.

Frequently asked questions

What does the RTL Text Mesh Pro plugin add to Unity?

It adds right-to-left language support to TextMeshPro for Arabic, Farsi and Hebrew, with live conversion as you type so text does not have to be converted, copied and pasted. Rich text tags, input fields, dropdowns, multiline text, auto font size, Farsi and Arabic digits, Arabic tashkeel and the Zero-Width No-Joiner character are also supported.

How do I install RTL Text Mesh Pro?

You need TextMeshPro installed through the Package Manager, and the README says not to install Text Mesh Pro from the Asset Store. The plugin itself can be installed from a Git URL in the Unity Package Manager, from OpenUPM as a scoped registry, or by importing the latest unitypackage from the releases section, which includes the demo fonts and scenes.

What atlas size should I use for Arabic and Hebrew fonts in RTL Text Mesh Pro?

The README recommends 512 by 512 for Arabic and 128 by 128 for Hebrew as a minimum, and notes that a larger atlas gives better quality at the cost of size on disk. You set the character set to Unicode Range and copy the ranges from the files under the Assets/RTLTMPro/Ranges folder into the character sequence.

Official sources

  1. Issues
  2. License: MIT
  3. pnarimani/RTLTMPro on GitHub
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/pnarimani-rtltmpro.svg)](https://hysenlabs.com/projects/pnarimani-rtltmpro)

Was this useful?