If I recall correctly, I used this free asset which converts the text correctly since Unity's editor has issues.
https://www.assetstore.unity3d.com/en/#!/content/2674With this tool, I would copy the text from the internet and paste it into their Fix3D Text input. This would return a new string in the TextMesh editor. I would grab this new text and copy / paste in the lower Text Input Box of TextMesh Pro when RTL is enabled. I guess this is all needed to handle character substitution. Since this only involves altering the source text from the original text to this other format perhaps a TMP user fluent in the language could provide a script to handle this in a simpler manner. I also possibly could integrate that into TMP when RTL is selected.
Seems like the range for characters is larger than what I previously posted. Here is the latest range which includes all the Arabic characters. See
https://en.wikipedia.org/wiki/Arabic_script_in_UnicodeNew range 600-6FF,750-77F,8A0-8FF,FB50-FDFF,FE70-FEFF,10E60-10E7F,1EE00-1EEFF
Keep in mind that most fonts do not contain all or even most of those characters. ARIAL for instance only contains 540 of the potential 1520 characters.

This is a 1024 X 1024 with decent sampling point size of 61. I guess I could have increased the size to 2048 X 1024 and added the ASCII set plug punctuation in there too or simply use a ARIAL as Fallback which would be fine too.
Using this new font asset and process outlined above, I grabbed some text from the BBC sports page. Something about Soccer and here are the results.
