summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/polyglossia
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-06-28 21:56:49 +0000
committerKarl Berry <karl@freefriends.org>2013-06-28 21:56:49 +0000
commit0c6a78a9eafdb80c434d4e858bec827d5fc8259a (patch)
tree659a9cfca0126b74629a2db9917b93303dccad52 /Master/texmf-dist/tex/latex/polyglossia
parenta41b6fc74912fbdd819966fff48a9780288bc947 (diff)
polyglossia (28jun13)
git-svn-id: svn://tug.org/texlive/trunk@31010 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/polyglossia')
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/babelsh.def1
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf18
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf14
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua224
-rw-r--r--Master/texmf-dist/tex/latex/polyglossia/polyglossia.sty2
5 files changed, 256 insertions, 3 deletions
diff --git a/Master/texmf-dist/tex/latex/polyglossia/babelsh.def b/Master/texmf-dist/tex/latex/polyglossia/babelsh.def
index a03d7950aaa..7d14c291783 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/babelsh.def
+++ b/Master/texmf-dist/tex/latex/polyglossia/babelsh.def
@@ -63,6 +63,7 @@
\def\\{\MessageBreak}%
\PackageInfo{polyglossia}{#1}%
\endgroup}
+\fi
%
% ------------------------------------------------------------------------------
%
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf
index 21ab4a12da8..3b299b36c77 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-breton.ldf
@@ -7,13 +7,22 @@
fontsetup=true,
}
-\newXeTeXintercharclass\breton@punctthin % ! ? ;
-\newXeTeXintercharclass\breton@punctthick % :
+\ifluatex
+ \newluatexattribute\xpg@frpt
+ \directlua{polyglossia.load_frpt()}
+\else
+ \newXeTeXintercharclass\breton@punctthin % ! ? ;
+ \newXeTeXintercharclass\breton@punctthick % :
+\fi
\def\breton@punctthinspace{{\unskip\thinspace}}
\def\breton@punctthickspace{{\unskip\nobreakspace}}
\def\breton@punctuation{%
+ \ifluatex
+ \global\xpg@frpt=1\relax
+ \directlua{polyglossia.activate_frpt()}%
+ \else
\XeTeXinterchartokenstate=1%
\XeTeXcharclass `\! \breton@punctthin
\XeTeXcharclass `\? \breton@punctthin
@@ -21,14 +30,19 @@
\XeTeXcharclass `\: \breton@punctthick
\XeTeXinterchartoks \z@ \breton@punctthin = \breton@punctthinspace
\XeTeXinterchartoks \z@ \breton@punctthick = \breton@punctthickspace
+ \fi
}
\def\nobreton@punctuation{%
+ \ifluatex
+ \global\xpg@frpt=0\relax
+ \else
\XeTeXcharclass `\! \z@
\XeTeXcharclass `\? \z@
\XeTeXcharclass `\; \z@
\XeTeXcharclass `\: \z@
\XeTeXinterchartokenstate=0%
+ \fi
}
diff --git a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf
index 6f40cf2cd3d..b9d130f2ba9 100644
--- a/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf
+++ b/Master/texmf-dist/tex/latex/polyglossia/gloss-turkish.ldf
@@ -30,6 +30,17 @@
\XeTeXinterchartokenstate=0%
}
+\def\turkish@casing{%
+ \message{\string\turkish@casing\space called.}
+ \lccode`\I=`\ı
+ \uccode`\i=`\İ
+}
+
+\def\noturkish@casing{%
+ \lccode`\I=`\i
+ \uccode`\i=`\I
+}
+
\def\captionsturkish{%
\def\prefacename{Önsöz}%
\def\refname{Kaynaklar}%
@@ -69,14 +80,17 @@
\def\noextras@turkish{%
\noturkish@punctuation%
+ \noturkish@casing%
}
\def\blockextras@turkish{%
\turkish@punctuation%
+ \turkish@casing%
}
\def\inlineextras@turkish{%
\turkish@punctuation%
+ \turkish@casing%
}
\endinput
diff --git a/Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua
new file mode 100644
index 00000000000..56af011152a
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/polyglossia/polyglossia-brpt.lua
@@ -0,0 +1,224 @@
+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 08a05e72028..7e5c3251f61 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/05/28 v1.33.3
+\ProvidesPackage{polyglossia}[2013/06/27 v1.33.4
Babel replacement for XeLaTeX and LuaTeX]
\RequirePackage{etoolbox}
\RequirePackage{makecmds}