OSDN Git Service

fix "bad argument #2 to '__index' (invalid option 'glyphmin')" error
[luatex-ja/luatexja.git] / src / ltj-setwidth.lua
index 258d3f7..1d4da31 100644 (file)
@@ -50,11 +50,10 @@ local ltjf_font_extra_info = ltjf.font_extra_info
 
 local PACKED       = luatexja.icflag_table.PACKED
 local PROCESSED    = luatexja.icflag_table.PROCESSED
-local IC_PROCESSED = luatexja.icflag_table.IC_PROCESSED
-local PROCESSED_BEGIN_FLAG = luatexja.icflag_table.PROCESSED_BEGIN_FLAG
 
 local get_pr_begin_flag
 do
+   local PROCESSED_BEGIN_FLAG = luatexja.icflag_table.PROCESSED_BEGIN_FLAG
    local floor = math.floor
    get_pr_begin_flag = function (p)
       local i = has_attr(p, attr_icflag) or 0
@@ -74,9 +73,6 @@ local call_callback = luatexbase.call_callback
 local fshift =  { down = 0, left = 0}
 
 local min, max = math.min, math.max
-local pack_rule, pack_box = node_new(id_rule), node_new(id_hlist)
-set_attr(pack_rule, attr_icflag, PACKED)
-set_attr(pack_box, attr_icflag, PACKED)
 
 -- 和文文字の位置補正(横)
 local function capsule_glyph_yoko(p, met, class, head, dir)
@@ -101,13 +97,13 @@ local function capsule_glyph_yoko(p, met, class, head, dir)
         setfield(p, 'yoffset', getfield(p, 'yoffset') - kbl - fshift.down)
         return node_next(p), head, p
       elseif ht_diff >= 0 and dp_diff >=0 then -- rule
-        local box = node_copy(pack_rule)
+        local box = node_new(id_rule)
         setfield(p, 'yoffset', getfield(p, 'yoffset') - kbl - fshift.down)
         setfield(box, 'width', 0)
         setfield(box, 'height', fheight - kbl)
         setfield(box, 'depth', fdepth + kbl)
         setfield(box, 'dir', dir)
-        --set_attr(box, attr_icflag, PACKED)
+        set_attr(box, attr_icflag, PACKED)
         set_attr(p, attr_icflag, PACKED)
         head = p and node_insert_before(head, p, box)
            or node_insert_after(head, node_tail(head), box)
@@ -121,20 +117,19 @@ local function capsule_glyph_yoko(p, met, class, head, dir)
    setfield(p, 'next', nil)
    setfield(p, 'xoffset', getfield(p, 'xoffset')
               + char_data.align*(fwidth-pwidth) - fshift.left)
-   local box = node_copy(pack_box)
+   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)
+   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
 
 -- 和文文字の位置補正(縦)
@@ -162,7 +157,7 @@ local function capsule_glyph_tate(p, met, class, head, dir)
       = getfield(p, 'xoffset') + (has_attr(p,attr_tkblshift) or 0)
    local q
    head, q = node_remove(head, p)
-   local box = node_copy(pack_box)
+   local box = node_new(id_hlist)
    setfield(box, 'width', fwidth)
    setfield(box, 'height', fheight)
    setfield(box, 'depth', fdepth)
@@ -183,6 +178,8 @@ local function capsule_glyph_tate(p, met, class, head, dir)
    setfield(ws, 'next', wm);  setfield(wm, 'next', k2);
    setfield(k2, 'next', p);   setfield(p, 'next', k3);
    setfield(k3, 'next', wr);
+
+   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
@@ -201,13 +198,14 @@ local function capsule_glyph_math(p, met, class)
       = - getfield(p, 'yoffset') + (has_attr(p,attr_ykblshift) or 0), char_data.align
    setfield(p, 'yoffset', -fshift.down)
    setfield(p, 'xoffset', getfield(p, 'xoffset') + char_data.align*(fwidth-pwidth) - fshift.left)
-   local box = node_copy(pack_box)
+   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', y_shift)
    setfield(box, 'dir', tex.mathdir)
+   set_attr(box, attr_icflag, PACKED)
    return box
 end
 luatexja.setwidth.capsule_glyph_math = capsule_glyph_math