diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/babel/luababel.def')
-rw-r--r-- | Master/texmf-dist/tex/generic/babel/luababel.def | 67 |
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 |