X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fltj-stack.lua;h=cb5066483389f5f65241ec195283f03046eb7a2c;hb=a975e3129629556e88bce7547a2e632f3a83bb5b;hp=88d2a67f8a6b5fd6a9b690f5eb87299e864ad611;hpb=d89e0202e01f38714cb8b960a3e5ff931bb45491;p=luatex-ja%2Fluatexja.git diff --git a/src/ltj-stack.lua b/src/ltj-stack.lua index 88d2a67..cb50664 100644 --- a/src/ltj-stack.lua +++ b/src/ltj-stack.lua @@ -121,7 +121,7 @@ function set_stack_font(g,m,c,p) charprop_stack_table[i][m] = {} end charprop_stack_table[i][m][c] = p - if g=='global' then + 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 @@ -153,17 +153,29 @@ function set_stack_skip(g,m,sp) end end --- mode: nil iff it is called in callbacks -function get_skip_table(m, idx) - local i = charprop_stack_table[idx][m] - return i or { width = 0, stretch = 0, shrink = 0, - stretch_order = 0, shrink_order = 0 } +-- These three functions are used in ltj-jfmglue.lua. +local table_current_stack +function report_stack_level(bsl) + table_current_stack = charprop_stack_table[bsl] +end +function fast_get_skip_table(m) + return table_current_stack[m] + or { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 } +end +function fast_get_penalty_table(m,c,d) + local i = table_current_stack[m] + return (i and i[c]) or d end +-- For other situations, use the following instead: +function get_skip_table(m, idx) + return charprop_stack_table[idx][m] + 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] - if i then i=i[c] end - return i or d + return (i and i[c]) or d end + -- EOF