v.align = 'left' -- left
end
if type(v.width)~='number' then
- v.width = (jfm_dir=='tate') and 1.0
+ v.width = nil
end
if type(v.height)~='number' then
v.height = (jfm_dir=='tate') and 0.0
if v.end_adjust then
if type(v.end_adjust)~='table' then
v.end_adjust = nil
- else
+ elseif #(v.end_adjust)==0 then
+ v.end_adjust = nil
+ else
table.sort(v.end_adjust)
end
end
for j,x in pairs(v.glue) do
if v.kern[j] then defjfm_res= nil; return end
x.ratio, x[5] = (x.ratio or (x[5] and 0.5*(1+x[5]) or 0.5)), nil
- x.priority, x[4] = (x.priority or x[4] or 0), nil
+ do
+ local xp
+ xp, x[4] = (x.priority or x[4]), nil
+ if type(xp)=='table' and t.version>=2 then
+ if type(xp[1])~='number' or xp[1]<-4 or xp[1]>3 then defjfm_res=nil end -- stretch
+ if type(xp[2])~='number' or xp[2]<-4 or xp[2]>3 then defjfm_res=nil end -- shrink
+ xp = (xp[1]+4)*8+(xp[2]+4)
+ elseif xp and type(xp)~='number' then
+ defjfm_res = nil
+ else
+ xp = (xp or 0)*9+36
+ if xp<0 or xp>=64 then defjfm_res=nil end
+ end
+ x.priority = xp
+ end
x.kanjiskip_natural = norm_val(x.kanjiskip_natural)
x.kanjiskip_stretch = norm_val(x.kanjiskip_stretch)
x.kanjiskip_shrink = norm_val(x.kanjiskip_shrink)
end
update_jfm_cache = function (j,sz)
if metrics[j].size_cache[sz] then return end
- --local TEMP = node_new(id_kern)
local t = {}
metrics[j].size_cache[sz] = t
t.chars = metrics[j].chars
}
end
for k,w in pairs(v.kern) do
- local g = node_new(id_kern)
+ local g = node_new(id_kern, 1)
setfield(g, 'kern', w[1])
- setfield(g, 'subtype', 1)
set_attr(g, attr_icflag, FROM_JFM)
v[k] = {g, ratio=w[2]/sz}
end
t.zw = round(metrics[j].zw*sz)
t.zh = round(metrics[j].zh*sz)
t.size = sz
- --node_free(TEMP)
end
end
else
local ITALIC = luatexja.icflag_table.ITALIC
new_ic_kern = function()
- local g = node_new(id_kern)
- setfield(g, 'subtype', 1); set_attr(g, attr_icflag, ITALIC)
+ local g = node_new(id_kern, 1)
+ set_attr(g, attr_icflag, ITALIC)
return g
end
end