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')
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",
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)
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