From 6ea3ea065d72f1dd1229cd1ab37be377019501ad Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 22 May 2014 22:00:35 +0000 Subject: polyglossia (22may14) git-svn-id: svn://tug.org/texlive/trunk@34205 c570f23f-e606-0410-a88d-b1316a301751 --- .../tex/latex/polyglossia/gloss-breton.ldf | 8 +- .../tex/latex/polyglossia/gloss-croatian.ldf | 10 +- .../tex/latex/polyglossia/gloss-german.ldf | 30 ++- .../tex/latex/polyglossia/gloss-lithuanian.ldf | 2 +- .../tex/latex/polyglossia/gloss-polish.ldf | 8 +- .../tex/latex/polyglossia/gloss-russian.ldf | 4 +- .../tex/latex/polyglossia/gloss-turkish.ldf | 8 +- .../tex/latex/polyglossia/polyglossia-brpt.lua | 224 --------------------- .../tex/latex/polyglossia/polyglossia.sty | 27 ++- 9 files changed, 65 insertions(+), 256 deletions(-) delete mode 100644 Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua (limited to 'Master/texmf-dist/tex') diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf index 3b299b36c77..5c49542c128 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf @@ -8,8 +8,7 @@ } \ifluatex - \newluatexattribute\xpg@frpt - \directlua{polyglossia.load_frpt()} + % TODO \else \newXeTeXintercharclass\breton@punctthin % ! ? ; \newXeTeXintercharclass\breton@punctthick % : @@ -20,8 +19,7 @@ \def\breton@punctuation{% \ifluatex - \global\xpg@frpt=1\relax - \directlua{polyglossia.activate_frpt()}% + % TODO \else \XeTeXinterchartokenstate=1% \XeTeXcharclass `\! \breton@punctthin @@ -35,7 +33,7 @@ \def\nobreton@punctuation{% \ifluatex - \global\xpg@frpt=0\relax + % TODO \else \XeTeXcharclass `\! \z@ \XeTeXcharclass `\? \z@ diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf index c43775077a4..c76ae47160c 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-croatian.ldf @@ -16,23 +16,23 @@ \def\contentsname{Sadržaj}% \def\listfigurename{Popis slika}% \def\listtablename{Popis tablica}% - \def\indexname{Indeks}% + \def\indexname{Kazalo}% \def\figurename{Slika}% \def\tablename{Tablica}% \def\partname{Dio}% \def\pagename{Stranica}% \def\seename{Vidjeti}% - \def\alsoname{Vidjeti i}% + \def\alsoname{Također vidjeti}% \def\enclname{Prilozi}% - \def\ccname{Kopije}% + \def\ccname{Kopija}% \def\headtoname{Prima}% \def\proofname{Dokaz}% - \def\glossaryname{Kazalo}% + \def\glossaryname{Pojmovnik}% } \def\datecroatian{% \def\today{\number\day.~\ifcase\month\or siječnja\or veljače\or ožujka\or travnja\or svibnja\or - lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenog\or + lipnja\or srpnja\or kolovoza\or rujna\or listopada\or studenoga\or prosinca\fi \space \number\year.}} \endinput diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf index dc29c14f254..e3e343c48eb 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-german.ldf @@ -33,6 +33,15 @@ \fi } +\newif\if@austrian@locale +\@austrian@localefalse +\def\tmp@austrian{austrian} +\define@key{german}{variant}[german]{% + \def\@tmpa{#1}% + \ifx\@tmpa\tmp@austrian\@austrian@localetrue\else + \@austrian@localefalse% + \fi} + \newif\if@german@fraktur \def\tmp@fraktur{fraktur} \define@key{german}{script}[latin]{% @@ -125,13 +134,17 @@ } \def\date@german{% \def\today{\number\day.% - \space \ifcase\month%TODO add option for Austrian forms (Jänner etc) - \or Januar\or Februar\or März\or April\or Mai\or Juni\or% - Juli\or August\or September\or Oktober\or November\or% - Dezember\fi + \space \ifcase\month% + \or\if@austrian@locale Jänner\else Januar\fi\or Februar\or März\or% + April\or Mai\or Juni\or Juli\or August\or September\or Oktober\or% + November\or Dezember\fi \space \number\year}% } +\def\captions@german@austrian{% + \def\enclname{Beilage(n)}% +} + %%Strings for Fraktur contributed by Gerrit \def\captions@german@fraktur{% \captions@german% @@ -143,15 +156,16 @@ \def\date@german@fraktur{% \def\today{\number\day.% - \space \ifcase\month%TODO add option for Austrian forms (Jänner etc) - \or Januar\or Februar\or März\or April\or Mai\or Juni\or% - Juli\or Auguſt\or September\or Oktober\or November\or% - Dezember\fi + \space \ifcase\month% + \or\if@austrian@locale Jänner\else Januar\fi\or Februar\or März\or% + April\or Mai\or Juni\or Juli\or Auguſt\or September\or Oktober\or% + November\or Dezember\fi \space \number\year}% } \def\captionsgerman{% \if@german@fraktur\captions@german@fraktur\else\captions@german\fi + \if@austrian@locale\captions@german@austrian\fi } \def\dategerman{% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf index f1bc9344610..d7f37afdf86 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-lithuanian.ldf @@ -13,7 +13,7 @@ \def\abstractname{Santrauka}% \def\bibname{Literatūra}% \def\prefacename{Pratarmė}% - \def\chaptername{skyrius}% + \def\chaptername{Skyrius}% \def\appendixname{Priedas}% \def\contentsname{Turinys}% \def\listfigurename{Iliustracijų sąrašas}% diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf index 40359e022aa..05b1a9141b6 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-polish.ldf @@ -15,17 +15,17 @@ \def\appendixname{Dodatek}% \def\contentsname{Spis treści}% \def\listfigurename{Spis rysunków}% - \def\listtablename{Spis tablic}% + \def\listtablename{Spis tabel}% \def\indexname{Indeks}% \def\figurename{Rysunek}% - \def\tablename{Tablica}% + \def\tablename{Tabela}% \def\partname{Część}% \def\enclname{Załącznik}% \def\ccname{Kopie:}% \def\headtoname{Do}% \def\pagename{Strona}% - \def\seename{Porównaj}% - \def\alsoname{Porównaj także}% + \def\seename{Zobacz}% + \def\alsoname{Zobacz też}% \def\proofname{Dowód}% \def\glossaryname{Glossary}% <-- Needs translation } diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf index 78c984afc89..45563f50fc8 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-russian.ldf @@ -22,7 +22,7 @@ \define@key{russian}{numerals}[latin]{% \ifstrequal{#1}{cyrillic}% {\cyrillic@numeralstrue} - {\cyrillic@numeralsfalse} + {\cyrillic@numeralsfalse}% } \define@boolkey{russian}[russian@]{babelshorthands}[false]{} @@ -65,7 +65,7 @@ \ifx\tempx@\tempa@\@Acdash\else \ifx\tempx@\tempb@\@Bcdash\else \ifx\tempx@\tempc@\@Ccdash\else - \errmessage{Wrong usage of cdash}\fi\fi\fi} + \errmessage{Wrong usage of cdash}\fi\fi\fi}% \def\@Acdash{\ifdim\lastskip>\z@\unskip\nobreak\hskip.2em\fi \cyrdash\hskip.2em\ignorespaces}% \def\@Bcdash{\leavevmode\ifdim\lastskip>\z@\unskip\fi diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf index b9d130f2ba9..7df181f50cb 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf +++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf @@ -8,30 +8,36 @@ fontsetup=true } +% TODO Add \ifluatex branch everywhere +\ifxetex \newXeTeXintercharclass\turkish@punctthin % ! : \newXeTeXintercharclass\turkish@punctthick % = +\fi \def\turkish@punctthinspace{{\ifdim\lastskip>\z@\unskip\penalty\@M\thinspace\fi}} \def\turkish@punctthickspace{{\unskip\nobreakspace}} \def\turkish@punctuation{% + \ifxetex \XeTeXinterchartokenstate=1% \XeTeXcharclass `\! \turkish@punctthin \XeTeXcharclass `\: \turkish@punctthin \XeTeXcharclass `\= \turkish@punctthick \XeTeXinterchartoks \z@ \turkish@punctthin = \turkish@punctthinspace \XeTeXinterchartoks \z@ \turkish@punctthick = \turkish@punctthickspace + \fi } \def\noturkish@punctuation{% + \ifxetex \XeTeXcharclass `\! \z@ \XeTeXcharclass `\: \z@ \XeTeXcharclass `\= \z@ \XeTeXinterchartokenstate=0% + \fi } \def\turkish@casing{% - \message{\string\turkish@casing\space called.} \lccode`\I=`\ı \uccode`\i=`\İ } diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua deleted file mode 100644 index 56af011152a..00000000000 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua +++ /dev/null @@ -1,224 +0,0 @@ -require('polyglossia') -- just in case... - -local add_to_callback = luatexbase.add_to_callback -local remove_from_callback = luatexbase.remove_from_callback -local priority_in_callback = luatexbase.priority_in_callback - -local get_quad = luaotfload.aux.get_quad -- needs luaotfload > 20130516 - -local next, type = next, type - -local nodes, fonts, node = nodes, fonts, node - -local nodecodes = nodes.nodecodes - -local insert_node_before = node.insert_before -local insert_node_after = node.insert_after -local remove_node = nodes.remove -local has_attribute = node.has_attribute -local node_copy = node.copy -local new_node = node.new - -local end_of_math = node.end_of_math -if not end_of_math then -- luatex < .76 - local traverse_nodes = node.traverse_id - local math_code = nodecodes.math - local end_of_math = function (n) - for n in traverse_nodes(math_code, n.next) do - return n - end - end -end - --- node types according to node.types() -local glue_code = nodecodes.glue -local glue_spec_code = nodecodes.glue_spec -local glyph_code = nodecodes.glyph -local penalty_code = nodecodes.penalty -local kern_code = nodecodes.kern - --- we make a new node, so that we can copy it later on -local penalty_node = new_node(penalty_code) -penalty_node.penalty = 10000 - -local function get_penalty_node() - return node_copy(penalty_node) -end - --- same for glue node -local kern_node = new_node(kern_code) - -local function get_kern_node(dim) - local n = node_copy(kern_node) - n.kern = dim - return n -end - --- we have here all possible space characters, referenced by their --- unicode slot number, taken from char-def.lua -local space_chars = {[32]=1, [160]=1, [5760]=1, [6158]=1, [8192]=1, [8193]=1, [8194]=1, [8195]=1, - [8196]=1, [8197]=1, [8198]=1, [8199]=1, [8200]=1, [8201]=1, [8202]=1, [8239]=1, [8287]=1, [12288]=1} - --- from nodes-tst.lua, adapted -local function somespace(n,all) - if n then - local id = n.id - if id == glue_code then - return (all or (n.spec.width ~= 0)) and glue_code - elseif id == kern_code then - return (all or (n.kern ~= 0)) and kern_code - elseif id == glyph_code then - if space_chars[n.char] then - return true - else - return false - end - end - end - return false -end - --- idem -local function somepenalty(n,value) - if n then - local id = n.id - if id == penalty_code then - if value then - return n.penalty == value - else - return true - end - end - end - return false -end - -local xpgfrptattr = luatexbase.attributes['xpg@frpt'] - -local left=1 -local right=2 -local byte = unicode.utf8.byte - --- Now there is a good question: how do we now, in lua, what a \thinspace is? --- In the LaTeX source (ltspace.dtx) it is defined as: --- \def\thinspace{\kern .16667em }. I see no way of seeing if it has been --- overriden or not... So we stick to this value. -local thinspace = 0.16667 --- thickspace is defined in amsmath.sty as: --- \renewcommand{\;}{\mspace+\thickmuskip{.2777em}}. Same problem as above, we --- stick to this fixed value. -local thickspace = 0.2777 -- 5/18 - -local mappings = { - [byte(':')] = {left, thickspace}, --really? - [byte('!')] = {left, thinspace}, - [byte('?')] = {left, thinspace}, - [byte(';')] = {left, thinspace}, - [byte('‼')] = {left, thinspace}, - [byte('⁇')] = {left, thinspace}, - [byte('⁈')] = {left, thinspace}, - [byte('⁉')] = {left, thinspace}, - [byte('»')] = {left, thinspace}, - [byte('>')] = {left, thinspace}, - [byte('«')] = {right, thinspace}, - [byte('‹')] = {right, thinspace}, - } - -local function set_spacings(thinsp, thicksp) - for _, m in pairs(mappings) do - if m[2] == thinspace then - m[2] = thinsp - elseif m[2] == thickspace then - m[2] = thicksp - end - end - thickspace = thicksp - thinspace = thinsp -end - --- from typo-spa.lua -local function process(head) - local done = false - local start = head - -- head is always begin of par (whatsit), so we have at least two prev nodes - -- penalty followed by glue - while start do - local id = start.id - if id == glyph_code then - local attr = has_attribute(start, xpgfrptattr) - if attr and attr > 0 then - local char = start.char - local map = mappings[char] - --node.unset_attribute(start, xpgfrptattr) -- needed? - if map then - local quad = get_quad(start.font) -- might be optimized - local prev = start.prev - if map[1] == left and prev then - local prevprev = prev.prev - local somespace = somespace(prev,true) - -- TODO: there is a question here: do we override a preceding space or not?... - if somespace then - local somepenalty = somepenalty(prevprev,10000) - if somepenalty then - head = remove_node(head,prev,true) - head = remove_node(head,prevprev,true) - else - head = remove_node(head,prev,true) - end - end - insert_node_before(head,start,get_penalty_node()) - insert_node_before(head,start,get_kern_node(map[2]*quad)) - done = true - end - local next = start.next - if map[1] == right and next then - local nextnext = next.next - local somepenalty = somepenalty(next,10000) - if somepenalty then - local somespace = somespace(nextnext,true) - if somespace then - head = remove_node(head,next,true) - head = remove_node(head,nextnext,true) - end - else - local somespace = somespace(next,true) - if somespace then - head = remove_node(head,next,true) - end - end - insert_node_after(head,start,get_kern_node(map[2]*quad)) - insert_node_after(head,start,get_penalty_node()) - done = true - end - end - end - elseif id == math_code then - -- warning: this is a feature of luatex > 0.76 - start = end_of_math(start) -- weird, can return nil .. no math end? - end - if start then - start = start.next - end - end - return head, done -end - -local callback_name = "pre_linebreak_filter" - -local function activate() - if not priority_in_callback (callback_name, "polyglossia-frpt.process") then - add_to_callback(callback_name, process, "polyglossia-frpt.process", 1) - end -end - -local function desactivate() - if priority_in_callback (callback_name, "polyglossia-frpt.process") then - remove_from_callback(callback_name, "polyglossia-frpt.process") - end -end - -polyglossia.activate_frpt = activate -polyglossia.desactivate_frpt = desactivate -polyglossia.set_spacings = set_spacings -polyglossia.thinspace = thinspace -polyglossia.thickspace = thickpace diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty index 7e5c3251f61..e56d5a9e70a 100644 --- a/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty +++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty @@ -1,5 +1,5 @@ \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{polyglossia}[2013/06/27 v1.33.4 +\ProvidesPackage{polyglossia}[2014/05/21 v1.33.5 Babel replacement for XeLaTeX and LuaTeX] \RequirePackage{etoolbox} \RequirePackage{makecmds} @@ -10,6 +10,8 @@ % LuaTeX, but it's not if we run XeTeX, and we need it to know which of % the two engines it is! Hence we include it here. \RequirePackage{ifluatex} +% For symmetry with ifluatex +\RequirePackage{ifxetex} % fontspec now uses LaTeX3 packages such as expl3, so we need this: \ExplSyntaxOn @@ -211,8 +213,17 @@ \ifcsundef{l@#1}% {\xpg@nopatterns{\csname xpg@langname@#1\endcsname}% \expandafter\adddialect\csname l@#1\endcsname\l@nohyphenation\relax}{}% - \csdef{#1@language}{\language=\csname l@#1\endcsname\ifluatex\directlua{polyglossia.select_language('\luatexluaescapestring{\string#1}', \the\csname l@#1\endcsname)}\fi}% + \csdef{#1@language}{% + \ifbool{xpg@hyphenation@disabled}{% + \xdef\xpg@lastlanguage{\the\csname l@#1\endcsname}% + }{% + \ifluatex% + \xpg@set@language@luatex@ii{#1}% + \fi% + \language=\csname l@#1\endcsname% + }% }% + }% \define@choicekey+[xpg@setup]{#1}{direction}[\val\nr]{LR,RL}[LR]% {\ifcase\nr\relax \togglefalse{#1@RL}% @@ -646,9 +657,13 @@ \docsvlist{#1}}% \def\common@language{% FIXME is this really needed??? - \language=\z@ - \lefthyphenmin=\tw@ - \righthyphenmin=\thr@@} + \ifbool{xpg@hyphenation@disabled}{% + \xdef\xpg@lastlanguage{\z@}% + }{% + \language=\z@ + }% + \lefthyphenmin=\tw@ + \righthyphenmin=\thr@@} \def\noextrascurrent#1{\csuse{noextras@#1}} @@ -729,7 +744,7 @@ \global\@namedef{lu@texhyphen@loaded@\the\language}{}% \directlua{polyglossia.select_language('\luatexluaescapestring{\string#1}', \the\csname l@#1\endcsname)}% \fi % - \fi % + \fi % \xpg@initial@setup% \select@@language{#1}% \ifcsundef{setRL}{}% -- cgit v1.2.3