OSDN Git Service

Bug fix of commit a3c13e3f.
authorHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 19 Aug 2012 02:15:53 +0000 (11:15 +0900)
committerHironori Kitagawa <h_kitagawa2001@yahoo.co.jp>
Sun, 19 Aug 2012 02:15:53 +0000 (11:15 +0900)
src/ltj-setwidth.lua

index 677c1fc..ef4d405 100644 (file)
@@ -22,7 +22,6 @@ local set_attr = node.set_attribute
 local node_insert_before = node.insert_before
 local node_insert_after = node.insert_after
 local round = tex.round
-local floor = math.floor
 
 
 local id_glyph = node.id('glyph')
@@ -46,6 +45,15 @@ local PROCESSED = 8
 local IC_PROCESSED = 9
 local PROCESSED_BEGIN_FLAG = 16
 
+do
+   local floor = math.floor
+   function get_pr_begin_flag(p)
+      return  floor((has_attr(p, attr_icflag) or 0)
+                 /PROCESSED_BEGIN_FLAG)*PROCESSED_BEGIN_FLAG
+   end
+end
+local get_pr_begin_flag = get_pr_begin_flag
+
 head = nil
 
 luatexbase.create_callback("luatexja.set_width", "data", 
@@ -77,15 +85,13 @@ function capsule_glyph(p, dir, mode, met, class)
       box.width, box.height, box.depth = fwidth, fheight, fdepth
       box.head, box.shift, box.dir = p, y_shift, (dir or 'TLT')
       box.glue_set, box.glue_order = 0, 0
-      set_attr(box, attr_icflag, PACKED
-               + floor(has_attr(p, attr_icflag)/PROCESSED_BEGIN_FLAG)*PROCESSED_BEGIN_FLAG)
+      set_attr(box, attr_icflag, PACKED + get_pr_begin_flag(p))
       --set_attr(box, attr_uniqid, has_attr(p, attr_uniqid) or 0)
       head = q and node_insert_before(head, q, box) 
                or node_insert_after(head, node_tail(head), box)
       return q
    else
-      set_attr(p, attr_icflag, PROCESSED
-               + floor(has_attr(p, attr_icflag)/PROCESSED_BEGIN_FLAG)*PROCESSED_BEGIN_FLAG)
+      set_attr(p, attr_icflag, PROCESSED + get_pr_begin_flag(p))
       p.xoffset = p.xoffset - fshift.left
       p.yoffset = p.yoffset - (has_attr(p, attr_ykblshift) or 0) - fshift.down
       return node_next(p)
@@ -102,9 +108,7 @@ function set_ja_width(ahead, dir)
            p = capsule_glyph(p, dir, false, ltjf_font_metric_table[p.font], 
                              has_attr(p, attr_jchar_class))
         else
-           set_attr(p, attr_icflag, PROCESSED 
-                     + floor((has_attr(p, attr_icflag) or 0)
-                          /PROCESSED_BEGIN_FLAG)*PROCESSED_BEGIN_FLAG) 
+           set_attr(p, attr_icflag, PROCESSED + get_pr_begin_flag(p))
            p.yoffset = p.yoffset - (has_attr(p,attr_yablshift) or 0); p = node_next(p)
         end
       elseif p.id==id_math then