end
end
do
- local setfield = node.direct.setfield
+ local dnode = node.direct
+ local setfield = dnode.setfield
luatexja.setglue = node.direct.setglue or
function(g,w,st,sh,sto,sho)
setfield(g,'width', w or 0); setfield(g,'stretch',st or 0); setfield(g,'shrink', sh or 0)
setfield(g,'stretch_order',sto or 0)
setfield(g,'shrink_order', sho or 0)
end
- local getfield = node.direct.getfield
+ for _,v in pairs({'char', 'depth', 'dir', 'font', 'height', 'kern', 'lang', 'next',
+ 'nucleus', 'offsets', 'penalty', 'shift', 'sub', 'subtype', 'sup'}) do
+ if not dnode['set'..v] then
+ dnode['set'..v] = function(n, ...) return setfield(n, v, ...) end
+ end
+ end
+ local getfield = dnode.getfield
luatexja.getglue = node.direct.getglue or
function(g)
return getfield(g,'width'), getfield(g,'stretch'), getfield(g,'shrink'),
getfield(g,'stretch_order'), getfield(g,'shrink_order')
end
+ for _,v in pairs({'box', 'components', 'char', 'depth', 'font', 'height', 'kern', 'lang',
+ 'list', 'next', 'nucleus', 'offsets', 'penalty', 'prev', 'shift', 'sub',
+ 'subtype', 'sup', 'whd', 'width', 'dir'}) do
+ if not dnode['get'..v] then
+ dnode['get'..v] = function(n, ...) return getfield(n, v, ...) end
+ end
+ end
end
+
--- 以下は全ファイルで共有される定数
local icflag_table = {}
luatexja.icflag_table = icflag_table
-- EXT: print parameters that don't need arguments
do
local tex_getattr = tex.getattribute
- local function getattr(a)
- local r = tex_getattr(a)
- return (r==-0x7FFFFFFF) and 0 or r
+ local function getattr(a, d)
+ local r = tex_getattr(a); d = d or 0
+ return (r==-0x7FFFFFFF) and d or r
end
luatexja.unary_pars = {
yalbaselineshift = function(t)
return ltjs.get_stack_table(stack_ind.JWP, 0, t)
end,
autospacing = function(t)
- return getattr('ltj@autospc')
+ return getattr('ltj@autospc', 1)
end,
autoxspacing = function(t)
- return getattr('ltj@autoxspc')
+ return getattr('ltj@autoxspc', 1)
end,
differentjfm = function(t)
local f, r = luatexja.jfmglue.diffmet_rule, '???'
c=0 -- external range 217 == internal range 0
elseif c==31*ltjc.ATTR_RANGE then c=0
end
- -- 負の値は <U+0080 の文字の文字範囲,として出てくる.この時はいつも欧文文字なので 1 を返す
- return (c<0) and 1 or ltjc.get_range_setting(c)
+ -- 負の値は <U+0080 の文字の文字範囲,として出てくる.この時はいつも欧文文字なので 1 を返す
+ if c<0 then return 1 else return (ltjc.get_range_setting(c)==0) and 0 or 1 end
end,
prebreakpenalty = function(c, t)
return ltjs.get_stack_table(stack_ind.PRE + ltjb.in_unicode(c, true), 0, t)
else
t[0] = {}; tex.print(cat_lp, '\\input ltj-kinsoku.tex\\relax')
end
- luatexja.load_kinsoku=nil
+ luatexja.load_kinsoku=nil; ltjs.charprop_stack_table = nil
end
end