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
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)
local subtables = {}
if ft.specification then
for feat_name,v in pairs(ft.specification.features.normal) do
- if v==true then
+ if v==true and ft.resources then
for _,i in pairs(ft.resources.sequences) do
- if i.order[1]== feat_name and i.type == 'gpos_single' then
+ if i.order[1]== feat_name and i.type == 'gpos_single' and type(i.subtables)=='table' then
for _,st in pairs(i.subtables) do
subtables[st] = true
end
luatexbase.add_to_callback(
'luaotfload.patch_font',
function (tfmdata)
- if tfmdata.cidinfo then
- local rd = ltjr_prepare_cid_font(tfmdata.cidinfo.registry, tfmdata.cidinfo.ordering)
+ local cidinfo = tfmdata.cidinfo or tfmdata.resources.cidinfo
+ if cidinfo and cidinfo.registry and cidinfo.ordering then
+ local rd = ltjr_prepare_cid_font(cidinfo.registry, cidinfo.ordering)
if rd then
local ru, rc = rd.resources.unicodes, rd.characters
for i,v in pairs(tfmdata.characters) do