I have tried it out with the following code and as you can see, the ligature is only formed correctly in Code2000. Strangely enough, I get this error for all fonts except for Code2000:
*************************************************
* fontspec warning: "script-not-exist"
*
* Font 'ArialUnicodeMS' does not contain script 'Bengali'.
*************************************************
But when I look it up in Font Book.app, it tells me that at least BanglaMNand BanglaSangamMN do have the Bengali script (apart from Code2000).
In TextEdit.app, both BanglaMN and BanglaSangamMN have the correct ligated form for kya, which is even stranger. (Arial Unicode MS does not, though.)
From my point of view, this seems like a mixture of both a font and XeLaTeX (or fontspec) issue.
Code:
%!TEX TS-program = xelatex
%!TEX encoding = UTF-8 Unicode
\documentclass[12pt]{article}
\usepackage{fontspec,xltxtra,xunicode}
\begin{document}
\newfontfamily\bengalifontA[Script=Bengali,Scale=10]{ArialUnicodeMS}
\newfontfamily\bengalifontB[Script=Bengali,Scale=10]{BanglaMN}
\newfontfamily\bengalifontC[Script=Bengali,Scale=10]{BanglaSangamMN}
\newfontfamily\bengalifontD[Script=Bengali,Scale=10]{Code2000}
\noindent {\bengalifontA ক্য }\vfill
{\bengalifontB ক্য }\vfill
{\bengalifontC ক্য }\vfill
{\bengalifontD ক্য }\vfill
\end{document}
Output:
