summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/generic/babel/luababel.def
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/luababel.def')
-rw-r--r--Master/texmf-dist/tex/generic/babel/luababel.def67
1 files changed, 42 insertions, 25 deletions
diff --git a/Master/texmf-dist/tex/generic/babel/luababel.def b/Master/texmf-dist/tex/generic/babel/luababel.def
index e926e10eabf..1ee7214a546 100644
--- a/Master/texmf-dist/tex/generic/babel/luababel.def
+++ b/Master/texmf-dist/tex/generic/babel/luababel.def
@@ -275,7 +275,11 @@
\number\language) }}%
\xdef\bbl@pttnlist{\bbl@pttnlist\number\language,}%
\fi
- \endgroup}}
+ \endgroup}%
+ \bbl@exp{%
+ \bbl@ifunset{bbl@prehc@\languagename}{}%
+ {\\\bbl@ifblank{\bbl@cs{prehc@\languagename}}{}%
+ {\prehyphenchar=\bbl@cl{prehc}\relax}}}}
\AddBabelHook{luatex}{everylanguage}{%
\def\process@language##1##2##3{%
\def\process@line####1####2 ####3 ####4 {}}}
@@ -489,7 +493,7 @@
\def\bbl@provide@intraspace{%
\bbl@ifunset{bbl@intsp@\languagename}{}%
{\expandafter\ifx\csname bbl@intsp@\languagename\endcsname\@empty\else
- \bbl@xin@{\bbl@cs{lnbrk@\languagename}}{c}%
+ \bbl@xin@{\bbl@cl{lnbrk}}{c}%
\ifin@ % cjk
\bbl@cjkintraspace
\directlua{
@@ -497,18 +501,18 @@
Babel.locale_props = Babel.locale_props or {}
Babel.locale_props[\the\localeid].linebreak = 'c'
}%
- \bbl@exp{\\\bbl@intraspace\bbl@cs{intsp@\languagename}\\\@@}%
+ \bbl@exp{\\\bbl@intraspace\bbl@cl{intsp}\\\@@}%
\ifx\bbl@KVP@intrapenalty\@nil
\bbl@intrapenalty0\@@
\fi
\else % sea
\bbl@seaintraspace
- \bbl@exp{\\\bbl@intraspace\bbl@cs{intsp@\languagename}\\\@@}%
+ \bbl@exp{\\\bbl@intraspace\bbl@cl{intsp}\\\@@}%
\directlua{
Babel = Babel or {}
Babel.sea_ranges = Babel.sea_ranges or {}
- Babel.set_chranges('\bbl@cs{sbcp@\languagename}',
- '\bbl@cs{chrng@\languagename}')
+ Babel.set_chranges('\bbl@cl{sbcp}',
+ '\bbl@cl{chrng}')
}%
\ifx\bbl@KVP@intrapenalty\@nil
\bbl@intrapenalty0\@@
@@ -608,7 +612,7 @@
\gdef\bbl@switchfont{%
\bbl@ifunset{bbl@lsys@\languagename}{\bbl@provide@lsys{\languagename}}{}%
\bbl@exp{% eg Arabic -> arabic
- \lowercase{\edef\\\bbl@tempa{\bbl@cs{sname@\languagename}}}}%
+ \lowercase{\edef\\\bbl@tempa{\bbl@cl{sname}}}}%
\bbl@foreach\bbl@font@fams{%
\bbl@ifunset{bbl@##1dflt@\languagename}% (1) language?
{\bbl@ifunset{bbl@##1dflt@*\bbl@tempa}% (2) from script?
@@ -628,7 +632,7 @@
\global\bbl@csarg\let{famrst@##1}\relax}%
{\bbl@exp{% order is relevant
\\\bbl@add\\\originalTeX{%
- \\\bbl@font@rst{\bbl@cs{##1dflt@\languagename}}%
+ \\\bbl@font@rst{\bbl@cl{##1dflt}}%
\<##1default>\<##1family>{##1}}%
\\\bbl@font@set\<bbl@##1dflt@\languagename>% the main part!
\<##1default>\<##1family>}}}%
@@ -651,11 +655,13 @@
\expandafter\xdef\csname ##1default\endcsname{\f@family}}%
{}}%
\ifx\bbl@tempa\@empty\else
- \bbl@infowarn{The following fonts are not babel standard families:\\%
+ \bbl@infowarn{The following font families will use the default\\%
+ settings for all or some languages:\\%
\bbl@tempa
There is nothing intrinsically wrong with it, but\\%
- 'babel' will no set Script and Language. Consider\\%
- defining a new family with \string\babelfont.\\%
+ 'babel' will no set Script and Language, which could\\%
+ be relevant in some languages. If your document uses\\%
+ these families, consider redefining them with \string\babelfont.\\%
Reported}%
\fi
\endgroup}
@@ -673,18 +679,14 @@
\let\bbl@tempe\bbl@mapselect
\let\bbl@mapselect\relax
\let\bbl@temp@fam#4% eg, '\rmfamily', to be restored below
- \let#4\relax % So that can be used with \newfontfamily
+ \let#4\@empty % Make sure \renewfontfamily is valid
\bbl@exp{%
\let\\\bbl@temp@pfam\<\bbl@stripslash#4\space>% eg, '\rmfamily '
- \<keys_if_exist:nnF>{fontspec-opentype}%
- {Script/\bbl@cs{sname@\languagename}}%
- {\\\newfontscript{\bbl@cs{sname@\languagename}}%
- {\bbl@cs{sotf@\languagename}}}%
- \<keys_if_exist:nnF>{fontspec-opentype}%
- {Language/\bbl@cs{lname@\languagename}}%
- {\\\newfontlanguage{\bbl@cs{lname@\languagename}}%
- {\bbl@cs{lotf@\languagename}}}%
- \\\newfontfamily\\#4%
+ \<keys_if_exist:nnF>{fontspec-opentype}{Script/\bbl@cl{sname}}%
+ {\\\newfontscript{\bbl@cl{sname}}{\bbl@cl{sotf}}}%
+ \<keys_if_exist:nnF>{fontspec-opentype}{Language/\bbl@cl{lname}}%
+ {\\\newfontlanguage{\bbl@cl{lname}}{\bbl@cl{lotf}}}%
+ \\\renewfontfamily\\#4%
[\bbl@cs{lsys@\languagename},#2]}{#3}% ie \bbl@exp{..}{#3}
\begingroup
#4%
@@ -742,13 +744,16 @@ Babel.script_blocks = {
['Armn'] = {{0x0530, 0x058F}},
['Beng'] = {{0x0980, 0x09FF}},
['Cher'] = {{0x13A0, 0x13FF}, {0xAB70, 0xABBF}},
+ ['Copt'] = {{0x03E2, 0x03EF}, {0x2C80, 0x2CFF}, {0x102E0, 0x102FF}},
['Cyrl'] = {{0x0400, 0x04FF}, {0x0500, 0x052F}, {0x1C80, 0x1C8F},
{0x2DE0, 0x2DFF}, {0xA640, 0xA69F}},
['Deva'] = {{0x0900, 0x097F}, {0xA8E0, 0xA8FF}},
['Ethi'] = {{0x1200, 0x137F}, {0x1380, 0x139F}, {0x2D80, 0x2DDF},
{0xAB00, 0xAB2F}},
['Geor'] = {{0x10A0, 0x10FF}, {0x2D00, 0x2D2F}},
- ['Grek'] = {{0x0370, 0x03FF}, {0x1F00, 0x1FFF}},
+ % Don't follow strictly Unicode, which places some Coptic letters in
+ % the 'Greek and Coptic' block
+ ['Grek'] = {{0x0370, 0x03E1}, {0x03F0, 0x03FF}, {0x1F00, 0x1FFF}},
['Hans'] = {{0x2E80, 0x2EFF}, {0x3000, 0x303F}, {0x31C0, 0x31EF},
{0x3300, 0x33FF}, {0x3400, 0x4DBF}, {0x4E00, 0x9FFF},
{0xF900, 0xFAFF}, {0xFE30, 0xFE4F}, {0xFF00, 0xFFEF},
@@ -772,6 +777,7 @@ Babel.script_blocks = {
['Mymr'] = {{0x1000, 0x109F}, {0xAA60, 0xAA7F}, {0xA9E0, 0xA9FF}},
['Orya'] = {{0x0B00, 0x0B7F}},
['Sinh'] = {{0x0D80, 0x0DFF}, {0x111E0, 0x111FF}},
+ ['Syrc'] = {{0x0700, 0x074F}, {0x0860, 0x086F}},
['Taml'] = {{0x0B80, 0x0BFF}},
['Telu'] = {{0x0C00, 0x0C7F}},
['Tfng'] = {{0x2D30, 0x2D7F}},
@@ -781,6 +787,7 @@ Babel.script_blocks = {
['Yiii'] = {{0xA000, 0xA48F}, {0xA490, 0xA4CF}}
}
+Babel.script_blocks.Cyrs = Babel.script_blocks.Cyrl
Babel.script_blocks.Hant = Babel.script_blocks.Hans
Babel.script_blocks.Kana = Babel.script_blocks.Jpan
@@ -790,6 +797,7 @@ function Babel.locale_map(head)
local LOCALE = luatexbase.registernumber'bbl@attr@locale'
local GLYPH = node.id('glyph')
local inmath = false
+ local toloc_save
for item in node.traverse(head) do
local toloc
if not inmath and item.id == GLYPH then
@@ -807,7 +815,15 @@ function Babel.locale_map(head)
end
end
end
- % Now, take action
+ % Now, take action, but treat composite chars in a different
+ % fashion, because they 'inherit' the previous locale. Not yet
+ % optimized.
+ if not toloc and
+ (item.char >= 0x0300 and item.char <= 0x036F) or
+ (item.char >= 0x1AB0 and item.char <= 0x1AFF) or
+ (item.char >= 0x1DC0 and item.char <= 0x1DFF) then
+ toloc = toloc_save
+ end
if toloc and toloc > -1 then
if Babel.locale_props[toloc].lg then
item.lang = Babel.locale_props[toloc].lg
@@ -816,6 +832,7 @@ function Babel.locale_map(head)
if Babel.locale_props[toloc]['/'..item.font] then
item.font = Babel.locale_props[toloc]['/'..item.font]
end
+ toloc_save = toloc
end
elseif not inmath and item.id == 7 then
item.replace = item.replace and Babel.locale_map(item.replace)
@@ -845,7 +862,7 @@ end
{See the manual for futher info}}%
{}%
\loop
- \@nameuse{bbl@chprop@#2}{#3}%
+ \bbl@cs{chprop@#2}{#3}%
\ifnum\count@<\@tempcnta
\advance\count@\@ne
\repeat}
@@ -871,7 +888,7 @@ end
\directlua{
Babel.chr_to_loc = Babel.chr_to_loc or {}
Babel.chr_to_loc[\the\count@] =
- \bbl@ifblank{#1}{-1000}{\the\@nameuse{bbl@id@@#1}}\space
+ \bbl@ifblank{#1}{-1000}{\the\bbl@cs{id@@#1}}\space
}}
\begingroup
\catcode`\#=12