[latex3-commits] [git/LaTeX3-latex3-babel] master: 3.39. See https://github.com/latex3/babel/wiki/What's-new-in-babel-3.39 (c0c1582)

Javier jbezos at dante.de
Mon Feb 3 16:10:10 CET 2020


Repository : https://github.com/latex3/babel
On branch  : master
Link       : https://github.com/latex3/babel/commit/c0c158227ac5a998fe40c97ba4e8f28b2bac541b

>---------------------------------------------------------------

commit c0c158227ac5a998fe40c97ba4e8f28b2bac541b
Author: Javier <jbezos at localhost>
Date:   Mon Feb 3 16:10:10 2020 +0100

    3.39. See https://github.com/latex3/babel/wiki/What's-new-in-babel-3.39


>---------------------------------------------------------------

c0c158227ac5a998fe40c97ba4e8f28b2bac541b
 README.md                                          |  35 ++-
 babel.dtx                                          | 261 +++++++++++++++------
 babel.ins                                          |   2 +-
 babel.pdf                                          | Bin 751760 -> 754441 bytes
 bbcompat.dtx                                       |   2 +-
 locale/de/babel-de-AT.ini                          |   6 +-
 locale/de/babel-de-CH.ini                          |   6 +-
 locale/de/babel-de.ini                             |   6 +-
 locale/ii/babel-ii.ini                             |   4 +-
 locale/ja/babel-ja.ini                             |   4 +-
 locale/km/babel-km.ini                             |   4 +-
 locale/ko/babel-ko.ini                             |   4 +-
 locale/lo/babel-lo.ini                             |   4 +-
 locale/sa/babel-sa-Beng.ini                        |   6 +-
 locale/sa/babel-sa-Deva.ini                        |   6 +-
 locale/sa/babel-sa-Gujr.ini                        |   6 +-
 locale/sa/babel-sa-Knda.ini                        |   6 +-
 locale/sa/babel-sa-Mlym.ini                        |   6 +-
 locale/sa/babel-sa-Telu.ini                        |   6 +-
 locale/sa/babel-sa.ini                             |   6 +-
 locale/th/babel-th.ini                             |   4 +-
 locale/yue/babel-yue.ini                           |   4 +-
 locale/zh/babel-zh-Hans-HK.ini                     |   4 +-
 locale/zh/babel-zh-Hans-MO.ini                     |   4 +-
 locale/zh/babel-zh-Hans-SG.ini                     |   4 +-
 locale/zh/babel-zh-Hans.ini                        |   4 +-
 locale/zh/babel-zh-Hant-HK.ini                     |   4 +-
 locale/zh/babel-zh-Hant-MO.ini                     |   4 +-
 locale/zh/babel-zh-Hant.ini                        |   4 +-
 locale/zh/babel-zh.ini                             |   4 +-
 samples/harf-farsi-malayalam.pdf                   | Bin 42616 -> 42616 bytes
 samples/harf-farsi-malayalam.tex                   |   2 -
 samples/lua-arabic.pdf                             | Bin 85036 -> 85306 bytes
 samples/lua-beamer.pdf                             | Bin 22332 -> 22301 bytes
 samples/lua-beamer.tex                             |   4 +-
 samples/lua-bidibasic.pdf                          | Bin 49525 -> 49526 bytes
 .../{lua-secenum.pdf => lua-hebrew-secenum.pdf}    | Bin 57644 -> 55880 bytes
 .../{lua-secenum.tex => lua-hebrew-secenum.tex}    |   2 +-
 samples/lua-hebrew.pdf                             | Bin 84413 -> 84286 bytes
 samples/lua-polygreek.pdf                          | Bin 20464 -> 20466 bytes
 samples/lua-thai.pdf                               | Bin 36145 -> 36300 bytes
 samples/lua-thai.tex                               |   2 +-
 samples/lua-zh.pdf                                 | Bin 88497 -> 88456 bytes
 samples/luahb-udhr.pdf                             | Bin 237511 -> 237691 bytes
 samples/luahb-udhr.tex                             |  21 +-
 samples/xe-bidi.pdf                                | Bin 14027 -> 15658 bytes
 samples/xe-bidi.tex                                |   2 +-
 testfiles/tlb3438.tlg                              |  11 +-
 testfiles/tlb3805.tlg                              |  32 ++-
 49 files changed, 291 insertions(+), 205 deletions(-)

diff --git a/README.md b/README.md
index f70f474..897bbee 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## Babel 3.38.1894
+## Babel 3.39
 
 This package manages culturally-determined typographical (and other)
 rules, and hyphenation patterns for a wide range of languages.  Many
@@ -7,22 +7,15 @@ lualatex out of the box.  A few even work with plain formats.
 
 The latest stable version is available on <https://ctan.org/pkg/babel>.
 
-Languages are not part of the Babel core any more; in particular, it
-shall be no longer necessary to synchronize Babel core releases with
-releases of Babel language files. See CONTRIB for further details
-about contributing a language. You may also create an ini file or
-improve the existing ones -- it's a trivial task (no programming
-skills required at all), but don't hesitate to ask for help.
+Changes in version 3.39 are described in:
+
+https://github.com/latex3/babel/wiki/What's-new-in-babel-3.39
 
 Included is a set of ini files for about 200 languages.
 
 The best way to install and/or update it is with the help of package
 managers.
 
-Changes are described in babel.pdf with the label "New <version>". The
-manual has been expanded to include some tips and tricks, but it will
-be improved in next releases.
-
 ### Reporting Bugs
 
 If you wish to report a problem or bug in any of these packages please
