[latex3-commits] [latex3/babel] main: Close #242. Updated list of locales (and cleaning up: farsi, latin, vietnam). (d01bca5)

github at latex-project.org github at latex-project.org
Sat May 27 18:13:56 CEST 2023


Repository : https://github.com/latex3/babel
On branch  : main
Link       : https://github.com/latex3/babel/commit/d01bca5a8bc876a2b9c03337751f2fac09808ccf

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

commit d01bca5a8bc876a2b9c03337751f2fac09808ccf
Author: Javier <email at localhost>
Date:   Sat May 27 18:13:56 2023 +0200

    Close #242. Updated list of locales (and cleaning up: farsi, latin, vietnam).


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

d01bca5a8bc876a2b9c03337751f2fac09808ccf
 README.md                               |   3 +-
 babel-code.pdf                          | Bin 592849 -> 627189 bytes
 babel.dtx                               | 373 ++++++++++++++++++++++++++------
 babel.ins                               |   2 +-
 babel.pdf                               | Bin 399434 -> 403169 bytes
 bbcompat.dtx                            |   2 +-
 locale/fa/babel-farsi.tex               |  12 +
 locale/la/babel-classicallatin.tex      |  25 +++
 locale/la/babel-ecclesiasticallatin.tex |  17 ++
 locale/la/babel-la-x-classic.ini        |   6 +-
 locale/la/babel-la-x-ecclesia.ini       |   6 +-
 locale/vi/babel-vietnam.tex             |  12 -
 12 files changed, 366 insertions(+), 92 deletions(-)

diff --git a/README.md b/README.md
index e01dfe0..9129dec 100644
--- a/README.md
+++ b/README.md
@@ -1,4 +1,4 @@
-## Babel 3.89.13335
+## Babel 3.89.14772
 
 *Development.*
 
@@ -50,6 +50,7 @@ respective authors.
 ```
 3.90  (dev)
       * Main language selected at begindocument/before.
+      * Option to limit the number of inserted tatweel.
 
 3.89  2023-05-11
       * Deprecating \SetCase, \aliasshorthands, and 'strings' package
diff --git a/babel-code.pdf b/babel-code.pdf
index cacec93..69a98cd 100644
Binary files a/babel-code.pdf and b/babel-code.pdf differ
diff --git a/babel.dtx b/babel.dtx
index 2f75ce6..b84ac70 100644
--- a/babel.dtx
+++ b/babel.dtx
@@ -32,7 +32,7 @@
 %
 % \iffalse
 %<*filedriver>
-\ProvidesFile{babel.dtx}[2023/05/13 v3.89.13335 The Babel package]
+\ProvidesFile{babel.dtx}[2023/05/27 v3.89.14772 The Babel package]
 \documentclass{ltxdoc}
 \GetFileInfo{babel.dtx}
 \usepackage{fontspec}
@@ -48,11 +48,7 @@
      ItalicFont = NotoSans-Italic.ttf,
      BoldItalicFont = NotoSans-BoldItalic.ttf]
   {NotoSans-Regular.ttf}
-\setmonofont[
-  Scale=.88, FakeStretch=.95,
-  BoldFont = NotoMono-Regular.ttf,
-  ItalicFont = NotoMono-Regular.ttf,
-  BoldItalicFont = NotoMono-Regular.ttf]{NotoMono-Regular.ttf}
+\setmonofont[Scale=.86, FakeStretch=.97]{DejaVu Sans Mono}
 \raggedright
 \addtolength{\textwidth}{25pt}
 \addtolength{\textheight}{3.5cm}
@@ -110,6 +106,7 @@
 \newtheorem{note}{Note}
 \newtheorem{example}{Example}
 \newtheorem{troubleshooting}{Troubleshooting}
+\newtheorem{more}{More}
 \let\bblxv\verbatim
 \let\bblexv\endverbatim
 \newcommand\setengine{\def\engine}
@@ -588,6 +585,14 @@ beforehand (for example, titles in a bibliography). At this regard, it
 is worth remembering that |\babelfont| does \textit{not} load any font
 until required, so that it can be used just in case.
 
+\New{3.84} With \pdftex, when a language is loaded on the fly
+(actually, with |\babelprovide|, because this is the macro used
+internally to load it) selectors now set the font encoding based on the
+list provided when loading |fontenc|. Not all scripts have an
+associated encoding, so this feature works only with Latin, Cyrillic,
+Greek, Arabic, Hebrew, Cherokee, Armenian, and Georgian, provided a
+suitable font is found.
+
 \begin{example}
   A trivial document with the default font in English and Spanish, and
   FreeSerif in Russian is:
@@ -615,14 +620,6 @@ _\foreignlanguage{spanish}{Español}_.
   for |lubakatanga|). See section \ref{bcp47} for further details.
 \end{note}
 
-\New{3.84} With \pdftex, when a language is loaded on the fly
-(actually, with |\babelprovide|, because this is the macro used
-internally to load it) selectors now set the font encoding based on the
-list provided when loading |fontenc|. Not all scripts have an
-associated encoding, so this feature works only with Latin, Cyrillic,
-Greek, Arabic, Hebrew, Cherokee, Armenian, and Georgian, provided a
-suitable font is found.
-
 \subsection{Modifiers}
 
 \New{3.9c} The basic behavior of some languages can be modified when
@@ -1222,6 +1219,8 @@ languages.
 footlines are not touched (only marks), and if they contain
 language-dependent macros (which is not usual) there may be unexpected
 results. With this option you may set the language in heads and foots.
+An alternative is to set the language explicitly when heads and foots
+are redefined.
 
 \Describe{noconfigs}{} Global and language default config files are
 not loaded, so you can make sure your document is not spoilt by an
@@ -1363,8 +1362,6 @@ reason, does not work as expected.
 \begin{example}
   Although Georgian has its own \texttt{ldf} file, here is how to
   declare this language with an |ini| file in Unicode engines.
-\begingroup
-\setmonofont[Scale=.87,Script=Georgian]{DejaVu Sans Mono}
 \setengine{luatex/xetex}
 \begin{verbatim}
 \documentclass{book}
@@ -1384,9 +1381,13 @@ _\babelprovide[import, main]{georgian}_
 
 \end{document}
 \end{verbatim}
-\endgroup
 \end{example}
 
+\begin{more}
+  There is an example of how to use a template |ini| file
+  \href{https://github.com/latex3/babel/issues/176#issuecomment-1080846575}{here}, for Phoenician.
+\end{more}
+
 \New{3.49} Alternatively, you can tell babel to load all or some
 languages passed as options with |\babelprovide| and not from the |ldf|
 file in a few few typical cases. Thus, |provide=*| means ‘load the main
@@ -1456,13 +1457,10 @@ need to set explicitly the script to either |deva| or |dev2|, eg:
   wrongly with the default renderer. The comment about Indic scripts
   and \textsf{lualatex} also applies here. Some quick patterns can
   help, with something similar to:
-\begingroup
-\setmonofont[Script=Lao,Scale=MatchLowercase]{DejaVu Sans Mono}
 \begin{verbatim}
 \babelprovide[import, hyphenrules=+]{lao}
 \babelpatterns[lao]{1ດ 1ມ 1ອ 1ງ 1ກ 1າ} % Random
 \end{verbatim}
-\endgroup
 \item[East Asia scripts] Settings for either Simplified of Traditional
   should work out of the box, with basic line breaking with any
   renderer. Although for a few words and shorts texts the |ini| files
@@ -1510,6 +1508,8 @@ captions):
 \def\hascapl{\textsuperscript{l}}
 
 \begin{multicols}{2}
+\tag{aa} Afar
+\tag{ab} Abkhazian
 \tag{af} Afrikaans\hascapu\hascapl
 \tag{agq} Aghem
 \tag{ak} Akan
@@ -1531,11 +1531,14 @@ captions):
 \tag{az-Cyrl} Azerbaijani
 \tag{az-Latn} Azerbaijani
 \tag{az} Azerbaijani\hascapu\hascapl
+\tag{bal} Baluchi
 \tag{bas} Basaa
 \tag{be} Belarusian\hascapu\hascapl
 \tag{bem} Bemba
 \tag{bez} Bena
 \tag{bg} Bulgarian\hascapu\hascapl
+\tag{bgc} Haryanvi
+\tag{bho} Bhojpuri
 \tag{bm} Bambara
 \tag{bn} Bangla\hascapu
 \tag{bo} Tibetan\hascapu
@@ -1544,13 +1547,16 @@ captions):
 \tag{bs-Cyrl} Bosnian
 \tag{bs-Latn} Bosnian\hascapu\hascapl
 \tag{bs} Bosnian\hascapu\hascapl
+\tag{byn} Blin
 \tag{ca} Catalan\hascapu\hascapl
+\tag{cch} Atsam
 \tag{ce} Chechen
 \tag{cgg} Chiga
 \tag{chr} Cherokee
 \tag{ckb-Arab} Central Kurdish\hascapu
 \tag{ckb-Latn} Central Kurdish\hascapu
 \tag{ckb} Central Kurdish\hascapu
+\tag{co} Corsican
 \tag{cop} Coptic
 \tag{cs} Czech\hascapu\hascapl
 \tag{cu-Cyrs} Church Slavic\hascapu
@@ -1598,12 +1604,16 @@ captions):
 \tag{fr-CA} Canadian French\hascapu\hascapl
 \tag{fr-CH} Swiss French\hascapu\hascapl
 \tag{fr-LU} French\hascapu\hascapl
+\tag{fr-x-acadian} Acadian\hascapu\hascapl
 \tag{fr} French\hascapu\hascapl
 \tag{fur} Friulian\hascapu\hascapl
 \tag{fy} Western Frisian
 \tag{ga} Irish\hascapu\hascapl
+\tag{gaa} Ga
 \tag{gd} Scottish Gaelic\hascapu\hascapl
+\tag{gez} Geez
 \tag{gl} Galician\hascapu\hascapl
+\tag{gn} Guarani
 \tag{grc} Ancient Greek\hascapu\hascapl
 \tag{gsw} Swiss German
 \tag{gu} Gujarati
@@ -1625,12 +1635,15 @@ captions):
 \tag{ii} Sichuan Yi
 \tag{is} Icelandic\hascapu\hascapl
 \tag{it} Italian\hascapu\hascapl
+\tag{iu} Inuktitut
 \tag{ja} Japanese\hascapu
 \tag{jgo} Ngomba
 \tag{jmc} Machame
 \tag{ka} Georgian\hascapu
 \tag{kab} Kabyle
+\tag{kaj} Jju
 \tag{kam} Kamba
+\tag{kcg} Tyap
 \tag{kde} Makonde
 \tag{kea} Kabuverdianu
 \tag{kgp} Kaingang
@@ -1654,13 +1667,14 @@ captions):
 \tag{ksh} Colognian
 \tag{kw} Cornish
 \tag{ky} Kyrgyz
-\tag{la-x-classic} Classic Latin\hascapu\hascapl
-\tag{la-x-ecclesia} Ecclesiastic Latin\hascapu\hascapl
+\tag{la-x-classic} Classical Latin\hascapu\hascapl
+\tag{la-x-ecclesia} Ecclesiastical Latin\hascapu\hascapl
 \tag{la-x-medieval} Medieval Latin\hascapu\hascapl
 \tag{la} Latin\hascapu\hascapl
 \tag{lag} Langi
 \tag{lb} Luxembourgish\hascapu\hascapl
 \tag{lg} Ganda
+\tag{lij} Ligurian
 \tag{lkt} Lakota
 \tag{ln} Lingala
 \tag{lo} Lao\hascapu
@@ -1685,7 +1699,9 @@ captions):
 \tag{ms} Malay\hascapu\hascapl
 \tag{mt} Maltese
 \tag{mua} Mundang
+\tag{mus} Muscogee
 \tag{my} Burmese
+\tag{myv} Erzya
 \tag{mzn} Mazanderani
 \tag{naq} Nama
 \tag{nb} Norwegian Bokmål\hascapu\hascapl
@@ -1696,7 +1712,11 @@ captions):
 \tag{nn} Norwegian Nynorsk\hascapu\hascapl
 \tag{nnh} Ngiemboon
 \tag{no} Norwegian\hascapu\hascapl
+\tag{nqo} N’Ko
+\tag{nr} South Ndebele
+\tag{nso} Northern Sotho
 \tag{nus} Nuer
+\tag{ny} Nyanja
 \tag{nyn} Nyankole
 \tag{oc} Occitan\hascapu\hascapl
 \tag{om} Oromo
@@ -1705,13 +1725,16 @@ captions):
 \tag{pa-Arab} Punjabi
 \tag{pa-Guru} Punjabi\hascapu
 \tag{pa} Punjabi\hascapu
+\tag{pap} Papiamento
 \tag{pl} Polish\hascapu\hascapl
 \tag{pms} Piedmontese\hascapu\hascapl
+\tag{prg} Prussian
 \tag{ps} Pashto
 \tag{pt-BR} Brazilian Portuguese\hascapu\hascapl
 \tag{pt-PT} European Portuguese\hascapu\hascapl
 \tag{pt} Portuguese\hascapu\hascapl
 \tag{qu} Quechua
+\tag{raj} Rajasthani
 \tag{rm} Romansh\hascapu\hascapl
 \tag{rn} Rundi
 \tag{ro-MD} Moldavian\hascapu\hascapl
@@ -1731,6 +1754,7 @@ captions):
 \tag{saq} Samburu
 \tag{sbp} Sangu
 \tag{sc} Sardinian
+\tag{scn} Sicilian
 \tag{se} Northern Sami\hascapu\hascapl
 \tag{seh} Sena
 \tag{ses} Koyraboro Senni
@@ -1749,22 +1773,33 @@ captions):
 \tag{sr-Cyrl-ME} Serbian\hascapu\hascapl
 \tag{sr-Cyrl-XK} Serbian\hascapu\hascapl
 \tag{sr-Cyrl} Serbian\hascapu\hascapl
+\tag{sr-ijekavsk} Serbian\hascapu\hascapl
 \tag{sr-Latn-BA} Serbian\hascapu\hascapl
+\tag{sr-Latn-ijekavsk} Serbian\hascapu\hascapl
 \tag{sr-Latn-ME} Serbian\hascapu\hascapl
 \tag{sr-Latn-XK} Serbian\hascapu\hascapl
 \tag{sr-Latn} Serbian\hascapu\hascapl
 \tag{sr} Serbian\hascapu\hascapl
+\tag{ss} Swati
+\tag{ssy} Saho
+\tag{st} Southern Sotho
 \tag{sv} Swedish\hascapu\hascapl
 \tag{sw} Swahili
 \tag{syr} Syriac
+\tag{szl} Silesian
 \tag{ta} Tamil\hascapu
 \tag{te} Telugu\hascapu
 \tag{teo} Teso
 \tag{th} Thai\hascapu\hascapl
 \tag{ti} Tigrinya
+\tag{tig} Tigre
 \tag{tk} Turkmen\hascapu\hascapl
+\tag{tn} Tswana
 \tag{to} Tongan
+\tag{tpi} Tok Pisin
 \tag{tr} Turkish\hascapu\hascapl
+\tag{trv} Taroko
+\tag{ts} Tsonga
 \tag{twq} Tasawaq
 \tag{tzm} Central Atlas Tamazight
 \tag{ug} Uyghur\hascapu
@@ -1777,9 +1812,12 @@ captions):
 \tag{vai-Latn} Vai
 \tag{vai-Vaii} Vai
 \tag{vai} Vai
+\tag{ve} Venda
 \tag{vi} Vietnamese\hascapu\hascapl
+\tag{vo} Volapük
 \tag{vun} Vunjo
 \tag{wae} Walser
+\tag{wal} Wolaytta
 \tag{xog} Soga
 \tag{yav} Yangben
 \tag{yi} Yiddish
@@ -1796,7 +1834,6 @@ captions):
 \tag{zh-Hant} Chinese\hascapu
 \tag{zh} Chinese\hascapu
 \tag{zu} Zulu
-
 \end{multicols}
 \endgroup
 \hrule
@@ -1811,93 +1848,129 @@ by |\babelprovide| with a valueless |import|.
 
 \begingroup
 \bigskip\hrule\nobreak
-
+\small
 \let\\\par
 
-\begin{multicols}{2}
-afrikaans\\
+\begin{multicols}{3}
+abkhazian\\
+acadian\\
+afar\\
+afrikaans\\
 aghem\\
 akan\\
 albanian\\
 american\\
+americanenglish\\
 amharic\\
 ancientgreek\\
 arabic\\
 arabic-algeria\\
-arabic-DZ\\
+arabic-dz\\
+arabic-eg\\
+arabic-egypt\\
+arabic-iq\\
+arabic-iraq\\
+arabic-jo\\
+arabic-jordan\\
+arabic-lb\\
+arabic-lebanon\\
+arabic-ma\\
 arabic-morocco\\
-arabic-MA\\
+arabic-palestinianterritories\\
+arabic-ps\\
+arabic-sa\\
+arabic-saudiarabia\\
+arabic-sy\\
 arabic-syria\\
-arabic-SY\\
+arabic-tn\\
+arabic-tunisia\\
 armenian\\
 assamese\\
 asturian\\
 asu\\
+atsam\\
 australian\\
+australianenglish\\
 austrian\\
+azerbaijani\\
 azerbaijani-cyrillic\\
 azerbaijani-cyrl\\
 azerbaijani-latin\\
 azerbaijani-latn\\
-azerbaijani\\
 bafia\\
+baluchi\\
 bambara\\
+bangla\\
 basaa\\
 basque\\
 belarusian\\
 bemba\\
 bena\\
-bangla\\
+bengali\\
+bhojpuri\\
+blin\\
 bodo\\
+bosnian\\
 bosnian-cyrillic\\
 bosnian-cyrl\\
 bosnian-latin\\
 bosnian-latn\\
-bosnian\\
 brazilian\\
+brazilianportuguese\\
 breton\\
 british\\
+britishenglish\\
 bulgarian\\
 burmese\\
 canadian\\
+canadianenglish\\
 cantonese\\
 catalan\\
 centralatlastamazight\\
 centralkurdish\\
+centralkurdish-latin\\
+centralkurdish-latn\\
 chechen\\
 cherokee\\
 chiga\\
+chinese\\
+chinese-hans\\
 chinese-hans-hk\\
 chinese-hans-mo\\
 chinese-hans-sg\\
-chinese-hans\\
+chinese-hant\\
 chinese-hant-hk\\
 chinese-hant-mo\\
-chinese-hant\\
+chinese-simplified\\
 chinese-simplified-hongkongsarchina\\
 chinese-simplified-macausarchina\\
 chinese-simplified-singapore\\
-chinese-simplified\\
+chinese-traditional\\
 chinese-traditional-hongkongsarchina\\
 chinese-traditional-macausarchina\\
-chinese-traditional\\
-chinese\\
 churchslavic\\
 churchslavic-cyrs\\
+churchslavic-glag\\
+churchslavic-glagolitic\\
 churchslavic-oldcyrillic\footnote{The name in the CLDR
 is Old Church Slavonic Cyrillic, but it has been shortened
 for practical reasons.}\\
 churchsslavic-glag\\
-churchsslavic-glagolitic\\
+churchslavonic\\
+classicallatin\\
 colognian\\
+coptic\\
 cornish\\
+corsican\\
 croatian\\
 czech\\
 danish\\
 duala\\
 dutch\\
 dzongkha\\
+ecclesiasticallatin\\
 embu\\
+english\\
 english-au\\
 english-australia\\
 english-ca\\
@@ -1908,41 +1981,52 @@ english-nz\\
 english-unitedkingdom\\
 english-unitedstates\\
 english-us\\
-english\\
+erzya\\
 esperanto\\
 estonian\\
+europeanportuguese\\
 ewe\\
 ewondo\\
 faroese\\
+farsi\\
 filipino\\
 finnish\\
+french\\
 french-be\\
 french-belgium\\
 french-ca\\
 french-canada\\
+french-canadianfrench\\
 french-ch\\
 french-lu\\
 french-luxembourg\\
+french-swissfrench\\
 french-switzerland\\
-french\\
 friulian\\
 fulah\\
+ga\\
 galician\\
 ganda\\
+geez\\
 georgian\\
+german\\
 german-at\\
 german-austria\\
+german-austria-traditional\\
 german-ch\\
 german-switzerland\\
-german\\
+german-switzerland-traditional\\
+german-traditional\\
 greek\\
+guarani\\
 gujarati\\
 gusii\\
+haryanvi\\
+hausa\\
 hausa-gh\\
 hausa-ghana\\
 hausa-ne\\
 hausa-niger\\
-hausa\\
 hawaiian\\
 hebrew\\
 hindi\\
@@ -1952,12 +2036,15 @@ igbo\\
 inarisami\\
 indonesian\\
 interlingua\\
+inuktitut\\
 irish\\
 italian\\
 japanese\\
+jju\\
 jolafonyi\\
 kabuverdianu\\
 kabyle\\
+kaingang\\
 kako\\
 kalaallisut\\
 kalenjin\\
@@ -1970,18 +2057,22 @@ kikuyu\\
 kinyarwanda\\
 konkani\\
 korean\\
+korean-han\\
+korean-hani\\
 koyraborosenni\\
 koyrachiini\\
+kurmanji\\
 kwasio\\
 kyrgyz\\
 lakota\\
 langi\\
 lao\\
+latin\\
 latvian\\
+ligurian\\
 lingala\\
 lithuanian\\
 lowersorbian\\
-lsorbian\\
 lubakatanga\\
 luo\\
 luxembourgish\\
@@ -1991,69 +2082,92 @@ machame\\
 makhuwameetto\\
 makonde\\
 malagasy\\
+malay\\
 malay-bn\\
 malay-brunei\\
 malay-sg\\
 malay-singapore\\
-malay\\
 malayalam\\
 maltese\\
 manx\\
 marathi\\
 masai\\
 mazanderani\\
+medievallatin\\
 meru\\
 meta\\
 mexican\\
+mexicanspanish\\
+moldavian\\
 mongolian\\
+monotonicgreek\\
 morisyen\\
 mundang\\
+muscogee\\
 nama\\
+naustrian\\
 nepali\\
 newzealand\\
+ngerman\\
 ngiemboon\\
 ngomba\\
+nheengatu\\
+nko\\
 norsk\\
+northernkurdish\\
+northernkurdish-arab\\
+northernkurdish-arabic\\
 northernluri\\
 northernsami\\
+northernsotho\\
 northndebele\\
+norwegian\\
 norwegianbokmal\\
 norwegiannynorsk\\
 nswissgerman\\
 nuer\\
+nyanja\\
 nyankole\\
 nynorsk\\
 occitan\\
+odia\\
 oriya\\
 oromo\\
 ossetic\\
+papiamento\\
 pashto\\
 persian\\
 piedmontese\\
 polish\\
 polytonicgreek\\
+portuguese\\
 portuguese-br\\
 portuguese-brazil\\
 portuguese-portugal\\
 portuguese-pt\\
-portuguese\\
+prussian\\
+punjabi\\
 punjabi-arab\\
 punjabi-arabic\\
 punjabi-gurmukhi\\
 punjabi-guru\\
-punjabi\\
 quechua\\
+rajasthani\\
 romanian\\
+romanian-md\\
+romanian-moldova\\
 romansh\\
 rombo\\
 rundi\\
 russian\\
 rwa\\
+saho\\
 sakha\\
 samburu\\
-samin\\
 sango\\
 sangu\\
+sanskrit\\
+sanskrit-bangla\\
 sanskrit-beng\\
 sanskrit-bengali\\
 sanskrit-deva\\
@@ -2066,83 +2180,101 @@ sanskrit-malayalam\\
 sanskrit-mlym\\
 sanskrit-telu\\
 sanskrit-telugu\\
-sanskrit\\
+sardinian\\
 scottishgaelic\\
 sena\\
+serbian\\
+serbian-cyrillic\\
 serbian-cyrillic-bosniaherzegovina\\
 serbian-cyrillic-kosovo\\
 serbian-cyrillic-montenegro\\
-serbian-cyrillic\\
+serbian-cyrl\\
 serbian-cyrl-ba\\
 serbian-cyrl-me\\
 serbian-cyrl-xk\\
-serbian-cyrl\\
+serbian-ijekavsk\\
+serbian-latin\\
 serbian-latin-bosniaherzegovina\\
 serbian-latin-kosovo\\
 serbian-latin-montenegro\\
-serbian-latin\\
+serbian-latn\\
 serbian-latn-ba\\
+serbian-latn-ijekavsk\\
 serbian-latn-me\\
 serbian-latn-xk\\
-serbian-latn\\
-serbian\\
+serbianc\\
 shambala\\
 shona\\
 sichuanyi\\
+sicilian\\
+silesian\\
 sinhala\\
 slovak\\
 slovene\\
 slovenian\\
 soga\\
 somali\\
+sorani\\
+southernsotho\\
+southndebele\\
+spanish\\
 spanish-mexico\\
 spanish-mx\\
-spanish\\
 standardmoroccantamazight\\
 swahili\\
+swati\\
 swedish\\
 swissgerman\\
+swisshighgerman\\
+syriac\\
+tachelhit\\
 tachelhit-latin\\
 tachelhit-latn\\
 tachelhit-tfng\\
 tachelhit-tifinagh\\
-tachelhit\\
 taita\\
 tamil\\
+taroko\\
 tasawaq\\
 telugu\\
 teso\\
 thai\\
 tibetan\\
+tigre\\
 tigrinya\\
+tokpisin\\
 tongan\\
+tsonga\\
+tswana\\
 turkish\\
 turkmen\\
+tyap\\
 ukenglish\\
 ukrainian\\
 uppersorbian\\
 urdu\\
 usenglish\\
-usorbian\\
 uyghur\\
+uzbek\\
 uzbek-arab\\
 uzbek-arabic\\
 uzbek-cyrillic\\
 uzbek-cyrl\\
 uzbek-latin\\
 uzbek-latn\\
-uzbek\\
+vai\\
 vai-latin\\
 vai-latn\\
 vai-vai\\
 vai-vaii\\
-vai\\
-vietnam\\
+venda\\
 vietnamese\\
+volapuk\\
 vunjo\\
 walser\\
 welsh\\
 westernfrisian\\
+wolaytta\\
 yangben\\
 yiddish\\
 yoruba\\
@@ -2226,7 +2358,7 @@ you may add further key/value pairs if necessary.
 % will be disappointed :-). The following example is built ad hoc to
 % emulate the final result to avoid dependencies, and therefore it's
 % not "real" code.
-\setmonofont[Scale=.87,Script=Hebrew]{DejaVu Sans Mono} \catcode`@=13
+\catcode`@=13
 \def@#1{\ifcase#1\relax \egroup \or \bgroup\textdir TLT \else
 \bgroup\textdir TRT \fontspec[Scale=.87,Script=Hebrew]{Liberation
 Mono} \fi}
@@ -2490,6 +2622,20 @@ languages loaded on the fly are not yet available in the preamble.
 \end{verbatim}
 \end{example}
 
+\begin{example}
+  Sometimes treating the IPA as a language makes sense:
+\begin{verbatim}
+\documentclass{article}
+\usepackage[english]{babel}
+\babelprovide{ipa}
+\babelfont[ipa]{rm}{DejaVu Sans}
+\begin{document}
+Blah \foreignlanguage{ipa}{ɔːlˈðəʊ} Blah.
+\end{document}
+\end{verbatim}
+  Then you can define shorthands, transforms (if \luatex), and so on. 
+\end{example}
+
 \begin{example}
   Locales with names based on BCP 47 codes can be created with
   something like:
@@ -2991,7 +3137,7 @@ expandable, and the available fields are:
   extension whose singleton is \m{s} (currently the recognized
   singletons are |x|, |t| and |u|). The internal syntax can be somewhat
   complex, and this feature is still somewhat tentative. An example is
-  \textsf{classiclatin} which sets |extension.x.tag.bcp47| to |classic|.
+  \textsf{classicallatin} which sets |extension.x.tag.bcp47| to |classic|.
   \New{3.75}
 \end{description}
 
@@ -3676,7 +3822,8 @@ See particularly |lua-bidibasic.tex| and |lua-secenum.tex|.
 % will be disappointed :-). The following example is built ad hoc to
 % emulate the final result to avoid dependencies, and therefore it's
 % not "real" code.
-\setmonofont[Scale=.87,Script=Arabic]{DejaVu Sans Mono} \catcode`@=13
+\setmonofont[Scale=.86, FakeStretch=.97,Script=Arabic]{DejaVu Sans Mono}
+\catcode`@=13
 \def@#1{\ifcase#1\relax \egroup \or \bgroup\textdir TLT \else
 \bgroup\textdir TRT \pardir TRT \fi}
 \begin{verbatim}
@@ -3712,7 +3859,8 @@ _\babelprovide[import, main]{arabic}_
   % will be disappointed :-). The following example is built ad hoc to
   % emulate the final result to avoid dependencies, and therefore it's
   % not "real" code.
-  \setmonofont[Scale=.87,Script=Arabic]{DejaVu Sans Mono} \catcode`@=13
+  \setmonofont[Scale=.86, FakeStretch=.97,Script=Arabic]{DejaVu Sans Mono}
+  \catcode`@=13
   \def@#1{\ifcase#1\relax \egroup \or \bgroup\textdir TRT \else
   \bgroup\textdir TLT \pardir TLT \fi}
 \begin{verbatim}
@@ -4101,7 +4249,7 @@ and |.ldf| file are listed, together with the names of the option which
 you can load \babel\ with for each language. Note this list is open and
 the current options may be different. It does not include |ini| files
 (see below). Except in a few cases (eg, |ngerman|, |serbianc|,
-|acadien|) names are those of the Unicode CLDR (or based on them).
+|acadian|) names are those of the Unicode CLDR (or based on them). 
 
 \begin{description}
 \itemsep=-\parskip
@@ -5137,7 +5285,6 @@ Its natural place of use is in hooks or in |\extras|\m{language}.
 
 \fi
 
-
 \section{Acknowledgements}
 
 I would like to thank all who volunteered as $\beta$-testers for their
@@ -5269,8 +5416,8 @@ wouldn’t exist.
 % \section{Tools}
 %
 %    \begin{macrocode}
-%<<version=3.89.13335>>
-%<<date=2023/05/13>>
+%<<version=3.89.14772>>
+%<<date=2023/05/27>>
 %    \end{macrocode}
 %
 % \textbf{Do not use the following macros in \texttt{ldf} files. They
@@ -6026,8 +6173,8 @@ wouldn’t exist.
 %    \end{macrocode}
 %
 % With |headfoot=lang| we can set the language used in heads/foots.
-% For example, in babel/3796 just adds |headfoot=english|.  It
-% misuses \cs{@resetactivechars} but seems to work.
+% For example, in babel/3796 just add |headfoot=english|.  It
+% misuses \cs{@resetactivechars}, but seems to work.
 %
 %    \begin{macrocode}
 \ifx\bbl at opt@headfoot\@nnil\else
@@ -10605,6 +10752,8 @@ wouldn’t exist.
   \bbl at exportkey{lbcp}{identification.language.tag.bcp47}{}%
   % Somewhat hackish. TODO
   \bbl at exportkey{casing}{identification.language.tag.bcp47}{}%
+  \bbl at exp{\gdef\<bbl at casing@\languagename>%
+    {\<bbl at lbcp@\languagename>}}%
   \bbl at exportkey{lotf}{identification.tag.opentype}{dflt}%
   \bbl at exportkey{esname}{identification.script.name}{}%
   \bbl at exp{\\\bbl at exportkey{sname}{identification.script.name.opentype}%
@@ -14228,8 +14377,13 @@ end
 \gdef\bbl at arabicjust{%
   \let\bbl at arabicjust\relax
   \newattribute\bblar at kashida
-  \directlua{ Babel.attr_kashida = luatexbase.registernumber'bblar at kashida' }%
+  \newattribute\bblar at kashida@aux % 0, 1=tatweel, 2=diacritics
+  \directlua{
+    Babel.attr_kashida = luatexbase.registernumber'bblar at kashida' 
+    Babel.attr_kashida_aux = luatexbase.registernumber'bblar at kashida@aux'
+  }%
   \bblar at kashida=\z@
+  \bblar at kashida@aux=\z@
   \bbl at patchfont{{\bbl at parsejalt}}%
   \directlua{
     Babel.arabic.elong_map   = Babel.arabic.elong_map or {}
@@ -14298,6 +14452,7 @@ end
 \begingroup
 \catcode`#=11
 \catcode`~=11
+
 \directlua{
 
 Babel.arabic = Babel.arabic or {}
@@ -14305,6 +14460,7 @@ Babel.arabic.from = {}
 Babel.arabic.dest = {}
 Babel.arabic.justify_factor = 0.95
 Babel.arabic.justify_enabled = true
+Babel.arabic.tatwil_max = -1
 
 function Babel.arabic.justify(head)
   if not Babel.arabic.justify_enabled then return head end
@@ -14333,10 +14489,12 @@ function Babel.arabic.justify_hlist(head, line, gc, size, pack)
   local width, width_new, full, k_curr, wt_pos, goal, shift
   local subst_done = false
   local elong_map = Babel.arabic.elong_map
+  local cnt
   local last_line
   local GLYPH = node.id'glyph'
   local KASHIDA = Babel.attr_kashida
   local LOCALE = Babel.attr_locale
+  local k_middle = {}
 
   if line == nil then
     line = {}
@@ -14405,7 +14563,7 @@ function Babel.arabic.justify_hlist(head, line, gc, size, pack)
     if #k_list == 0 then goto next_line end
 
     width = node.dimensions(line.head)    % The 'natural' width
-    k_curr = #k_list
+    k_curr = #k_list % Traverse backwards, from the end
     wt_pos = 1
 
     while width < goal do
@@ -14430,6 +14588,64 @@ function Babel.arabic.justify_hlist(head, line, gc, size, pack)
       end
     end
 
+    % Limit the number of tatweel by removing them. Not very efficient,
+    % but it does the job in a quite predictable way.
+    if Babel.arabic.tatwil_max > -1 then
+      cnt = 0
+      for n in node.traverse_id(GLYPH, line.head) do
+        if n.char == 0x0640 then
+          cnt = cnt + 1
+          if cnt > Babel.arabic.tatwil_max then
+            node.remove(line.head, n)
+          end
+        else
+          cnt = 0
+        end
+      end
+    end
+
+    % WIP. Mostly works, but vertical placement requires more work. 
+    Babel.kashida_placement = Babel.kashida_placement or 'end'
+
+    if Babel.kashida_placement == 'center' then
+      local K_AUX = Babel.attr_kashida_aux
+      cnt = 0
+      for n in node.traverse_id(GLYPH, line.head) do
+        % print('>>', string.format("\@percentchar x", n.char),
+        %       node.get_attribute(n, K_AUX) )
+        if node.get_attribute(n, K_AUX) == 1 or
+            n.char == 0x0640 then
+          % if not(n.char == 0x0640) then print('----', n.char) end
+          cnt = cnt + 1
+          k_middle[cnt] = n
+        elseif node.get_attribute(n, K_AUX) == 2 and cnt > 0 then
+          local xn
+          xn = node.copy(n)
+          if (cnt \@percentchar 2 == 0) then
+            cnt = cnt/2
+            xn.xoffset = n.prev.width/2
+          else
+            cnt = (cnt + 1)/2
+            xn.xoffset = 0
+          end        
+          node.remove(line.head, n)
+          % xn.yoffset = 0
+          node.insert_after(line.head, k_middle[cnt], xn)
+        else
+          cnt = 0
+        end
+      end
+    end
+
+%     print('========')
+%     for n in node.traverse(line.head) do
+%       if n.id == GLYPH then
+%         print('>>', string.format("\@percentchar x", n.char), n.yoffset, n.xoffset)
+%       else
+%         print('[' .. n.id .. ']')
+%       end
+%     end
+
     ::next_line::
 
     % Must take into account marks and ins, see luatex manual.
@@ -14863,12 +15079,26 @@ end
   \directlua{
     Babel = Babel or {}
     %
+    function Babel.kashida_flag(head) % WIP
+      for n in node.traverse_id(node.id'glyph', head) do
+        if n.char == 0x064b or n.char == 0x064d or
+            n.char == 0x064e or n.char == 0x0640f or 
+            n.char == 0x0650  or n.char == 0x0670 then
+          node.set_attribute(n, Babel.attr_kashida_aux, 2)
+        elseif n.char == 0x0640 then
+          node.set_attribute(n, Babel.attr_kashida_aux, 1)
+        end
+      end 
+      return head
+    end
+    %
     function Babel.pre_otfload_v(head)
       if Babel.numbers and Babel.digits_mapped then
         head = Babel.numbers(head)
       end
       if Babel.bidi_enabled then
         head = Babel.bidi(head, false, dir)
+        head = Babel.kashida_flag(head)
       end
       return head
     end
@@ -14879,6 +15109,7 @@ end
       end
       if Babel.bidi_enabled then
         head = Babel.bidi(head, false, dir)
+        head = Babel.kashida_flag(head)
       end
       return head
     end
diff --git a/babel.ins b/babel.ins
index dc3f972..3c79dfd 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{2023/05/13}
+\def\filedate{2023/05/27}
 \def\batchfile{babel.ins}
 \input docstrip.tex
 
diff --git a/babel.pdf b/babel.pdf
index e32651a..e261d20 100644
Binary files a/babel.pdf and b/babel.pdf differ
diff --git a/bbcompat.dtx b/bbcompat.dtx
index 3f808c7..c874d12 100644
--- a/bbcompat.dtx
+++ b/bbcompat.dtx
@@ -30,7 +30,7 @@
 %
 % \iffalse
 %<*dtx>
-\ProvidesFile{bbcompat.dtx}[2023/05/13 v3.89.13335]
+\ProvidesFile{bbcompat.dtx}[2023/05/27 v3.89.14772]
 %</dtx>
 %
 %% File 'bbcompat.dtx'
diff --git a/locale/fa/babel-farsi.tex b/locale/fa/babel-farsi.tex
new file mode 100644
index 0000000..3ce5015
--- /dev/null
+++ b/locale/fa/babel-farsi.tex
@@ -0,0 +1,12 @@
+% This file is part of babel. For further details see:
+% https://www.ctan.org/pkg/babel
+\ifx\BabelBeforeIni\undefined
+  \PackageError{babel}%
+    {This file is a component of babel and cannot\MessageBreak
+     be loaded directly. I'll stop immediately}%
+    {Just use babel as documented.}%
+  \stop
+\fi
+\BabelBeforeIni{fa}{%
+}
+\endinput
\ No newline at end of file
diff --git a/locale/la/babel-classicallatin.tex b/locale/la/babel-classicallatin.tex
new file mode 100644
index 0000000..bdd9d98
--- /dev/null
+++ b/locale/la/babel-classicallatin.tex
@@ -0,0 +1,25 @@
+\ifx\BabelBeforeIni\undefined
+  \PackageError{babel}%
+    {This file is a component of babel and cannot\MessageBreak
+     be loaded directly. I'll stop immediately}%
+    {Just use babel as documented.}%
+  \stop
+\fi
+\BabelBeforeIni{la-x-classic}{%
+}
+
+\expandafter\addto\csname date\languagename\endcsname{%
+  \babel at save\BabelDatey
+  \def\BabelDatey#1{\@Roman{#1}}%
+  \babel at save\BabelDated
+  \def\BabelDated#1{\@Roman{#1}}}
+
+\StartBabelCommands{\languagename}{}
+  \SetCase
+    {\uccode`u=`V\relax}
+    {\lccode`V=`u\relax}
+  \SetHyphenMap{%
+    \BabelLower{`V}{`u}}
+\EndBabelCommands
+
+\endinput
\ No newline at end of file
diff --git a/locale/la/babel-ecclesiasticallatin.tex b/locale/la/babel-ecclesiasticallatin.tex
new file mode 100644
index 0000000..7a5eb1f
--- /dev/null
+++ b/locale/la/babel-ecclesiasticallatin.tex
@@ -0,0 +1,17 @@
+\ifx\BabelBeforeIni\undefined
+  \PackageError{babel}%
+    {This file is a component of babel and cannot\MessageBreak
+     be loaded directly. I'll stop immediately}%
+    {Just use babel as documented.}%
+  \stop
+\fi
+\BabelBeforeIni{la-x-ecclesia}{%
+}
+
+\expandafter\addto\csname date\languagename\endcsname{%
+  \babel at save\BabelDatey
+  \def\BabelDatey#1{\@Roman{#1}}%
+  \babel at save\BabelDated
+  \def\BabelDated#1{\@Roman{#1}}}
+
+\endinput
\ No newline at end of file
diff --git a/locale/la/babel-la-x-classic.ini b/locale/la/babel-la-x-classic.ini
index ed4cc16..dfb62a6 100644
--- a/locale/la/babel-la-x-classic.ini
+++ b/locale/la/babel-la-x-classic.ini
@@ -11,8 +11,8 @@
 charset = utf8
 version = 1.5
 date = 2022-07-28
-name.english = Classic Latin
-name.babel = classiclatin
+name.english = Classical Latin
+name.babel = classicallatin
 tag.bcp47 = la-x-classic
 language.tag.bcp47 = la
 tag.opentype = LAT
@@ -23,7 +23,7 @@ extension.x.tag.bcp47 = classic
 level = 1
 encodings = T1 OT1 LY1
 derivate = no
-require.babel = classiclatin
+require.babel = classicallatin
 name.polyglossia.language = latin
 name.polyglossia.variant = classic
 
diff --git a/locale/la/babel-la-x-ecclesia.ini b/locale/la/babel-la-x-ecclesia.ini
index 133e98b..7663ee4 100644
--- a/locale/la/babel-la-x-ecclesia.ini
+++ b/locale/la/babel-la-x-ecclesia.ini
@@ -11,8 +11,8 @@
 charset = utf8
 version = 1.5
 date = 2022-07-28
-name.english = Ecclesiastic Latin
-name.babel = ecclesiasticlatin
+name.english = Ecclesiastical Latin
+name.babel = ecclesiasticallatin
 tag.bcp47 = la-x-ecclesia
 language.tag.bcp47 = la
 tag.opentype = LAT
@@ -23,7 +23,7 @@ extension.x.tag.bcp47 = ecclesia
 level = 1
 encodings = T1 OT1 LY1
 derivate = no
-require.babel = ecclesiasticlatin
+require.babel = ecclesiasticallatin
 name.polyglossia.language = latin
 name.polyglossia.variant = ecclesiastic
 
diff --git a/locale/vi/babel-vietnam.tex b/locale/vi/babel-vietnam.tex
deleted file mode 100644
index c70723f..0000000
--- a/locale/vi/babel-vietnam.tex
+++ /dev/null
@@ -1,12 +0,0 @@
-% This file is part of babel. For further details see:
-% https://www.ctan.org/pkg/babel
-\ifx\BabelBeforeIni\undefined
-  \PackageError{babel}%
-    {This file is a component of babel and cannot\MessageBreak
-     be loaded directly. I'll stop immediately}%
-    {Just use babel as documented.}%
-  \stop
-\fi
-\BabelBeforeIni{vi}{%
-}
-\endinput
\ No newline at end of file





More information about the latex3-commits mailing list.