local node_traverse = Dnode.traverse
local node_new = Dnode.new
-local node_remove = luatexja.Dnode_remove -- Dnode.remove
+local node_copy = Dnode.copy
+local node_remove = Dnode.remove
local node_tail = Dnode.tail
local node_next = (Dnode ~= node) and Dnode.getnext or node.next
local has_attr = Dnode.has_attribute
local sid_save = node.subtype('pdf_save')
local sid_restore = node.subtype('pdf_restore')
local sid_matrix = node.subtype('pdf_setmatrix')
-local dir_tate = 3
-local dir_yoko = 4
-local DIR = luatexja.stack_table_index.DIR
+local dir_tate = luatexja.dir_table.dir_tate
local attr_jchar_class = luatexbase.attributes['ltj@charclass']
local attr_curjfnt = luatexbase.attributes['ltj@curjfnt']
local attr_icflag = luatexbase.attributes['ltj@icflag']
local ltjf_font_metric_table = ltjf.font_metric_table
+local ltjf_get_vert_glyph = ltjf.get_vert_glyph
local PACKED = luatexja.icflag_table.PACKED
local PROCESSED = luatexja.icflag_table.PROCESSED
fshift = call_callback("luatexja.set_width", fshift, met, class)
local fheight, fdepth = char_data.height, char_data.depth
- setfield(p, 'char', ltjd.get_vert_glyph(getfont(p), getchar(p)))
+ setfield(p, 'char', ltjf_get_vert_glyph(getfont(p), getchar(p)))
local y_shift
= - getfield(p, 'yoffset') + (has_attr(p,attr_tkblshift) or 0)
setfield(k1, 'kern',
getfield(p, 'xoffset') + ascent
+ char_data.align*(fwidth-pwidth) - fshift.left)
+ setfield(p, 'xoffset', -fshift.down)
+ setfield(p, 'yoffset', 0)
local ws = node_new(id_whatsit, sid_save)
local wm = node_new(id_whatsit, sid_matrix)
setfield(wm, 'data', '0 1 -1 0')
- local k2 = node_new(id_kern)
- setfield(k2, 'kern', -fshift.down - fdepth)
- local k3 = node_new(id_kern)
- setfield(k3, 'kern', - getfield(p, 'width') +fshift.down + fdepth)
+ local pwnh = - 0.5*getfield(p, 'width')
+ local k2 = node_new(id_kern); setfield(k2, 'kern', - 0.5*getfield(p, 'width'))
+ local k3 = node_copy(k2)
local wr = node_new(id_whatsit, sid_restore)
setfield(box, 'head', k1); setfield(k1, 'next', ws)
setfield(ws, 'next', wm); setfield(wm, 'next', k2);
end
luatexja.setwidth.capsule_glyph_math = capsule_glyph_math
+local tex_set_attr = tex.setattribute
function luatexja.setwidth.set_ja_width(ahead, adir)
local p = ahead; head = p; dir = adir or 'TLT'
local m = false -- is in math mode?
p = capsule_glyph(p, ltjf_font_metric_table[pf],
has_attr(p, attr_jchar_class))
else
+ -- TODO: neg. offset does not increase depth
+ --local d = getfield(p, 'yoffset') - (has_attr(p,attr_ablshift) or 0)
set_attr(p, attr_icflag, PROCESSED)
setfield(p, 'yoffset',
getfield(p, 'yoffset') - (has_attr(p,attr_ablshift) or 0))
end
end
-- adjust attr_icflag
- tex.setattribute('global', attr_icflag, 0)
+ tex_set_attr('global', attr_icflag, 0)
return head
end