summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2012-12-10 01:31:19 +0000
committerKarl Berry <karl@freefriends.org>2012-12-10 01:31:19 +0000
commiteb3f5f9a64a4553a16273f9ff5cfe99d10f27dd8 (patch)
tree5e47c27e88cdb655ee7fefcf919ab531e8a4b757 /Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua
parent64b7e39503022a8c0ce58857cea7f25d57369757 (diff)
luatexja (9dec12)
git-svn-id: svn://tug.org/texlive/trunk@28482 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua')
-rw-r--r--Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua37
1 files changed, 22 insertions, 15 deletions
diff --git a/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua b/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua
index c7f52c93fb6..de985d59175 100644
--- a/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua
+++ b/Master/texmf-dist/tex/luatex/luatexja/ltj-stack.lua
@@ -17,7 +17,9 @@ local id_whatsit = node.id('whatsit')
local sid_user = node.subtype('user_defined')
local hmode = 118 -- in luatexref-t.pdf, this must be 127
-local charprop_stack_table={}; charprop_stack_table[0]={}
+charprop_stack_table={};
+local charprop_stack_table = charprop_stack_table
+charprop_stack_table[0]={}
-- modified from table.fastcopy
local next = next
@@ -96,14 +98,14 @@ function set_stack_table(g,m,c,p,lb,ub)
"(-1 is used for denoting `math boundary')\n" ..
'So I changed this one to zero.')
c=0
- elseif not charprop_stack_table[i][m] then
- charprop_stack_table[i][m] = {}
+ elseif not charprop_stack_table[i][c] then
+ charprop_stack_table[i][c] = {}
end
- charprop_stack_table[i][m][c] = p
+ charprop_stack_table[i][c][m] = p
if g=='global' then
for j,v in pairs(charprop_stack_table) do
- if not charprop_stack_table[j][m] then charprop_stack_table[j][m] = {} end
- charprop_stack_table[j][m][c] = p
+ if not charprop_stack_table[j][c] then charprop_stack_table[j][c] = {} end
+ charprop_stack_table[j][c][m] = p
end
end
end
@@ -117,14 +119,14 @@ function set_stack_font(g,m,c,p)
"The family number should in the range 0 .. 255.\n" ..
"I'm going to use 0 instead of that illegal family number.")
c=0
- elseif not charprop_stack_table[i][m] then
- charprop_stack_table[i][m] = {}
+ elseif not charprop_stack_table[i][c] then
+ charprop_stack_table[i][c] = {}
end
- charprop_stack_table[i][m][c] = p
+ charprop_stack_table[i][c][m] = p
if g=='global' then
for j,v in pairs(charprop_stack_table) do
- if not charprop_stack_table[j][m] then charprop_stack_table[j][m] = {} end
- charprop_stack_table[j][m][c] = p
+ if not charprop_stack_table[j][c] then charprop_stack_table[j][c] = {} end
+ charprop_stack_table[j][c][m] = p
end
end
end
@@ -163,8 +165,13 @@ function fast_get_skip_table(m)
or { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 }
end
function fast_get_penalty_table(m,c)
- local i = table_current_stack[m]
- return (i and i[c])
+ local i = table_current_stack[c]
+ return (i and i[m])
+end
+
+local empty_table = {}
+function fast_get_penalty_table_parent(c)
+ return table_current_stack[c] or empty_table
end
-- For other situations, use the following instead:
@@ -173,8 +180,8 @@ function get_skip_table(m, idx)
or { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 }
end
function get_penalty_table(m,c,d, idx)
- local i = charprop_stack_table[idx][m]
- return (i and i[c]) or d
+ local i = charprop_stack_table[idx][c]
+ return (i and i[m]) or d
end