xepersian, xetex can't find fonts

Yes. You should install the font in your OS, or use the font as an external file.

If you installed the font file (e.g. using Windows control panel/font), then you can call your font using

\settextfont{XB Niloofar}

no mapping is needed, since xepersian sets the proper mapping by default.

If you want to use your font, without installing it, your font file must be accessible by your engine, i.e. either in your working directory, or a in proper place in texmf. Use ExternalLocation parameter for this situation:

\settextfont[ExternalLocation]{xbniloofar.ttf}

or whatever the filename is.

Please, by the way, make sure that you always load xepersian as the last package.


Just an answer for Linux users which will find this page via search engines:

If you use a Linux distro such as Ubuntu then download the font from the open font library and copy it to ~/.fonts direcotry and run the following command to add it to the fonts cache:

$ fc-cache -v ~/.fonts

Then recompile your document.