Which method for which language
Since currently there are two methods to load a language, here is a short explanation on how to do it, with info about basic fonts, so that you can setup quickly a document. There are also pages on specific locales in the menu above
See also the examples here for languages like Arabic, Thai, Hebrew, Polytonic Greek, Japanese, and Malayalam, among others.
I’d like to thank Loren Davis for his help in preparing this page, including the list of additional fonts.
Index Loading the language • Fonts
Loading the language
There are two ways to load a language, which use different definition files. At first this duality may seem inconvenient, but this way the transition to a more modern system where locales can be easily defined and interoperate can be done smoothly.
The first one is:
\usepackage[italian]{babel}
It will load the old good Italian language definition file. This procedure is the preferred one in most languages where an ldf
exists, but there are exceptions (for example, Arabic and Hebrew). In general, you should do this for European languages written in Latin and Cyrillic scripts, as well as for Vietnamese. For Greek, it may depend on your needs, and very often both methods will be fine. If you want modern and ancient Greek at the same time, the next one is usually better.
The second method is:
\usepackage[thai, provide=*]{babel}
This will load data from an ini
file. This is usually the correct
method for languages written in some of the 30-something non-European
scripts, currently supported by babel
, like Thai, Hindi, Sanskrit,
Marathi, Malayalam, Lao, Khemer, Bengali, Gujarati, Telugu, Kannada,
Sinhala, Tamil, Amharic, or Burmese. In short simple CJK texts,
this is also the preferred method, but in more complex ones you should
resort to some CKJ framework like
luatexja,
xeCJK, CTeX,
kotex,
and the like.
Some languages may require additional options. Examples are Arabic, Hebrew and Syriac. So, with LuaTeX:
\usepackage[arabic, bidi=basic, provide=*]{babel}
With XeTeX:
\usepackage[arabic, bidi=bidi-r, provide=*]{babel}
Fonts
With non-Latin scripts, you need to select another font, which can be done with \babelfont
.
If compatibility is not a concern, remember currently the most important systems (Windows, Mac, Linux) come with many fonts. Even if they are not installed by default, there are options in the system settings to do it.
With luatex
stick to the default renderer in Latin, Cyrillic and Greek scripts wherever possible. On the other hand, Southeast Asian scripts are best rendered with Harfbuzz, as well as Arabic. CKJ is usually fine with either renderer.
TeXLive
Here are some basic fonts included in TeXLive. This section is not meant as a font reference, but as a quick guide for a language to work with a more or less standard font. I’ve found no fonts for Telugu or Kannada.
Font(s) | Languages / Scripts | Notes |
---|---|---|
IPAexMincho, IPAexGothic | Japanese | |
Baekmuk Gulim, Baekmuk Batang, Baekmuk Dotum | Korean | |
FreeSerif | Multilingual, including Greek, Cyrillic, Coptic, Arabic, Hebrew, many (but not all) Brahmi scripts (Thai, Devanagari, Bengali, Tamil, Malayalam, etc.), Amharic, Georgian, Cherokee, Armenian. | |
Amiri | Arabic | |
ALM Fixed | Arabic | A CM-like monospaced font. |
CMU Serif, CMU Sans Serif, CMU Typewriter Text | Cyrillic, Greek | A CM-like family. |
NewCM | Cyrillic, Greek, Hebrew, Cherokee | Another, more modern, CM-like family. |
Padauk | Myanmar | |
FandolSong, FandolHei, FandolKai, FandolFang | Yi, Chinese | |
DejaVu Sans | Greek, Cyrillic, Armenian, Hebrew, Arabic, Lao, Georgian | Also Canadian Aboriginal, Ogham. |
Noto | Greek, Cyrillic | A large family, but TeX Live includes only the fonts for these two scripts (and emojis). |
Junicode | Runic | Also Medieval and Ancient Latin script. |
Additional fonts
There are also some fine fonts out there, but you must install them because they aren’t bundled with TeXLive. This list, of course, is just a very small selection.
Font(s) | Languages / Scripts | Notes |
---|---|---|
Noto | Multilingual | This family has a very comprehensive coverage and come in many variations of weight and width to match your other fonts. |
David CLM, Miriam CLM, Miriam Mono CLM | Hebrew | Free implementations of the most common Hebrew serif, sans-serif and monospace fonts. If you need cantillation marks for liturgical texts, Culmus also has a Taamey David. There are many different versions of font faces. |
Babelstone Han | Chinese | It supports both Simplified and Traditional Chinese and has an especially comprehensive selection of traditional Chinese characters. |
Rachana | Malayalam | It was the first Unicode font to support traditional orthography. This is the version by smc.org.in. There are several other fonts floating around under the name “Rachana,” and some of them do not work. Manjari is another popular font suitable for these body text, designed on the same theoretical principles as Inconsolata. |
Abyssinica SIL | Abyssinica SIL | |
Shobhika | Sanskrikt | With an excellent coverage of Vedic accents, Latin transliteration, mathematical and technical symbols, and Cyrillic. |
You may also want to have a look at some articles on tex.textackexchange on Arabic
Recommended options for monolingual documents
Language | Method | Font | Additional package options (lua) | xe | Notes |
---|---|---|---|---|---|
Arabic | provide | Renderer=Harfbuzz | bidi=basic, layout=counters.tabular | bidi=bidi-r | |
German | |||||
Hebrew | provide | Renderer=Harfbuzz | bidi=basic, layout=tabular | bidi=bidi-r | |
Hindi | provide | Renderer=Harfbuzz | |||
Portuguese | |||||
Swedish | |||||
Thai | provide | Renderer=Harfbuzz |