@@ -51,17 +44,23 @@ respective authors.
 ### Latest changes
 
 ```
-3.39   2020-02-??
+3.39   2020-02-03
+       - Languages can now be loaded on the fly (via \babelprovide).
+       - With \babelposthyphenation captured chars can now be mapped in
+         the replacement (lua).
        - \babelcharproperty can be used to assign specific chars to a
-         locale.
-       - \babelposthyphenation: captured chars now can be mapped in
-         the replacement.
-       - Fix - Sichuan Yi: line breaking was not activated.
-See https://github.com/latex3/babel/wiki/What's-new-in-babel-3.39
+         locale (lua).
+       - Fixes:
+          - Sichuan Yi: line breaking was not activated (lua).
+          - Hyphenation was not always applied with onchar (lua).
+          - bidi=basic-l/basic-r where not activated correctly (xe).
+          - Thai and turkish raised and error without import in
+            \babelprovide.
+          - Cleaned up some ini/tex locale files (de, zh, sa).
 
 3.38   2020-01-15
        - Automatic switching of ids (\language and \localeid), and fonts
-         based on script blocks (lua).s
+         based on script blocks (lua).
        - New macro - \localeinfo, to access the basic data in the ini
          file loaded by languages.
 See https://github.com/latex3/babel/wiki/What's-new-in-babel-3.38
diff --git a/babel.dtx b/babel.dtx
index 51c79fb..d0a6314 100644
--- a/babel.dtx
+++ b/babel.dtx
@@ -1,7 +1,7 @@
 % \iffalse
 % This document requires lualatex
 %%
-%% Copyright (C) 2012-2019 Javier Bezos and Johannes L. Braams.
+%% Copyright (C) 2012-2020 Javier Bezos and Johannes L. Braams.
 %% Copyright (C) 1989-2012 Johannes L. Braams and
 %%           any individual authors listed elsewhere in this file.
 %% All rights reserved.
@@ -31,7 +31,7 @@
 %
 % \iffalse
 %<*filedriver>
-\ProvidesFile{babel.dtx}[2020/01/22 v3.38.1894 The Babel package]
+\ProvidesFile{babel.dtx}[2020/02/03 v3.39 The Babel package]
 \documentclass{ltxdoc}
 \GetFileInfo{babel.dtx}
 \usepackage{fontspec}
@@ -235,8 +235,8 @@ Xe\largetex
 \part{User guide}
 
 \begin{itemize}
-\item This user guide focuses on \LaTeX. There are also some notes on
-  its use with Plain \TeX.
+\item This user guide focuses on internationalization and localization
+  with \LaTeX. There are also some notes on its use with Plain \TeX.
 
 \item  Changes and new features with relation to version 3.8 are
   highlighted with \New{X.XX}\hspace{-.5em}, and there are some notes
@@ -496,6 +496,40 @@ _\usepackage[vietnamese,danish]{babel}_
 \end{verbatim}
 \end{example}
 
+\subsection{Mostly monolingual documents}
+
+\New{3.39} Very often, multilingual documents consist of a main
+language with small pieces of text in another languages (words, idioms,
+short sentences). Typically, all you need is to set the line breaking
+rules and, perhaps, the font. In such a case, \babel{} now does not
+require declaring these secondary languages explicitly, because the
+basic settings are loaded on the fly when the language is selected (and
+also when provided in the optional argument of |\babelfont|, if used.)
+
+This is particularly useful, too, when there are short texts of this
+kind coming from an external source whose contents are not known on
+beforehand (for example, titles in a bibliography). At this regard, it
+is worth remembering that |\babelfont| does not load any font until
+required, so that it can be used just in case.
+
+\begin{example}
+  A trivial document is:
+\setengine{luatex/xetex}
+\begin{verbatim}
+\documentclass{article}
+\usepackage[english]{babel}
+
+\babelfont[russian]{rm}{FreeSerif}
+
+\begin{document}
+
+English. \foreignlanguage{russian}{Русский}.
+\foreignlanguage{spanish}{Español}
+
+\end{document}
+\end{verbatim}
+\end{example}
+
 \subsection{Modifiers}
 
 \New{3.9c} The basic behavior of some languages can be modified when
@@ -545,6 +579,7 @@ modifiers are a more general mechanism.
   cases, the error vanishes when the document is typeset again, but in
   more severe ones you will need to remove the |aux| file.
 \end{itemize}
+
 \subsection{Plain}
 
 In Plain, load languages styles with |\input| and then use
@@ -1197,6 +1232,13 @@ An alternative approach to define a language (or, more precisely, a
 \babel{} provides about 200 of these files containing the basic data
 required for a locale. 
 
+|ini| files are not meant only for \babel, and they has been devised as
+a resource for other packages. To easy interoperability between \TeX{}
+and other systems, they are identified with the BCP 47 codes as
+preferred by the Unicode Common Language Data Repository, which was
+used as source for most of the data provided by these files, too (the
+main exception being the |\...name| strings).
+
 Most of them set the date, and many also the captions (Unicode and
 LICR). They will be evolving with the time to add more features
 (something to keep in mind if backward compatibility is important). The
@@ -1909,6 +1951,26 @@ zulu
 \endgroup
 \hrule
 
+\bigskip
+
+\textbf{Modifying and adding values to |ini| files}
+
+\New{3.39} There is a way to modify the values of |ini| files when they
+get loaded with |\babelprovide| and |import|. To set, say,
+|digits.native| in the |numbers| section, use something like
+|numbers/digits.native=abcdefghij|. Keys may be added, too. Without
+|import| you may modify the identification keys.
+
+This can be used to create private variants easily. All you need is to
+import the same |ini| file with a different locale name and different
+parameters. 
+
+% \begin{example}
+%   Let's assume you need only the basic features of `spanish`, so that
+%   the |ini| file is enough, and also a variant with your own
+%   hyphenation with  
+% \end{example}
+
 \subsection{Selecting fonts}
 
 \New{3.15} Babel provides a high level interface on top of |fontspec|
@@ -2006,22 +2068,18 @@ to select fonts in addition to the three basic families.
 \babelfont[hindi]{rm}{Shobhika}
 \end{verbatim}
   This makes sure the OpenType script for Devanagari is |deva| and not
-  |dev2| (\luatex{} does not detect automatically the correct 
-  script\footnote{And even with the correct code some fonts could be 
-  rendered incorrectly by \textsf{fontspec}, so double-check the 
-  results. \xetex{} fares better, but some fonts are still
-  problematic.}). You may also pass some options to \textsf{fontspec}:
-  with |silent|, the warnings about unavailable scripts or languages
-  are not shown (they are only really useful when the document format
-  is being set up).
+  |dev2|, in case it is not detected correctly. You may also pass some
+  options to \textsf{fontspec}: with |silent|, the warnings about
+  unavailable scripts or languages are not shown (they are only really
+  useful when the document format is being set up).
 \end{note}
 
 \begin{note}
   Directionality is a property affecting margins, indentation, column
-  order, etc., not just text. Therefore, it is under the direct
-  control of the language, which applies both the script and the
-  direction to the text. As a consequence, there is no need to set
-  \texttt{Script} when declaring a font (nor \texttt{Language}). In
+  order, etc., not just text. Therefore, it is under the direct control
+  of the language, which applies both the script and the direction to
+  the text. As a consequence, there is no need to set \texttt{Script}
+  when declaring a font with |\babelfont| (nor \texttt{Language}). In
   fact, it is even discouraged.
 \end{note}
 
@@ -2100,7 +2158,7 @@ sometimes necessary, but not always trivial.
 }
 \end{verbatim}
 As of 3.15, there is no need to hide spaces with \texttt{\%%
-} (\babel{} removes them), but it is advisable to do it.
+} (\babel{} removes them), but it is advisable to do so.
 \item The new way, which is found in |bulgarian|, |azerbaijani|,
   |spanish|, |french|, |turkish|, |icelandic|, |vietnamese| and a few
   more, as well as in languages created with |\babelprovide| and its
@@ -2187,6 +2245,17 @@ In most cases, you will only need to define a few macros.
 \end{verbatim}
 \end{example}
 
+\begin{example}
+  Locales with names based on BCP 47 codes can be created with
+  something like:
+\begin{verbatim}
+  \babelprovide[import=en-US]{enUS}
+\end{verbatim}
+  Note, however, mixing ways to identify locales can lead to problems.
+  For example, is \verb|yi| the name of the language spoken by the Yi
+  people or is it the code for Yiddish?
+\end{example}
+
 The main language is not changed (\texttt{danish} in this example).
 So, you must add |\selectlanguage{arhinish}| or other selectors where
 necessary.
@@ -2216,8 +2285,7 @@ There are about 200 |ini| files, with data taken from the |ldf| files
 and the CLDR provided by Unicode. Not all languages in the latter are
 complete, and therefore neither are the |ini| files. A few languages
 will show a warning about the current lack of suitability of the date
-format (\textsf{hindi}, \textsf{french}, \textsf{breton}, and
-\textsf{occitan}).
+format (\textsf{french}, \textsf{breton}, and \textsf{occitan}).
 
 Besides |\today|, this option defines an additional command for dates:
 |\<language>date|, which takes three arguments, namely, year, month and
@@ -2540,28 +2608,47 @@ of the previous char in \luatex, and the font size set by the last
 non-standard hyphenation rules, like |f-f| $\to$ |ff-f|, repeated
 hyphens, ranked ruled (or more precisely, ‘penalized’ hyphenation
 points), and so on. No rules are currently provided by default, but
-they can be defined as shown in the following example:
+they can be defined as shown in the following example, where |{1}| is
+the first captured char (between |()| in the pattern):
 \begin{verbatim}
 \babelposthyphenation{german}{([fmtrp]) | {1}}
 {
   { no = {1}, pre = {1}{1}- }, % Replace first char with disc
-  remove,                      % Remove automatic disc
+  remove,                      % Remove automatic disc (2nd node)
   {}                           % Keep last char, untouched
 }
 \end{verbatim}
 
-In the replacements, a capture may map the captured char to another
-one, too. For example, if the first capture reads |([ΐΰ])|, the
-replacement could be \verb+{1|ΐΰ|ίύ}+, which maps \textit{ΐ} to
-\textit{ί}, and \textit{ΰ} to \textit{ύ}.
+In the replacements, a captured char may be mapped to another, too. For
+example, if the first capture reads |([ΐΰ])|, the replacement could be
+\verb+{1|ΐΰ|ίύ}+, which maps \textit{ΐ} to \textit{ί}, and \textit{ΰ}
+to \textit{ύ}, so that the diaeresis is removed.
 
-Currently, this feature must be explicitly activated with:
-\begin{verbatim}
-\babeladjust{ hyphenation.extra = on }
-\end{verbatim}
+This feature is activated with the first |\babelposthyphenation|.
 
 See the \href{https://github.com/latex3/babel/wiki}{\babel\ wiki} for a
-more detailed description and some examples.
+more detailed description and some examples. It also describes an
+additional replacement type with the key |string|.
+
+\begin{example}
+  Although the main purpose of this command is non-standard
+  hyphenation, it may actually be used for other transformations (after
+  hyphenation is applied, so you must take discretionaries into
+  account). For example, you can use the |string| replacement to
+  replace a character (or series of them) by another character (or
+  series of them). Thus, to enter \textit{ž} as |zh| and \textit{š} as
+  |sh| in a newly created locale for transliterated Russian:
+\begin{verbatim}
+\babelprovide[hyphenrules=+]{russian-latin}   % Create locale
+\babelposthyphenation{russian-latin}{([sz])h} % Create rule
+{
+  { string = {1|sz|šž} },
+  remove
+}
+\end{verbatim}
+  In other words, it is a quite general tool. (A counterpart
+  |\babelprehyphenation| is on the way.)
+\end{example}
 
 \subsection{Selecting scripts}
 
@@ -2668,20 +2755,13 @@ consider the intrinsic direction of scripts and weak directionality.)
 tentative, but it mostly works. For RL documents use the former, and
 for LR ones use the latter.
 
-\New{3.37} There is some experimental support for \textsf{luahbtex}
-(with |lualatex-dev|) and the latest releases of \textsf{luaotfload}
-(3.11), with |Renderer = Harfbuzz| in \textsf{fontspec}. Since it is
-based on \luatex, the option |basic| mostly works (You may need
-deactivate the |rtlm| or the |rtla| font features, or alternatively
-deactivate mirroring in \babel{} with |\babeladjust|.)
-
 There are samples on GitHub, under \texttt{/required/babel/samples}.
 See particularly |lua-bidibasic.tex| and |lua-secenum.tex|.
 
 \begin{example}
   The following text comes from the Arabic Wikipedia (article about
   Arabia). Copy-pasting some text from the Wikipedia is a good way to
-  test this feature. Remember |basic-r| is available in \luatex{}
+  test this feature. Remember |basic| is available in \luatex{}
   only.
   \begingroup
 % If you are looking at the code to see how it has been written, you
@@ -2694,7 +2774,7 @@ See particularly |lua-bidibasic.tex| and |lua-secenum.tex|.
 \begin{verbatim}
 \documentclass{article}
 
-\usepackage[_bidi=basic-r_]{babel}
+\usepackage[_bidi=basic_]{babel}
 
 _\babelprovide[import, main]{arabic}_
 
@@ -2948,6 +3028,7 @@ command is available always in bidi documents, even without
 \subsection{Language attributes}
 
 \DescribeMacro{\languageattribute}
+
 This is a user-level command, to be used in the preamble of a
 document (after |\usepackage[...]{babel}|), that declares which
 attributes are to be used for a given language. It takes two
@@ -3305,15 +3386,6 @@ See the code section for |\foreignlanguage*| (a new starred
 version of |\foreignlanguage|).
 
 \medskip
-\textbf{Modifying, and adding, values of |ini| files}
-
-\New{3.37} There is a way to modify the values of |ini| files when they
-get loaded with |\babelprovide|. To set, say, |digits.native| in the
-|numbers| section, use something like
-|numbers..digits.native=abcdefghij| (note the double dot between the
-section and the key name). New keys may be added, too.
-
-\medskip
 \textbf{Old and deprecated stuff}
 
 A couple of tentative macros were provided by \babel{} ($\ge$3.9g) with
@@ -4258,8 +4330,8 @@ help from Bernd Raichle, for which I am grateful.
 % \section{Tools}
 %
 %    \begin{macrocode}
-%<<version=3.38.1894>>
-%<<date=2020/01/22>>
+%<<version=3.39>>
+%<<date=2020/02/03>>
 %    \end{macrocode}
 %
 % \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -7361,6 +7433,7 @@ help from Bernd Raichle, for which I am grateful.
   \edef\bbl at L{\zap at space#1 \@empty}%
   \edef\bbl at G{\zap at space#2 \@empty}%
   \bbl at startcmds@ii}
+\let\bbl at startcommands\StartBabelCommands
 %    \end{macrocode}
 %
 %    Parse the encoding info to get the label, input, and font parts.
@@ -7486,6 +7559,7 @@ help from Bernd Raichle, for which I am grateful.
   \endgroup
   \endgroup
   \bbl at scafter}
+\let\bbl at endcommands\EndBabelCommands
 %    \end{macrocode}
 %
 %    Now we define commands to be used inside |\StartBabelCommands|.
@@ -7614,7 +7688,7 @@ help from Bernd Raichle, for which I am grateful.
   \newcommand\SetHyphenMap[1]{%
     \bbl at forlang\bbl at tempa{%
       \expandafter\bbl at stringdef
-        \csname\bbl at tempa @bbl at hyphenmap\endcsname{##1}}}
+        \csname\bbl at tempa @bbl at hyphenmap\endcsname{##1}}}%
 %<</Macros local to BabelCommands>>
 %    \end{macrocode}
 %
@@ -8225,7 +8299,7 @@ help from Bernd Raichle, for which I am grateful.
   \let\bbl at savelangname\languagename
   \edef\bbl at savelocaleid{\the\localeid}%
   % Set name and locale id
-  \def\languagename{#2}%
+  \edef\languagename{#2}%
   % \global\@namedef{bbl at lcname@#2}{#2}%
   \bbl at id@assign
   \let\bbl at KVP@captions\@nil
@@ -8242,7 +8316,7 @@ help from Bernd Raichle, for which I am grateful.
   \let\bbl at KVP@onchar\@nil
   \let\bbl at KVP@chargroups\@nil
   \bbl at forkv{#1}{%  TODO - error handling
-    \in@{..}{##1}%
+    \in@{/}{##1}%
     \ifin@
       \bbl at renewinikey##1\@@{##2}%
     \else
@@ -8294,6 +8368,7 @@ help from Bernd Raichle, for which I am grateful.
          \bbl at exportkey{lnbrk}{typography.linebreaking}{h}%
          \bbl at exportkey{hyphr}{typography.hyphenrules}{}%
          \bbl at exportkey{intsp}{typography.intraspace}{}%
+         \endinput
        \endgroup}%           boxed, to avoid extra spaces:
      {\setbox\z@\hbox{\InputIfFileExists{babel-#2.tex}{}{}}}}%
     {}%
@@ -8318,6 +8393,11 @@ help from Bernd Raichle, for which I am grateful.
       end}%
     \bbl at xin@{ ids }{ \bbl at KVP@onchar\space}%
     \ifin@
+      \ifx\bbl at starthyphens\@undefined % Needed if no explicit selection
+        \AddBabelHook{babel-onchar}{beforestart}{{\bbl at starthyphens}}%
+      \fi
+      \bbl at exp{\\\bbl at add\\\bbl at starthyphens
+        {\\\bbl at patterns@lua{\languagename}}}%
       % TODO - error/warning if no script
       \directlua{
         if Babel.script_blocks['\bbl at cs{sbcp@\languagename}'] then
@@ -8336,7 +8416,7 @@ help from Bernd Raichle, for which I am grateful.
         if Babel.script_blocks['\bbl at cs{sbcp@\languagename}'] then
           Babel.loc_to_scr[\the\localeid] =
             Babel.script_blocks['\bbl at cs{sbcp@\languagename}']
-        end}
+        end}%
       \ifx\bbl at mapselect\@undefined
         \AtBeginDocument{%
           \expandafter\bbl at add\csname selectfont \endcsname{{\bbl at mapselect}}%
@@ -8440,7 +8520,7 @@ help from Bernd Raichle, for which I am grateful.
                return head
              end
            end
-        }}
+        }}%
     \fi
   \fi
   % == require.babel in ini ==
@@ -8507,7 +8587,7 @@ help from Bernd Raichle, for which I am grateful.
   \@namedef{date#1}{}% marks lang exists - required by \StartBabelCommands
   \@namedef{extras#1}{}%
   \@namedef{noextras#1}{}%
-  \StartBabelCommands*{#1}{captions}%
+  \bbl at startcommands*{#1}{captions}%
     \ifx\bbl at KVP@captions\@nil %      and also if import, implicit
       \def\bbl at tempb##1{%             elt for \bbl at captionslist
         \ifx##1\@empty\else
@@ -8530,7 +8610,7 @@ help from Bernd Raichle, for which I am grateful.
       \bbl at savetoday
       \bbl at savedate
     \fi
-  \EndBabelCommands
+  \bbl at endcommands
   \bbl at exp{%
     \def\<#1hyphenmins>{%
       {\bbl at ifunset{bbl at lfthm@#1}{2}{\@nameuse{bbl at lfthm@#1}}}%
@@ -8630,7 +8710,7 @@ help from Bernd Raichle, for which I am grateful.
     \def\bbl at inipreread##1=##2\@@{%
       \bbl at trim@def\bbl at tempa{##1}% Redundant below !!
       % Move trims here ??
-      \bbl at ifunset{bbl at KVP@\bbl at section..\bbl at tempa}%
+      \bbl at ifunset{bbl at KVP@\bbl at section/\bbl at tempa}%
         {\expandafter\bbl at inireader\bbl at tempa=##2\@@}%
         {}}%
     \let\bbl at inireader\bbl at iniskip
@@ -8653,6 +8733,7 @@ help from Bernd Raichle, for which I am grateful.
     \@nameuse{bbl at renew@\bbl at section}%
     \global\bbl at csarg\let{renew@\bbl at section}\relax
     \@nameuse{bbl at secpost@\bbl at section}%  
+%    \bbl at csarg\bbl at toglobal{inikeys@\languagename}%
   \fi}
 \def\bbl at iniline#1\bbl at iniline{%
   \@ifnextchar[\bbl at inisec{\@ifnextchar;\bbl at iniskip\bbl at inipreread}#1\@@}% ]
@@ -8675,14 +8756,14 @@ help from Bernd Raichle, for which I am grateful.
   \@nameuse{bbl at secpost@\bbl at section}%  ends previous section
   \def\bbl at section{#1}%                 starts current section
   \def\bbl at elt##1##2{%
-    \@namedef{bbl at KVP@#1..##1}{}}%
+    \@namedef{bbl at KVP@#1/##1}{}}%
   \@nameuse{bbl at renew@#1}%
   \@nameuse{bbl at secpre@#1}%  pre-section `hook'
   \bbl at ifunset{bbl at inikv@#1}%
     {\let\bbl at inireader\bbl at iniskip}%
     {\bbl at exp{\let\\\bbl at inireader\<bbl at inikv@#1>}}}
 \let\bbl at renewlist\@empty
-\def\bbl at renewinikey#1..#2\@@#3{%
+\def\bbl at renewinikey#1/#2\@@#3{%
   \bbl at ifunset{bbl at renew@#1}%
     {\bbl at add@list\bbl at renewlist{#1}}%
     {}%
@@ -9027,9 +9108,7 @@ help from Bernd Raichle, for which I am grateful.
 \@namedef{bbl at ADJ@layout.lists at on}{%
   \bbl at adjust@layout{\let\list\bbl at OL@list}}
 \@namedef{bbl at ADJ@hyphenation.extra at on}{%
-  \directlua{
-    Babel.linebreaking.add_after(Babel.post_hyphenate_replace)
-  }}
+  \bbl at activateposthyphen}
 %    \end{macrocode}
 %
 % \section{The kernel of Babel (\texttt{babel.def} for \LaTeX only)}
@@ -10021,18 +10100,20 @@ help from Bernd Raichle, for which I am grateful.
     \newtoks\everypar
     \everypar=\bbl at severypar
     \bbl at severypar{\bbl at xeeverypar\the\everypar}}
-  \@ifpackagewith{babel}{bidi=bidi}%
-    {\let\bbl at textdir@i\@gobbletwo
-     \let\bbl at xebidipar\@empty
-     \AddBabelHook{bidi}{foreign}{%
-       \def\bbl at tempa{\def\BabelText####1}%
-       \ifcase\bbl at thetextdir
-         \expandafter\bbl at tempa\expandafter{\BabelText{\LR{##1}}}%
-       \else
-         \expandafter\bbl at tempa\expandafter{\BabelText{\RL{##1}}}%
-       \fi}
-     \def\bbl at pardir#1{\ifcase#1\relax\setLR\else\setRL\fi}}
-    {}%
+  \def\bbl at tempb{%
+    \let\bbl at textdir@i\@gobbletwo
+    \let\bbl at xebidipar\@empty
+    \AddBabelHook{bidi}{foreign}{%
+      \def\bbl at tempa{\def\BabelText########1}%
+      \ifcase\bbl at thetextdir
+        \expandafter\bbl at tempa\expandafter{\BabelText{\LR{####1}}}%
+      \else
+        \expandafter\bbl at tempa\expandafter{\BabelText{\RL{####1}}}%
+      \fi}
+    \def\bbl at pardir##1{\ifcase##1\relax\setLR\else\setRL\fi}}
+  \@ifpackagewith{babel}{bidi=bidi}{\bbl at tempb}{}%
+  \@ifpackagewith{babel}{bidi=bidi-l}{\bbl at tempb}{}%
+  \@ifpackagewith{babel}{bidi=bidi-r}{\bbl at tempb}{}%
 \fi
 %    \end{macrocode}
 %
@@ -10413,7 +10494,6 @@ help from Bernd Raichle, for which I am grateful.
   \edef\languagename{%
     \ifnum\escapechar=\expandafter`\string#1\@empty
     \else\string#1\@empty\fi}%
-  % \@namedef{bbl at lcname@#1}{#1}%
   \select at language{\languagename}%
   % write to auxs
   \expandafter\ifx\csname date\languagename\endcsname\relax\else
@@ -10430,8 +10510,13 @@ help from Bernd Raichle, for which I am grateful.
   % set name
   \edef\languagename{#1}%
   \bbl at fixname\languagename
+  \expandafter\ifx\csname date\languagename\endcsname\relax
+    \IfFileExists{babel-\languagename.tex}%
+      {\babelprovide{\languagename}}%
+      {}%
+  \fi
   \bbl at iflanguage\languagename{%
-    \expandafter\ifx\csname date\languagename\endcsname\relax
+     \expandafter\ifx\csname date\languagename\endcsname\relax
       \bbl at error
         {Unknown language `#1'. Either you have\\%
          misspelled its name, it has not been installed,\\%
@@ -10732,8 +10817,12 @@ help from Bernd Raichle, for which I am grateful.
 \def\foreign at language#1{%
   % set name
   \edef\languagename{#1}%
-  % \@namedef{bbl at lcname@#1}{#1}%
   \bbl at fixname\languagename
+  \expandafter\ifx\csname date\languagename\endcsname\relax
+    \IfFileExists{babel-\languagename.tex}%
+      {\babelprovide{\languagename}}%
+      {}%
+  \fi
   \bbl at iflanguage\languagename{%
     \expandafter\ifx\csname date\languagename\endcsname\relax
       \bbl at warning   % TODO - why a warning, not an error?
@@ -10952,6 +11041,7 @@ help from Bernd Raichle, for which I am grateful.
 \let\uselocale\setlocale
 \let\locale\setlocale
 \let\selectlocale\setlocale
+\let\localename\setlocale
 \let\textlocale\setlocale
 \let\textlanguage\setlocale
 \let\languagetext\setlocale
@@ -11577,6 +11667,12 @@ help from Bernd Raichle, for which I am grateful.
 \bbl at trace{Font handling with fontspec}
 \@onlypreamble\babelfont
 \newcommand\babelfont[2][]{%  1=langs/scripts 2=fam
+  \bbl at foreach{#1}{%
+    \expandafter\ifx\csname date##1\endcsname\relax
+    \IfFileExists{babel-##1.tex}%
+      {\babelprovide{##1}}%
+      {}%
+    \fi}%
   \edef\bbl at tempa{#1}%
   \def\bbl at tempb{#2}%  Used by \bbl at bblfont
   \ifx\fontspec\@undefined
@@ -12464,6 +12560,9 @@ help from Bernd Raichle, for which I am grateful.
 % \changes{babel~3.37}{2019/12/07}{Added code for non-standard
 %   hyphenation.}
 %
+% First, some general code for line breaking, used by
+% |\babelposthyphenation|.
+%
 % \textit{In progress.} Replace regular (ie, implicit) discretionaries
 % by spaceskips, based on the previous glyph (which I think makes
 % sense, because the hyphen and the previous char go always together).
@@ -13118,6 +13217,7 @@ end
 %    \begin{macrocode}
 \catcode`\#=6
 \gdef\babelposthyphenation#1#2#3{&%
+  \bbl at activateposthyphen
   \begingroup
     \def\babeltempa{\bbl at add@list\babeltempb}&%
     \let\babeltempb\@empty
@@ -13150,6 +13250,11 @@ end
     }&%
   \endgroup}
 \endgroup
+\def\bbl at activateposthyphen{%
+  \let\bbl at activateposthyphen\relax
+  \directlua{
+    Babel.linebreaking.add_after(Babel.post_hyphenate_replace)
+  }}
 %    \end{macrocode}
 %
 % \subsection{Layout}
diff --git a/babel.ins b/babel.ins
index 978ce14..86e70a5 100644
--- a/babel.ins
+++ b/babel.ins
@@ -26,7 +26,7 @@
 %% and covered by LPPL is defined by the unpacking scripts (with
 %% extension .ins) which are part of the distribution.
 %%
-\def\filedate{2020/01/22}
+\def\filedate{2020/02/03}
 \def\batchfile{babel.ins}
 \input docstrip.tex
 
diff --git a/babel.pdf b/babel.pdf
index 8bbbd7e..fd66d12 100644
Binary files a/babel.pdf and b/babel.pdf differ
diff --git a/bbcompat.dtx b/bbcompat.dtx
index 8ef613d..610eb84 100644
--- a/bbcompat.dtx
+++ b/bbcompat.dtx
@@ -30,7 +30,7 @@
 %
 % \iffalse
 %<*dtx>
-\ProvidesFile{bbcompat.dtx}[2020/01/22 v3.38.1894]
+\ProvidesFile{bbcompat.dtx}[2020/02/03 v3.39]
 %</dtx>
 %
 %% File 'bbcompat.dtx'
diff --git a/locale/de/babel-de-AT.ini b/locale/de/babel-de-AT.ini
index 8045641..ea818e0 100644
--- a/locale/de/babel-de-AT.ini
+++ b/locale/de/babel-de-AT.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.0
-date = 2017-09-01
+version = 1.1
+date = 2020-01-27
 name.local = Deutsch
 name.english = German
 name.babel = german-austria
@@ -151,7 +151,7 @@ time.short = [HH]:[mm]
 
 [typography]
 frenchspacing = yes
-hyphenrules = german
+hyphenrules = ngerman
 lefthyphenmin = 2
 righthyphenmin = 2
 hyphenchar = 
diff --git a/locale/de/babel-de-CH.ini b/locale/de/babel-de-CH.ini
index f5dcf57..2099d52 100644
--- a/locale/de/babel-de-CH.ini
+++ b/locale/de/babel-de-CH.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.0
-date = 2017-09-01
+version = 1.1
+date = 2020-01-27
 name.local = Deutsch
 name.english = German
 name.babel = german-switzerland
@@ -153,7 +153,7 @@ time.short = [HH]:[mm]
 
 [typography]
 frenchspacing = yes
-hyphenrules = swissgerman
+hyphenrules = ngerman
 lefthyphenmin = 2
 righthyphenmin = 2
 hyphenchar = 
diff --git a/locale/de/babel-de.ini b/locale/de/babel-de.ini
index d3a9c53..43c52b7 100644
--- a/locale/de/babel-de.ini
+++ b/locale/de/babel-de.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.0
-date = 2017-09-01
+version = 1.1
+date = 2020-01-27
 name.local = Deutsch
 name.english = German
 name.babel = german
@@ -146,7 +146,7 @@ time.short = [HH]:[mm]
 
 [typography]
 frenchspacing = yes
-hyphenrules = german
+hyphenrules = ngerman
 lefthyphenmin = 2
 righthyphenmin = 2
 hyphenchar = 
diff --git a/locale/ii/babel-ii.ini b/locale/ii/babel-ii.ini
index 9df6da1..a2040c0 100644
--- a/locale/ii/babel-ii.ini
+++ b/locale/ii/babel-ii.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.0
-date = 2017-09-01
+version = 1.1
+date = 2020-01-20
 name.local = ꆈꌠꉙ
 name.english = Sichuan Yi
 name.babel = sichuanyi
diff --git a/locale/ja/babel-ja.ini b/locale/ja/babel-ja.ini
index 9c57b5e..b8bd335 100644
--- a/locale/ja/babel-ja.ini
+++ b/locale/ja/babel-ja.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.1
-date = 2019-05-05
+version = 1.2
+date = 2020-01-20
 name.local = 日本語
 name.english = Japanese
 name.babel = japanese
diff --git a/locale/km/babel-km.ini b/locale/km/babel-km.ini
index 4302a9e..d266c9f 100644
--- a/locale/km/babel-km.ini
+++ b/locale/km/babel-km.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2018-10-02
+version = 1.4
+date = 2020-01-20
 name.local = ខ្មែរ
 name.english = Khmer
 name.babel = khmer
diff --git a/locale/ko/babel-ko.ini b/locale/ko/babel-ko.ini
index 24ce04a..e0cb7af 100644
--- a/locale/ko/babel-ko.ini
+++ b/locale/ko/babel-ko.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.2
-date = 2019-10-30
+version = 1.3
+date = 2020-01-20
 name.local = 한국어
 name.english = Korean
 name.babel = korean
diff --git a/locale/lo/babel-lo.ini b/locale/lo/babel-lo.ini
index a9f8c1a..87789e0 100644
--- a/locale/lo/babel-lo.ini
+++ b/locale/lo/babel-lo.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2018-10-02
+version = 1.4
+date = 2020-01-20
 name.local = ລາວ
 name.english = Lao
 name.babel = lao
diff --git a/locale/sa/babel-sa-Beng.ini b/locale/sa/babel-sa-Beng.ini
index 55b3ab3..1bdcb7d 100644
--- a/locale/sa/babel-sa-Beng.ini
+++ b/locale/sa/babel-sa-Beng.ini
@@ -11,10 +11,10 @@
 
 [identification]
 charset = utf8
-version = 0.5
-date = 2018-05-21
+version = 0.6
+date = 2020-01-29
 name.english = Sanskrit
-name.babel.0 = sanskrit
+name.babel = sanskrit
 tag.bcp47 = sa
 tag.opentype = SAN
 script.name = Bengali
diff --git a/locale/sa/babel-sa-Deva.ini b/locale/sa/babel-sa-Deva.ini
index 7539138..e118255 100644
--- a/locale/sa/babel-sa-Deva.ini
+++ b/locale/sa/babel-sa-Deva.ini
@@ -11,10 +11,10 @@
 
 [identification]
 charset = utf8
-version = 0.5
-date = 2018-05-21
+version = 0.6
+date = 2020-01-29
 name.english = Sanskrit
-name.babel.0 = sanskrit
+name.babel = sanskrit
 tag.bcp47 = sa
 tag.opentype = SAN
 script.name = Devanagari
diff --git a/locale/sa/babel-sa-Gujr.ini b/locale/sa/babel-sa-Gujr.ini
index f4974a4..f031e98 100644
--- a/locale/sa/babel-sa-Gujr.ini
+++ b/locale/sa/babel-sa-Gujr.ini
@@ -11,10 +11,10 @@
 
 [identification]
 charset = utf8
-version = 0.5
-date = 2018-05-21
+version = 0.6
+date = 2020-01-29
 name.english = Sanskrit
-name.babel.0 = sanskrit
+name.babel = sanskrit
 tag.bcp47 = sa
 tag.opentype = SAN
 script.name = Gujarati
diff --git a/locale/sa/babel-sa-Knda.ini b/locale/sa/babel-sa-Knda.ini
index 58c6101..7e1766e 100644
--- a/locale/sa/babel-sa-Knda.ini
+++ b/locale/sa/babel-sa-Knda.ini
@@ -11,10 +11,10 @@
 
 [identification]
 charset = utf8
-version = 0.5
-date = 2018-05-21
+version = 0.6
+date = 2020-01-29
 name.english = Sanskrit
-name.babel.0 = sanskrit
+name.babel = sanskrit
 tag.bcp47 = sa
 tag.opentype = SAN
 script.name = Kannada
diff --git a/locale/sa/babel-sa-Mlym.ini b/locale/sa/babel-sa-Mlym.ini
index 12cee73..40596e4 100644
--- a/locale/sa/babel-sa-Mlym.ini
+++ b/locale/sa/babel-sa-Mlym.ini
@@ -11,10 +11,10 @@
 
 [identification]
 charset = utf8
-version = 0.5
-date = 2018-05-21
+version = 0.6
+date = 2020-01-29
 name.english = Sanskrit
-name.babel.0 = sanskrit
+name.babel = sanskrit
 tag.bcp47 = sa
 tag.opentype = SAN
 script.name = Malayalam
diff --git a/locale/sa/babel-sa-Telu.ini b/locale/sa/babel-sa-Telu.ini
index c52cffd..b7f1861 100644
--- a/locale/sa/babel-sa-Telu.ini
+++ b/locale/sa/babel-sa-Telu.ini
@@ -11,10 +11,10 @@
 
 [identification]
 charset = utf8
-version = 0.5
-date = 2018-05-21
+version = 0.6
+date = 2020-01-29
 name.english = Sanskrit
-name.babel.0 = sanskrit
+name.babel = sanskrit
 tag.bcp47 = sa
 tag.opentype = SAN
 script.name = Telugu
diff --git a/locale/sa/babel-sa.ini b/locale/sa/babel-sa.ini
index 7539138..e118255 100644
--- a/locale/sa/babel-sa.ini
+++ b/locale/sa/babel-sa.ini
@@ -11,10 +11,10 @@
 
 [identification]
 charset = utf8
-version = 0.5
-date = 2018-05-21
+version = 0.6
+date = 2020-01-29
 name.english = Sanskrit
-name.babel.0 = sanskrit
+name.babel = sanskrit
 tag.bcp47 = sa
 tag.opentype = SAN
 script.name = Devanagari
diff --git a/locale/th/babel-th.ini b/locale/th/babel-th.ini
index 46cad4e..2fe1cab 100644
--- a/locale/th/babel-th.ini
+++ b/locale/th/babel-th.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.2
-date = 2018-09-07
+version = 1.3
+date = 2020-01-20
 name.local = ไทย
 name.english = Thai
 name.babel = thai
diff --git a/locale/yue/babel-yue.ini b/locale/yue/babel-yue.ini
index f2ff917..c7f14c1 100644
--- a/locale/yue/babel-yue.ini
+++ b/locale/yue/babel-yue.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.2
-date = 2019-05-05
+version = 1.3
+date = 2020-01-20
 name.local = 粵語
 name.english = Cantonese
 name.babel = cantonese
diff --git a/locale/zh/babel-zh-Hans-HK.ini b/locale/zh/babel-zh-Hans-HK.ini
index 077aa09..8d0578a 100644
--- a/locale/zh/babel-zh-Hans-HK.ini
+++ b/locale/zh/babel-zh-Hans-HK.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Simplified
diff --git a/locale/zh/babel-zh-Hans-MO.ini b/locale/zh/babel-zh-Hans-MO.ini
index 88d696a..1248353 100644
--- a/locale/zh/babel-zh-Hans-MO.ini
+++ b/locale/zh/babel-zh-Hans-MO.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Simplified
diff --git a/locale/zh/babel-zh-Hans-SG.ini b/locale/zh/babel-zh-Hans-SG.ini
index 4c00c90..59cddd2 100644
--- a/locale/zh/babel-zh-Hans-SG.ini
+++ b/locale/zh/babel-zh-Hans-SG.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Simplified
diff --git a/locale/zh/babel-zh-Hans.ini b/locale/zh/babel-zh-Hans.ini
index 69a7328..6a634e1 100644
--- a/locale/zh/babel-zh-Hans.ini
+++ b/locale/zh/babel-zh-Hans.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Simplified
diff --git a/locale/zh/babel-zh-Hant-HK.ini b/locale/zh/babel-zh-Hant-HK.ini
index 49da146..c2a9a3e 100644
--- a/locale/zh/babel-zh-Hant-HK.ini
+++ b/locale/zh/babel-zh-Hant-HK.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Traditional
diff --git a/locale/zh/babel-zh-Hant-MO.ini b/locale/zh/babel-zh-Hant-MO.ini
index 4cc3e67..1f6432c 100644
--- a/locale/zh/babel-zh-Hant-MO.ini
+++ b/locale/zh/babel-zh-Hant-MO.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Traditional
diff --git a/locale/zh/babel-zh-Hant.ini b/locale/zh/babel-zh-Hant.ini
index 21a663f..de89382 100644
--- a/locale/zh/babel-zh-Hant.ini
+++ b/locale/zh/babel-zh-Hant.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Traditional
diff --git a/locale/zh/babel-zh.ini b/locale/zh/babel-zh.ini
index 4d71f11..d8d4b23 100644
--- a/locale/zh/babel-zh.ini
+++ b/locale/zh/babel-zh.ini
@@ -11,8 +11,8 @@
 
 [identification]
 charset = utf8
-version = 1.3
-date = 2019-10-30
+version = 1.4
+date = 2020-01-20
 name.local = 中文
 name.english = Chinese
 name.opentype = Chinese Simplified
diff --git a/samples/harf-farsi-malayalam.pdf b/samples/harf-farsi-malayalam.pdf
index 4e3d113..e772bd3 100644
Binary files a/samples/harf-farsi-malayalam.pdf and b/samples/harf-farsi-malayalam.pdf differ
diff --git a/samples/harf-farsi-malayalam.tex b/samples/harf-farsi-malayalam.tex
index 3c04713..54f4671 100644
--- a/samples/harf-farsi-malayalam.tex
+++ b/samples/harf-farsi-malayalam.tex
@@ -8,8 +8,6 @@
 \babelfont{rm}[Renderer=Harfbuzz]{Amiri}
 \babelfont[malayalam]{rm}[Renderer=Harfbuzz]{FreeSerif}
 
-\babeladjust{ bidi.mirroring = off } % Harf does mirroring
-
 \begin{document}
 
 حرف‌باز (به انگلیسی: HarfBuzz) یک کتاب‌خانه توسعه نرم‌افزار برای
diff --git a/samples/lua-arabic.pdf b/samples/lua-arabic.pdf
index 729bd32..bd3e13e 100644
Binary files a/samples/lua-arabic.pdf and b/samples/lua-arabic.pdf differ
diff --git a/samples/lua-beamer.pdf b/samples/lua-beamer.pdf
index e1ebb87..1940c3e 100644
Binary files a/samples/lua-beamer.pdf and b/samples/lua-beamer.pdf differ
diff --git a/samples/lua-beamer.tex b/samples/lua-beamer.tex
index 352e3a6..0d6ed50 100644
--- a/samples/lua-beamer.tex
+++ b/samples/lua-beamer.tex
@@ -1,9 +1,9 @@
 \PassOptionsToPackage{unicode}{hyperref}
 \documentclass{beamer}
 
-\usepackage[nil,bidi=basic-r]{babel}
+\usepackage[nil,bidi=basic]{babel}
 
-\babelprovide[import=ar,main]{arabic}
+\babelprovide[import,main]{arabic}
 \babelfont{rm}{FreeSerif}
 \babelfont{sf}{FreeSerif}
 
diff --git a/samples/lua-bidibasic.pdf b/samples/lua-bidibasic.pdf
index 32caa3e..ac165fa 100644
Binary files a/samples/lua-bidibasic.pdf and b/samples/lua-bidibasic.pdf differ
diff --git a/samples/lua-secenum.pdf b/samples/lua-hebrew-secenum.pdf
similarity index 52%
rename from samples/lua-secenum.pdf
rename to samples/lua-hebrew-secenum.pdf
index 0faf38a..7628b43 100644
Binary files a/samples/lua-secenum.pdf and b/samples/lua-hebrew-secenum.pdf differ
diff --git a/samples/lua-secenum.tex b/samples/lua-hebrew-secenum.tex
similarity index 99%
rename from samples/lua-secenum.tex
rename to samples/lua-hebrew-secenum.tex
index 018ba7d..3174eec 100644
--- a/samples/lua-secenum.tex
+++ b/samples/lua-hebrew-secenum.tex
@@ -9,7 +9,7 @@
   layout=tabular % counters % not for hebrew
   ]{babel}
 
-\babelprovide[import=he,main]{hebrew}
+\babelprovide[import,main]{hebrew}
 
 \babelfont{rm}{Libertinus Serif}
 \babelfont{sf}[Scale=MatchLowercase]{FreeSans}
diff --git a/samples/lua-hebrew.pdf b/samples/lua-hebrew.pdf
index 9367b14..e2a389a 100644
Binary files a/samples/lua-hebrew.pdf and b/samples/lua-hebrew.pdf differ
diff --git a/samples/lua-polygreek.pdf b/samples/lua-polygreek.pdf
index 66c5693..131a412 100644
Binary files a/samples/lua-polygreek.pdf and b/samples/lua-polygreek.pdf differ
diff --git a/samples/lua-thai.pdf b/samples/lua-thai.pdf
index 949b3ed..d786575 100644
Binary files a/samples/lua-thai.pdf and b/samples/lua-thai.pdf differ
diff --git a/samples/lua-thai.tex b/samples/lua-thai.tex
index 5952c52..396f93a 100644
--- a/samples/lua-thai.tex
+++ b/samples/lua-thai.tex
@@ -39,7 +39,7 @@
 
 \bigskip
 
-Typeset with luatex, babel \csname bbl at version\endcsname, and 
+Typeset with lualatex, babel \csname bbl at version\endcsname, and 
 microtype.
 
 \end{document}
\ No newline at end of file
diff --git a/samples/lua-zh.pdf b/samples/lua-zh.pdf
index 253a6b2..6c4c6c1 100644
Binary files a/samples/lua-zh.pdf and b/samples/lua-zh.pdf differ
diff --git a/samples/luahb-udhr.pdf b/samples/luahb-udhr.pdf
index cb9c87b..3424834 100644
Binary files a/samples/luahb-udhr.pdf and b/samples/luahb-udhr.pdf differ
diff --git a/samples/luahb-udhr.tex b/samples/luahb-udhr.tex
index 535a041..ad90e9e 100644
--- a/samples/luahb-udhr.tex
+++ b/samples/luahb-udhr.tex
@@ -5,19 +5,9 @@
 
 \usepackage[bidi=default]{babel}
 
-% Also, the generic \babelprovide is enough, even if usually it's not
-% the recommended way to load languages:
-
-\babelprovide{arabic}
-\babelprovide{armenian}
-\babelprovide{bengali}
-\babelprovide{greek}
-\babelprovide{hebrew}
-\babelprovide{japanese}
-\babelprovide{korean}
-\babelprovide{romanian}
-\babelprovide{serbian}
-\babelprovide{vietnamese}
+% As of 3.39, no explicit loading with \babelprovide is required, as
+% languages are loaded on the fly with the most basic settings, which
+% here are enough.
 
 % With luahbtex we must add Renderer=Harfbuzz, which is just ignored by
 % other engines. FreeSerif does not contain CJK, so we use a couple of
@@ -35,8 +25,9 @@
 
 \begin{document}
 
-Requires \textsf{luaotfload} 3.11 and the development version of
-\textsf{babel} 3.37.
+Requires at least \textsf{luaotfload} 3.11 and \textsf{babel} 3.39.
+Typeset with \textsf{luahbtex}, the new default engine for
+\textsf{lualatex} in 2020.
 
 \startlocale{arabic}
 
diff --git a/samples/xe-bidi.pdf b/samples/xe-bidi.pdf
index 2b77ba6..57eff8c 100644
Binary files a/samples/xe-bidi.pdf and b/samples/xe-bidi.pdf differ
diff --git a/samples/xe-bidi.tex b/samples/xe-bidi.tex
index fe67f85..0fd36e6 100644
--- a/samples/xe-bidi.tex
+++ b/samples/xe-bidi.tex
@@ -1,6 +1,6 @@
 \documentclass{article}
 
-\usepackage[english, bidi=bidi]{babel}
+\usepackage[english, bidi=bidi-l]{babel}
 
 \babelprovide[import, maparabic]{arabic}
 
diff --git a/testfiles/tlb3438.tlg b/testfiles/tlb3438.tlg
index 9c96cc1..17f81a5 100644
--- a/testfiles/tlb3438.tlg
+++ b/testfiles/tlb3438.tlg
@@ -5,13 +5,10 @@ Author: Robin Fairbairns <[e-mail hidden]>
 Main Class: article
 Package: babel
     Options: english
-Package babel Warning: Unknown language `FRENCH'. Either you have
-(babel)                misspelled its name, it has not been installed,
-(babel)                or you requested it in a previous run. Fix its name,
-(babel)                install it or just rerun the file, respectively. In
-(babel)                some cases, you may need to remove the aux file.
-(babel)                I'll proceed, but expect wrong results.
-(babel)                Reported on input line ....
+(../babel-french.tex
+Package babel Info: Importing basic data for french
+(babel)             from babel-fr.ini. Reported on input line ....
+)
 > \box...=
 \hbox(9.47221+0.0)x36.38898
 .\OT1/cmr/m/n/10 H
diff --git a/testfiles/tlb3805.tlg b/testfiles/tlb3805.tlg
index a46f5a5..fd203b1 100644
--- a/testfiles/tlb3805.tlg
+++ b/testfiles/tlb3805.tlg
@@ -116,7 +116,7 @@ Package atveryend Info: Executing hook `AtVeryEndDocument' on input line ....
   test2e.tex
  article.cls    ....-..-.. v... Standard LaTeX document class
   size10.clo    ....-..-.. v... Standard LaTeX file (size option)
-   babel.sty    ....-..-.. 3.35 The Babel package
+   babel.sty    ....-..-.. 3.38.1903 The Babel package
 american.ldf    ....-..-.. v... English support from the babel system
  nameref.sty    ....-..-.. v... Cross-referencing by name of section
 refcount.sty    ....-..-.. v... Data extraction from label references (HO)
@@ -127,34 +127,30 @@ kvoptions.sty    ....-..-.. v... Key value format for package options (HO)
   keyval.sty    ....-..-.. v... key=value parser (DPC)
 kvsetkeys.sty    ....-..-.. v... Key value parser (HO)
 etexcmds.sty    ....-..-.. v... Avoid name clashes with e-TeX commands (HO)
-ifluatex.sty    ....-..-.. v... Provides the ifluatex switch (HO)
+ifluatex.sty    ....-..-.. v... ifluatex legacy package. Use iftex instead.
+   iftex.sty    ....-..-.. v... TeX engine tests
 varioref.sty    ....-..-.. v... package for extended references (FMi)
 hyperref.sty    ....-..-.. v... Hypertext links for LaTeX
-hobsub-hyperref.sty    ....-..-.. v... Bundle oberdiek, subset hyperref (HO)
-hobsub-generic.sty    ....-..-.. v... Bundle oberdiek, subset generic (HO)
-  hobsub.sty    ....-..-.. v... Construct package bundles (HO)
-  ifvtex.sty    ....-..-.. v... Detect VTeX and its facilities (HO)
- intcalc.sty    ....-..-.. v... Expandable calculations with integers (HO)
-   ifpdf.sty    ....-..-.. v... Provides the ifpdf switch
-kvdefinekeys.sty    ....-..-.. v... Define keys (HO)
 pdftexcmds.sty    ....-..-.. v... Utility functions of pdfTeX for LuaTeX (HO)
+kvdefinekeys.sty    ....-..-.. v... Define keys (HO)
 pdfescape.sty    ....-..-.. v... Implements pdfTeX's escape features (HO)
-bigintcalc.sty    ....-..-.. v... Expandable calculations on big integers (HO)
-  bitset.sty    ....-..-.. v... Handle bit-vector datatype (HO)
-uniquecounter.sty    ....-..-.. v... Provide unlimited unique counter (HO)
-letltxmacro.sty    ....-..-.. v... Let assignment for LaTeX macros (HO)
- hopatch.sty    ....-..-.. v... Wrapper for package hooks (HO)
-xcolor-patch.sty    ....-..-.. xcolor patch
-atveryend.sty    ....-..-.. v... Hooks at the very end of document (HO)
-atbegshi.sty    ....-..-.. v... At begin shipout hook (HO)
  hycolor.sty    ....-..-.. v... Color options for hyperref/bookmark (HO)
- ifxetex.sty    ....-..-.. v... Provides ifxetex conditional
+xcolor-patch.sty    ....-..-.. xcolor patch
+ hopatch.sty    ....-..-.. v... Wrapper for package hooks (HO)
+letltxmacro.sty    ....-..-.. v... Let assignment for LaTeX macros (HO)
  auxhook.sty    ....-..-.. v... Hooks for auxiliary files (HO)
   pd1enc.def    ....-..-.. v... Hyperref: PDFDocEncoding definition (HO)
+ intcalc.sty    ....-..-.. v... Expandable calculations with integers (HO)
 hyperref.cfg    ....-..-.. v... hyperref configuration of TeXLive
      url.sty    ....-..-..  ver 3.4  Verb mode for urls, etc.
+  bitset.sty    ....-..-.. v... Handle bit-vector datatype (HO)
+bigintcalc.sty    ....-..-.. v... Expandable calculations on big integers (HO)
+atbegshi.sty    ....-..-.. v... At begin shipout hook (HO)
+   ifpdf.sty    ....-..-.. v... ifpdf legacy package. Use iftex instead.
  hpdftex.def    ....-..-.. v... Hyperref driver for pdfTeX
+atveryend.sty    ....-..-.. v... Hooks at the very end of document (HO)
 rerunfilecheck.sty    ....-..-.. v... Rerun checks for auxiliary files (HO)
+uniquecounter.sty    ....-..-.. v... Provide unlimited unique counter (HO)
  tlb3805.out
  tlb3805.out
  ***********





More information about the latex3-commits mailing list.