From: Hironori Kitagawa Date: Wed, 17 Aug 2022 08:44:17 +0000 (+0900) Subject: ltj-stack.lua: use getglue() X-Git-Tag: 20221002.0~12 X-Git-Url: http://git.osdn.jp/view?a=commitdiff_plain;h=0c148464df4d78c8edeef6aaf560fdf8805dff68;p=luatex-ja%2Fluatexja.git ltj-stack.lua: use getglue() --- diff --git a/src/ltj-adjust.lua b/src/ltj-adjust.lua index eb1cecc..52f60a9 100644 --- a/src/ltj-adjust.lua +++ b/src/ltj-adjust.lua @@ -398,7 +398,6 @@ local adjust_width do local myaw_step1, myaw_step2, myaw_step1_last local dummy = function(p,t,n) return t, false end - local ltjs_fast_get_stack_skip = ltjs.fast_get_stack_skip function adjust_width(head) if not head then return head end local last_p diff --git a/src/ltj-charrange.lua b/src/ltj-charrange.lua index e4a2a8c..1f7c94f 100644 --- a/src/ltj-charrange.lua +++ b/src/ltj-charrange.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.charrange', - date = '2020-08-17', + date = '2022-08-17', description = 'Handling the range of Japanese characters', }) luatexja.charrange = {} diff --git a/src/ltj-stack.lua b/src/ltj-stack.lua index a0cd2e2..c9458ec 100644 --- a/src/ltj-stack.lua +++ b/src/ltj-stack.lua @@ -3,7 +3,7 @@ -- luatexbase.provides_module({ name = 'luatexja.stack', - date = '2020-07-30', + date = '2022-08-17', description = 'LuaTeX-ja stack system', }) luatexja.stack = {} @@ -20,9 +20,11 @@ local STCK = luatexja.userid_table.STCK local fastcopy = table.fastcopy local setcount, getcount = tex.setcount, tex.getcount local scan_int, scan_keyword = token.scan_int, token.scan_keyword +local tex_nest = tex.nest ltjs.hmode = 0 -- dummy local charprop_stack_table={}; + ltjs.charprop_stack_table = charprop_stack_table charprop_stack_table[0]={} @@ -41,7 +43,7 @@ local function get_stack_level() charprop_stack_table[i] = fastcopy(charprop_stack_table[i-1]) setcount('ltj@@stack', i) if gd~=0 then tex.globaldefs = gd end - if tex.nest[tex.nest.ptr].mode == -ltjs.hmode then -- rest. hmode のみ + if tex_nest[tex_nest.ptr].mode == -ltjs.hmode then -- rest. hmode のみ local g = node_new(id_whatsit, sid_user) g.user_id=STCK; g.type=100; g.value=j; node.write(g) end @@ -54,9 +56,7 @@ local function set_stack_table(m, p) local i = get_stack_level() charprop_stack_table[i][m] = p if luatexja.isglobal=='global' then - for j,v in pairs(charprop_stack_table) do - charprop_stack_table[j][m] = p - end + for j,v in pairs(charprop_stack_table) do v[m] = p end end end ltjs.set_stack_table = set_stack_table @@ -90,25 +90,21 @@ function ltjs.set_stack_font(m,c,p) end -- EXT: sp: glue_spec +local getglue = node.getglue function ltjs.set_stack_skip(m,sp) local i = get_stack_level() if not sp then return end if not charprop_stack_table[i][m] then charprop_stack_table[i][m] = {} end - charprop_stack_table[i][m].width = sp.width - charprop_stack_table[i][m].stretch = sp.stretch - charprop_stack_table[i][m].shrink = sp.shrink - charprop_stack_table[i][m].stretch_order = sp.stretch_order - charprop_stack_table[i][m].shrink_order = sp.shrink_order + local w,st,sh,sto,sho = getglue(sp) + local c = charprop_stack_table[i][m] + c.width, c.stretch, c.shrink, c.stretch_order, c.shrink_order = w, st, sh, sto, sho if luatexja.isglobal=='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].width = sp.width - charprop_stack_table[j][m].stretch = sp.stretch - charprop_stack_table[j][m].shrink = sp.shrink - charprop_stack_table[j][m].stretch_order = sp.stretch_order - charprop_stack_table[j][m].shrink_order = sp.shrink_order + if not v[m] then v[m] = {} end + local c = v[m] + c.width, c.stretch, c.shrink, c.stretch_order, c.shrink_order = w, st, sh, sto, sho end end end @@ -119,23 +115,21 @@ local orig_char_table = {} ltjs.orig_char_table = orig_char_table ltjs.list_dir = nil -- dummy ltjs.table_current_stack = nil -- dummy +local dummy_skip_table = { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 } function ltjs.report_stack_level(bsl) ltjs.table_current_stack = charprop_stack_table[bsl] return bsl end function ltjs.fast_get_stack_skip(m) - return ltjs.table_current_stack[m] - or { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 } + return ltjs.table_current_stack[m] or dummy_skip_table end -- For other situations, use the following instead: function ltjs.get_stack_skip(m, idx) - return charprop_stack_table[idx][m] - or { width = 0, stretch = 0, shrink = 0, stretch_order = 0, shrink_order = 0 } + return charprop_stack_table[idx][m] or dummy_skip_table end function ltjs.get_stack_table(mc, d, idx) - local i = charprop_stack_table[idx][mc] - return i or d + return charprop_stack_table[idx][mc] or d end diff --git a/src/luatexja.lua b/src/luatexja.lua index b2561d7..6247c23 100644 --- a/src/luatexja.lua +++ b/src/luatexja.lua @@ -406,7 +406,7 @@ do else t[0] = {}; tex.print(cat_lp, '\\input ltj-kinsoku.tex\\relax') end - luatexja.load_kinsoku=nil + luatexja.load_kinsoku=nil; ltjs.charprop_stack_table = nil end end