X-Git-Url: http://git.osdn.jp/view?a=blobdiff_plain;f=src%2Fltj-lineskip.lua;h=f5c439e559dd4fe83835990e5925e673f0807149;hb=3fae82d64b193c794fdf2f1262d80bddc98ce5a8;hp=2b1d787b6a41a581e1069b6623da6a7064b4ae79;hpb=a922e6a6e042c3f797ecf2e122bf0e2bd9db4f86;p=luatex-ja%2Fluatexja.git diff --git a/src/ltj-lineskip.lua b/src/ltj-lineskip.lua index 2b1d787..f5c439e 100644 --- a/src/ltj-lineskip.lua +++ b/src/ltj-lineskip.lua @@ -8,6 +8,7 @@ luatexja.lineskip = luatexja.lineskip or {} local to_direct = node.direct.todirect local ltjl = luatexja.lineskip local id_glue = node.id('glue') +local id_penalty = node.id('penalty') local id_hlist = node.id('hlist') local setfield = node.direct.setfield local getfield = node.direct.getfield @@ -55,7 +56,9 @@ do local p, n = node_prev(x), node_next(x) if p then local pid = getid(p) - while (12<=pid) and (pid<=14) and node_prev(p) do p = node_prev(p); pid = getid(p) end + while (id_glue<=pid) and (pid<=id_penalty) and node_prev(p) do + p = node_prev(p); pid = getid(p) + end if pid==id_hlist and getid(n)==id_hlist then local normal = bw - getfield(p, 'depth') - getfield(n, 'height') local lmin, adj = ltj_profiler(p, n, false, bw) @@ -71,6 +74,7 @@ do end do + local p_dummy = ltjl.p_dummy local make_dir_whatsit = luatexja.direction.make_dir_whatsit local get_dir_count = luatexja.direction.get_dir_count local node_write = node.direct.write @@ -85,8 +89,10 @@ do - getfield(new_b, mirrored and 'depth' or 'height') local lmin, adj = nil, 0 local tail = to_direct(tex.nest[tex.nest.ptr].tail) - if tail and getid(tail)==id_glue and getsubtype(tail)==3 then - tail = node_prev(tail) + if p_dummy~=ltj_profiler then + while tail and (id_glue<=getid(tail)) and (getid(tail)<=id_penalty) do + tail = node_prev(tail) + end end if tail then if getid(tail)==id_hlist and getid(new_b)==id_hlist then