--
luatexbase.provides_module({
name = 'luatexja.ruby',
- date = '2015/09/18',
+ date = '2017/05/05',
description = 'Ruby annotation',
})
module('luatexja.ruby', package.seeall)
local hic = has_attr(hx, attr_icflag)
if (hic == KANJI_SKIP) or (hic == KANJI_SKIP_JFM)
or (hic == XKANJI_SKIP) or (hic == XKANJI_SKIP_JFM)
- or ((hic<=FROM_JFM+2) and (hic>=FROM_JFM-2)) then
+ or ((hic<=FROM_JFM+63) and (hic>=FROM_JFM)) then
-- この 5 種類の空白をのばす
if getid(hx) == id_kern then
local k = node_new(id_glue)
h = insert_after(h, hx, k);
h = node_remove(h, hx); node_free(hx); hx = k
else -- glue
- setglue(hx, getfield(hx, 'width'), round(middle*65536), 0,
+ setglue(hx, getfield(hx, 'width'), round(middle*65536), 0,
2, 0)
end
end
setfield(rt, 'head', nil); node_free(rt);
end
end
- local a, k = node_new(id_rule), node_new(id_kern)
+ local a, k = node_new(id_rule), node_new(id_kern, 1)
setfield(a, 'width', 0); setfield(a, 'height', 0)
setfield(a, 'depth', 0); setfield(k, 'kern', rgap)
insert_after(r, r, a); insert_after(r, a, k);
a = node.direct.vpack(r); setfield(a, 'shift', 0)
set_attr(a, attr_ruby, post_intrusion)
if rsmash or getfield(a, 'height')<getfield(p, 'height') then
- local k = node_new(id_kern)
+ local k = node_new(id_kern, 1)
setfield(k, 'kern', -getfield(a, 'height')+getfield(p, 'height'))
setfield(a, 'head', k); insert_before(r, r, k)
setfield(a, 'height', getfield(p, 'height'))
----------------------------------------------------------------
do
local RIPRE = luatexja.stack_table_index.RIPRE
- local function whatsit_callback(Np, lp, Nq, bsl)
+ local function whatsit_callback(Np, lp, Nq)
if Np.nuc then return Np
- elseif getfield(lp, 'user_id') == RUBY_PRE then
+ elseif getfield(lp, 'user_id') == RUBY_PRE then
Np.first, Np.nuc, Np.last = lp, lp, lp
local lpv = getfield(lp, 'value')
local x = node_next(node_next(lpv))
set_attr(lpv, attr_ruby_maxprep, 0)
end
return Np
+ else
+ return Np
end
end
luatexbase.add_to_callback("luatexja.jfmglue.whatsit_getinfo", whatsit_callback,