-- Provide enough compatibility functions to make luaotfload happy local properties = node.direct.get_properties_table() local flush = node.direct.flush_list local meta = {__gc = function(t) if t.components then flush(t.components) end end} function node.direct.getcomponents(n) local props = properties[n] return props and props.components and props.components.components end function node.direct.setcomponents(n, comp) local props = properties[n] if not props then if not comp then return end props = {components = setmetatable({components = comp}, meta)} properties[n] = props return end local props_comp = rawget(props, 'components') if props_comp then props_comp.components = comp -- Important even if nil to avoid double-free if not comp then props.components = nil end elseif not comp then else props.components = setmetatable({components = comp}, meta) end end local mlist_to_hlist = node.direct.mlist_to_hlist local todirect = node.direct.todirect local tonode = node.direct.tonode function node.mlist_to_hlist(n, ...) return tonode(mlist_to_hlist(todirect(n), ...)) end