OSDN Git Service

last commit contains a bug; lp may be nil
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 13 Jan 2015 12:24:23 +0000 (21:24 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Tue, 13 Jan 2015 12:24:23 +0000 (21:24 +0900)
src/ltj-jfmglue.lua
src/ltj-setwidth.lua

index 62af57f..1cd7c98 100644 (file)
@@ -539,6 +539,7 @@ function calc_np(last, lp)
         if k then return lp end
       end
    end
+   Np=nil
 end
 end
 
@@ -1101,10 +1102,10 @@ function main(ahead, mode, dir)
    if not ahead then return ahead end
    head = ahead;
    local lp, last, par_indented = init_var(mode,dir)
-   lp = calc_np(last,lp)
+   lp = calc_np(last, lp)
    if lp then
       handle_list_head(par_indented)
-      for lp in calc_np, last, lp do
+      lp = calc_np(last,lp); while Np do
         adjust_nq();
         local pid, pm = Np.id, Np.met
         -- 挿入部
@@ -1117,6 +1118,7 @@ function main(ahead, mode, dir)
            if Nq.id==id_hlist then handle_nq_ja_hlist()
            else handle_nq_jachar() end
         end
+        lp = calc_np(last,lp)
       end
       handle_list_tail(mode)
    end
index 0a5c678..99c840e 100644 (file)
@@ -87,7 +87,6 @@ local function capsule_glyph_yoko(p, met, class, head, dir)
    local fheight, fdepth = char_data.height, char_data.depth
    local kbl = has_attr(p, attr_ykblshift) or 0
    --
-   local need_hbox
    if pwidth==fwidth then
       -- 補正後glyph node は ht: p.height - kbl - down, dp: p.depth + min(0, kbl+down) を持つ
       -- 設定されるべき寸法: ht: fheight - kbl, dp: fdepth + kbl
@@ -110,33 +109,27 @@ local function capsule_glyph_yoko(p, met, class, head, dir)
         head = p and node_insert_before(head, p, box)
            or node_insert_after(head, node_tail(head), box)
         return node_next(p), head, p, box
-      else
-        need_hbox = true
       end
-   else
-      need_hbox = true
    end
 
-   if need_hbox then
-      local q
-      head, q = node_remove(head, p)
-      local box = node_new(id_hlist)
-      setfield(p, 'yoffset', getfield(p, 'yoffset') -fshift.down);
-      setfield(p, 'next', nil)
-      setfield(p, 'xoffset', getfield(p, 'xoffset')
-                 + char_data.align*(fwidth-pwidth) - fshift.left)
-      local box = node_new(id_hlist)
-      setfield(box, 'width', fwidth)
-      setfield(box, 'height', fheight)
-      setfield(box, 'depth', fdepth)
-      setfield(box, 'head', p)
-      setfield(box, 'shift', kbl)
-      setfield(box, 'dir', dir)
-      set_attr(box, attr_icflag, PACKED)
-      head = q and node_insert_before(head, q, box)
-               or node_insert_after(head, node_tail(head), box)
-      return q, head, box
-   end
+   local q
+   head, q = node_remove(head, p)
+   local box = node_new(id_hlist)
+   setfield(p, 'yoffset', getfield(p, 'yoffset') -fshift.down);
+   setfield(p, 'next', nil)
+   setfield(p, 'xoffset', getfield(p, 'xoffset')
+              + char_data.align*(fwidth-pwidth) - fshift.left)
+   local box = node_new(id_hlist)
+   setfield(box, 'width', fwidth)
+   setfield(box, 'height', fheight)
+   setfield(box, 'depth', fdepth)
+   setfield(box, 'head', p)
+   setfield(box, 'shift', kbl)
+   setfield(box, 'dir', dir)
+   set_attr(box, attr_icflag, PACKED)
+   head = q and node_insert_before(head, q, box)
+      or node_insert_after(head, node_tail(head), box)
+   return q, head, box
 end
 
 luatexja.setwidth.capsule_glyph_yoko = capsule_glyph_yoko