XeLaTeX loads fonts by their system name, not by filename. This means fonts must be installed system-wide before XeLaTeX can find them. The steps below cover each platform.

Thai fonts

TH Sarabun New — ทีเอช สารบรรณ ใหม่ recommended

สวัสดี ภาษาไทย กขคงจฉชซ
Latin: The quick brown fox
source: SIPA / National Electronics and Computer Technology Center license: free weights: Regular, Bold, Italic, Bold Italic

The standard choice for Thai academic and government documents. Good Latin coverage for mixed documents. XeLaTeX font name: TH Sarabun New.

f0nt.com/release/th-sarabun-new/  —  github.com/fontuni/boon (Boon, a refined derivative)

Norasi included in TeX Live

สวัสดี ภาษาไทย กขคงจฉชซ
source: TLWG (Thai Linux Working Group) license: GPL

Serif Thai, similar in feel to Times. Already present in TeX Live Medium — no download needed. XeLaTeX font name: Norasi.

Garuda included in TeX Live

สวัสดี ภาษาไทย กขคงจฉชซ
source: TLWG license: GPL style: sans-serif

Sans-serif Thai. Good for presentations and headings. XeLaTeX font name: Garuda.

English fonts for mixed documents

TeX Gyre Pagella included in TeX Live

The quick brown fox jumps over the lazy dog. 0123456789
family: Palatino-derived license: GUST Font License (free) weights: Regular, Bold, Italic, Bold Italic

Part of the TeX Gyre collection. Included in TeX Live Medium and MacTeX — no download needed. XeLaTeX font name: TeX Gyre Pagella.

MikTeX: TeX Gyre is listed as the tex-gyre package but may not install automatically when referenced via \setmainfont{}. If you get a font-not-found error, run mpm --install=tex-gyre from a command prompt, or install it through the MikTeX Console package manager.

Direct download (all TeX Gyre families, Type 1 + OpenType, 20.7MB): ctan.org/pkg/tex-gyre

Installing fonts system-wide

TeX Live Medium already includes Norasi, Garuda, and TeX Gyre Pagella. Only THSarabunNew needs manual installation. The steps below install it system-wide so XeLaTeX can find it by name.

Windows WIN

If you use "Install" (not "for all users"), XeLaTeX running as a different process context may not see the font. When in doubt, use "Install for all users".

macOS MAC

Linux LIN

sudo mkdir -p /usr/local/share/fonts/thai
sudo cp THSarabunNew*.ttf /usr/local/share/fonts/thai/
sudo fc-cache -fv
fc-list | grep -i sarabun
On FreeBSD: same steps, but fonts go in /usr/local/share/fonts/TTF/. Run fc-cache -fv without sudo if your user owns the directory.

Verifying font names

XeLaTeX uses the font's internal name, not the filename. If \setmainfont{TH Sarabun New} fails, check what name the system registered:

fc-list | grep -i sarabun     # Linux / macOS / FreeBSD

The string before the colon is the font file path; after the colon is the registered name. Use that name exactly in \setmainfont{}.

Filename vs font name: the file may be called THSarabunNew.ttf but the internal name registered with fontconfig is TH Sarabun New. These are different. XeLaTeX wants the internal name.

Pairing Thai and English fonts

In a mixed Thai-English document, fontspec lets you assign different fonts to different scripts. A common and reliable pairing:

\usepackage{fontspec}
\usepackage{polyglossia}
\setmainlanguage{thai}
\setotherlanguage{english}

\setmainfont{TH Sarabun New}[
  Script=Thai,
  BoldFont={TH Sarabun New Bold},
  ItalicFont={TH Sarabun New Italic}
]
\newfontfamily\englishfont{TeX Gyre Pagella}[
  Ligatures=TeX
]

With polyglossia, Thai text uses THSarabunNew automatically and English text switches to Pagella when inside an \textenglish{} block or an English-language environment.

Thai fontEnglish paircharacternotes
TH Sarabun New TeX Gyre Pagella serif, warm best general pairing; similar weight and x-height
TH Sarabun New TeX Gyre Termes serif, neutral Times-derived; more formal feel
Garuda TeX Gyre Heros sans-serif Helvetica-derived; good for presentations
Norasi TeX Gyre Termes serif, classic both Times-family; consistent but safe
All TeX Gyre fonts are included in TeX Live Medium. No downloads needed. The full family: Pagella (Palatino), Termes (Times), Heros (Helvetica), Bonum (Bookman), Chorus (Chancery), Cursor (Courier), Schola (Century Schoolbook).