View on GitHub

Babel

The multilingual framework to localize LaTeX, LuaLaTeX, XeLaTeX

Bengali

For the Bengali or Bangla language, the Harfbuzz renderer in luatex is recommended. Here is a minimal example:

\documentclass{article}

\usepackage[bengali, provide=*]{babel}
\babelfont{rm}[Renderer=Harfbuzz]{FreeSerif}

\begin{document}

বাংলা ভাষা বিকাশের ইতিহাস ১৩০০ বছর পুরনো। চর্যাপদ এ ভাষার আদি নিদর্শন।

\end{document}

It works with xetex, too, with a similar output, but with this engine there is no need the set the renderer (it’s always Harfbuzz).

Counters

Although Bengali numerals are best entered directly in its original form, you may still need some conversion because LaTeX uses internally the Arabic ones. With luatex there are two ways to map Arabic to Bengali numerals, passed as option to \babelprovide:

To perform this conversión, use the following preamble:

\usepackage[bengali, provide=*]{babel}
\babelprovide[mapdigits]{bengali}  % or alternatively maparabic
\babelfont{rm}[Renderer=Harfbuzz]{FreeSerif}

There is an additional counter:

See the explanation in the babel manual about \localecounter and localenumeral.

Punctuation

Only luatex. The transform danda.nobreak prevents a line break before a danda or double danda if there is a space.

In Unicode, danda and double danda are shared by several scripts, and babel doesn’t assign them by default to any of them. If you are using onchar to select the font you may want to assign them with:

\babelcharproperty{`।}{locale}{bengali}
\babelcharproperty{`॥}{locale}{bengali}