باید بین حروف چسبان از کاراکتر U+200D
یا همون zero-width joiner
استفاده کنی. اگر میخواهی رنگ کردن بصورت خودکار انجام بشه (به این صورت که هر حرفی رنگ مشخصی داشته باشه)، میتونی از دستور بدوی \XeTeXinterchartoks
استفاده کنی:
\documentclass{article}
\usepackage{xecolor}
\usepackage{xepersian}
\settextfont{XB Zar}[Scale=1.5]
\chardef\myzwj="200D % zero-width joiner
\newenvironment{mycoloredtext}{%
\XeTeXinterchartokenstate = 1
\newXeTeXintercharclass \mycharclassi
\newXeTeXintercharclass \mycharclassii
\newXeTeXintercharclass \mycharclassiii
\XeTeXcharclass "0628 \mycharclassi
\XeTeXcharclass "0627 \mycharclassii
\XeTeXcharclass "0631 \mycharclassiii
\XeTeXinterchartoks 255 \mycharclassi = {\xecolor{red}}
\XeTeXinterchartoks \mycharclassi \mycharclassii = {\myzwj\xecolor{blue}\myzwj}
\XeTeXinterchartoks \mycharclassii \mycharclassiii = {\xecolor{green}}
}{}
\begin{document}
\begin{mycoloredtext}
بار
\end{mycoloredtext}
\end{document}
نتیجه بصورت زیر خواهد بود: