X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fltj-stack.lua;h=21f71d6aa12bb443f8a1ffb363e50f693f71a027;hb=c35bc9236b8c249d3089a824fe197d0d1cde7e78;hp=c7f52c93fb6ef9ac27737b3d39b1e27fabe02240;hpb=1f5c9350bfad6787dcee645c79bb8822854e35fb;p=luatex-ja%2Fluatexja.git diff --git a/src/ltj-stack.lua b/src/ltj-stack.lua index c7f52c9..21f71d6 100644 --- a/src/ltj-stack.lua +++ b/src/ltj-stack.lua @@ -96,14 +96,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 +117,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 +163,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 +178,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