This happens because unity doesn’t read/apply glyph positions (GPOS) and glyph substitutes (GSUB) from font file.
GPOS and GSUB tables information is necessary for these languages to render text properly.
I have searched for a solution, but i couldn’t find anything, So i thought to solve myself and tried some ideas.
Create a native plugin to read GPOS and GSUB tables from font files.
Create a custom Text component and uni scribe text as per language rules
Apply GPOS and GSUB information and generate text mesh .
Pros: I can use downloaded TTF fonts, No need to create font asset.
Cons: Creating a native plugin is platform dependent. I have to write for all platforms.
Create a custom font asset inside unity.
Design font from scratch using sprites and store alphabet information in font asset.
Create a custom Text component and uni scribe text as per language rules.
Read alphabets information from custom font asset and generate text mesh.
This idea is platform independent, But have to design font asset.
I followed the Idea no 2 and prepared flow charts
Click on the image to see full size.