-local function suppress_hyphenate_ja(head)
- local non_math, p = true, head
- wt = {}
- while p do
- local pid = p.id
- if pid == id_glyph then
- if (has_attr(p, attr_icflag) or 0)<=0 and ltjc_is_ucs_in_japanese_char(p) then
- p.font = has_attr(p, attr_curjfnt) or p.font
- p.subtype = floor(p.subtype*0.5)*2
- set_attr(p, attr_orig_char, p.char)
- end
- elseif pid == id_math then
- p = node_next(p) -- skip math on
- while p and p.id~=id_math do p = node_next(p) end
- elseif pid == id_whatsit and p.subtype==sid_user and p.user_id==STCK then
+ local suppress_hyphenate_ja_aux = {}
+ suppress_hyphenate_ja_aux[id_glyph] = function(p)
+ if (has_attr(p, attr_icflag) or 0)<=0 and is_ucs_in_japanese_char(p) then
+ local pc = getchar(p)
+ local pf = ltjf_replace_altfont(has_attr(p, attr_curjfnt) or getfont(p), pc)
+ setfield(p, 'font', pf); set_attr(p, attr_curjfnt, pf)
+ setfield(p, 'subtype', floor(getsubtype(p)*0.5)*2)
+ set_attr(p, attr_orig_char, pc)
+ end
+ return p
+ end
+ suppress_hyphenate_ja_aux[id_math] = function(p) return node_end_of_math(node_next(p)) end
+ suppress_hyphenate_ja_aux[id_whatsit] = function(p)
+ if getsubtype(p)==sid_user and getfield(p, 'user_id')==STCK then