summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel/babel.def
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2020-01-15 21:50:07 +0000
committerKarl Berry <karl@freefriends.org>2020-01-15 21:50:07 +0000
commit14a474d3938a000b58ddd4c440338dc727bdc830 (patch)
tree814924ad1c955f64be498176d8538ff05d180937 /Master/texmf-dist/tex/generic/babel/babel.def
parent8f4769dc6a1426c26d0afd2f29eb1a6faf865eda (diff)
babel (15jan20)
git-svn-id: svn://tug.org/texlive/trunk@53415 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/babel.def')
-rw-r--r--Master/texmf-dist/tex/generic/babel/babel.def103
1 files changed, 91 insertions, 12 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/babel.def b/Master/texmf-dist/tex/generic/babel/babel.def
index ad0e6d9a70a..9f8352bbac9 100644
--- a/Master/texmf-dist/tex/generic/babel/babel.def
+++ b/Master/texmf-dist/tex/generic/babel/babel.def
@@ -41,7 +41,7 @@
\wlog{File: #1 #4 #3 <#2>}%
\let\ProvidesFile\@undefined}
\fi
-\ProvidesFile{babel.def}[2019/12/08 3.37 Babel common definitions]
+\ProvidesFile{babel.def}[2020/01/15 3.38 Babel common definitions]
\ifx\AtBeginDocument\@undefined
\input plain.def\relax
\fi
@@ -1374,6 +1374,7 @@
\edef\bbl@savelocaleid{\the\localeid}%
% Set name and locale id
\def\languagename{#2}%
+ % \global\@namedef{bbl@lcname@#2}{#2}%
\bbl@id@assign
\let\bbl@KVP@captions\@nil
\let\bbl@KVP@import\@nil
@@ -1386,6 +1387,8 @@
\let\bbl@KVP@mapdigits\@nil
\let\bbl@KVP@intraspace\@nil
\let\bbl@KVP@intrapenalty\@nil
+ \let\bbl@KVP@onchar\@nil
+ \let\bbl@KVP@chargroups\@nil
\bbl@forkv{#1}{% TODO - error handling
\in@{..}{##1}%
\ifin@
@@ -1450,6 +1453,56 @@
\ifx\bbl@KVP@language\@nil\else
\bbl@csarg\edef{lname@#2}{\bbl@KVP@language}%
\fi
+ % == onchar ==
+ \ifx\bbl@KVP@onchar\@nil\else
+ \bbl@luahyphenate
+ \directlua{
+ if Babel.locale_mapped == nil then
+ Babel.locale_mapped = true
+ Babel.linebreaking.add_before(Babel.locale_map)
+ Babel.loc_to_scr = {}
+ Babel.chr_to_loc = {}
+ end}%
+ \bbl@xin@{ ids }{ \bbl@KVP@onchar\space}%
+ \ifin@
+ % TODO - error/warning if no script
+ \directlua{
+ if Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] then
+ Babel.loc_to_scr[\the\localeid] =
+ Babel.script_blocks['\bbl@cs{sbcp@\languagename}']
+ Babel.locale_props[\the\localeid].lc = \the\localeid\space
+ Babel.locale_props[\the\localeid].lg = \the\@nameuse{l@\languagename}\space
+ end
+ }%
+ \fi
+ \bbl@xin@{ fonts }{ \bbl@KVP@onchar\space}%
+ \ifin@
+ \bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
+ \bbl@ifunset{bbl@wdir@\languagename}{\bbl@provide@dirs{\languagename}}{}%
+ \directlua{
+ if Babel.script_blocks['\bbl@cs{sbcp@\languagename}'] then
+ Babel.loc_to_scr[\the\localeid] =
+ Babel.script_blocks['\bbl@cs{sbcp@\languagename}']
+ end}
+ \ifx\bbl@mapselect\@undefined
+ \AtBeginDocument{%
+ \expandafter\bbl@add\csname selectfont \endcsname{{\bbl@mapselect}}%
+ {\selectfont}}%
+ \def\bbl@mapselect{%
+ \let\bbl@mapselect\relax
+ \edef\bbl@prefontid{\fontid\font}}%
+ \def\bbl@mapdir##1{%
+ {\def\languagename{##1}%
+ \let\bbl@ifrestoring\@firstoftwo % To avoid font warning
+ \bbl@switchfont
+ \directlua{
+ Babel.locale_props[\the\csname bbl@id@@##1\endcsname]%
+ ['/\bbl@prefontid'] = \fontid\font\space}}}%
+ \fi
+ \bbl@exp{\\\bbl@add\\\bbl@mapselect{\\\bbl@mapdir{\languagename}}}%
+ \fi
+ % TODO - catch non-valid values
+ \fi
% == mapfont ==
% For bidi texts, to switch the font based on direction
\ifx\bbl@KVP@mapfont\@nil\else
@@ -1670,9 +1723,13 @@
{\\\AddBabelHook[\languagename]{babel-prehc-\languagename}{patterns}%
{\prehyphenchar=\@nameuse{bbl@prehc@\languagename}\relax}}}%
\fi}}
+\ifx\bbl@readstream\@undefined
+ \csname newread\endcsname\bbl@readstream
+\fi
\def\bbl@read@ini#1#2{%
- \openin1=babel-#1.ini % FIXME - number must not be hardcoded
- \ifeof1
+ \global\@namedef{bbl@lini@\languagename}{#1}%
+ \openin\bbl@readstream=babel-#1.ini
+ \ifeof\bbl@readstream
\bbl@error
{There is no ini file for the requested language\\%
(#1). Perhaps you misspelled it or your installation\\%
@@ -1693,9 +1750,9 @@
\bbl@info{Importing #2 for \languagename\\%
from babel-#1.ini. Reported}%
\loop
- \if T\ifeof1F\fi T\relax % Trick, because inside \loop
+ \if T\ifeof\bbl@readstream F\fi T\relax % Trick, because inside \loop
\endlinechar\m@ne
- \read1 to \bbl@line
+ \read\bbl@readstream to \bbl@line
\endlinechar`\^^M
\ifx\bbl@line\@empty\else
\expandafter\bbl@iniline\bbl@line\bbl@iniline
@@ -1746,14 +1803,14 @@
\fi}}
\let\bbl@inikv@identification\bbl@inikv
\def\bbl@secpost@identification{%
- \bbl@ifunset{bbl@@kv@identification.name.opentype}%
- {\bbl@exportkey{lname}{identification.name.english}{}}%
- {\bbl@exportkey{lname}{identification.name.opentype}{}}%
+ \bbl@exportkey{elname}{identification.name.english}{}%
+ \bbl@exp{\\\bbl@exportkey{lname}{identification.name.opentype}%
+ {\csname bbl@elname@\languagename\endcsname}}%
\bbl@exportkey{lbcp}{identification.tag.bcp47}{}%
\bbl@exportkey{lotf}{identification.tag.opentype}{dflt}%
- \bbl@ifunset{bbl@@kv@identification.script.name.opentype}%
- {\bbl@exportkey{sname}{identification.script.name}{}}%
- {\bbl@exportkey{sname}{identification.script.name.opentype}{}}%
+ \bbl@exportkey{esname}{identification.script.name}{}%
+ \bbl@exp{\\\bbl@exportkey{sname}{identification.script.name.opentype}%
+ {\csname bbl@esname@\languagename\endcsname}}%
\bbl@exportkey{sbcp}{identification.script.tag.bcp47}{}%
\bbl@exportkey{sotf}{identification.script.tag.opentype}{DFLT}}
\let\bbl@inikv@typography\bbl@inikv
@@ -1889,12 +1946,34 @@
\def\bbl@ini@basic#1{%
\def\BabelBeforeIni##1##2{%
\begingroup
- \bbl@add\bbl@secpost@identification{\closein1 }%
+ \bbl@add\bbl@secpost@identification{\closein\bbl@readstream }%
\catcode`\[=12 \catcode`\]=12 \catcode`\==12 %
\bbl@read@ini{##1}{font and identification data}%
\endinput % babel- .tex may contain onlypreamble's
\endgroup}% boxed, to avoid extra spaces:
{\setbox\z@\hbox{\InputIfFileExists{babel-#1.tex}{}{}}}}
+\newcommand\localeinfo[1]{%
+ \bbl@ifunset{bbl@\csname bbl@info@#1\endcsname @\languagename}%
+ {\bbl@error{I've found no info for the current locale.\\%
+ The corresponding ini file has not been loaded\\%
+ Perhaps it doesn't exist}%
+ {See the manual for details.}}%
+ {\@nameuse{bbl@\csname bbl@info@#1\endcsname @\languagename}}}
+\@namedef{bbl@info@tag.ini}{lini}
+\@namedef{bbl@info@name.english}{elname}
+\@namedef{bbl@info@name.opentype}{lname}
+\@namedef{bbl@info@tag.bcp47}{lbcp}
+\@namedef{bbl@info@tag.opentype}{lotf}
+\@namedef{bbl@info@script.name}{esname}
+\@namedef{bbl@info@script.name.opentype}{sname}
+\@namedef{bbl@info@script.tag.bcp47}{sbcp}
+\@namedef{bbl@info@script.tag.opentype}{sotf}
+\let\bbl@ensureinfo\@gobble
+\newcommand\BabelEnsureInfo{%
+ \def\bbl@ensureinfo##1{%
+ \ifx\InputIfFileExists\@undefined\else % not in plain
+ \bbl@ifunset{bbl@lname@##1}{\bbl@ini@basic{##1}}{}%
+ \fi}}
\newcommand\babeladjust[1]{% TODO. Error handling.
\bbl@forkv{#1}{\@nameuse{bbl@ADJ@##1@##2}}}
\def\bbl@adjust@lua#1#2{%