View on GitHub

Babel

The multilingual framework to localize LaTeX, LuaLaTeX, XeLaTeX

What’s new in babel 24.14

2024-11-30

This release introduces a couple of potentially breaking changes.

The revision of the documentation continues.

Default renderer with \babelfont

LuaLaTeX. Harfbuzz is now the default renderer in most scripts, except those of the ‘Greek family’, including Latin, Cyrillic, Armenian and Georgian. In the rest of scripts, if there is any change in the result it should be for the better. This is particularly true for the Indic scripts, like Devanagari, Malayalam, Bangla, Tibetan, etc., but also for RTL ones, like Arabic. (CJK is under study.) [There is an exception. For compatibity issues, Arabic, Hebrew and Syriac with bidi-r are still Node.]

There are two reasons to keep the default Node renderer in those alphabetic scripts:

This feature applies to \babelfont. The standard calls to fontspec are not touched, and \defaultfontfeatures is still fully functional and it can be used to override the renderer chosen by babel.

The following example illustrates how \babelfont defines fonts based on a generic declaration. Babel sets the script, the language, and the renderer for you, thus easing the font handling in complex multilingual documents:

\documentclass{article}

\usepackage[bidi=basic]{babel}
\babelfont{rm}{FreeSerif}

\begin{document}
\footnotesize
\selectlanguage{hindi} \fontname\font\ \chaptername\par
\selectlanguage{dutch} \fontname\font\ \chaptername\par
\selectlanguage{arabic} \fontname\font\ \chaptername\par
\selectlanguage{russian} \fontname\font\ \chaptername\par
\selectlanguage{georgian} \fontname\font\ \chaptername\par
\selectlanguage{bangla} \fontname\font\ \chaptername
\end{document}

import in lazy loading

Lazy loading now has an implicit import. This is a requested feature, and currently there are no real reasons for not to set date and captions, for example. There were some restrictions in pdftex related to font encodings, but they were lifted a few months ago.

Remember this behavior can be adjusted with autoload.options and autoload.bcp47.options in \babeladjust.

Note. Just after uploading it to CTAN I discovered a bug — in some cases, import is not honored and it behaves in the old fashion. To be fixed in the next release.

Changes in locale files

Fixes