Hi Patrick!
···
Hi,
reading the chapter 8.2 in the manual, I wonder how to call getnext and its ilk. Is this used like node.getnext()?
Yes, but they operate on integer references which you obtain by calling node.direct.todirect() on the node you start out with: local direct = node.direct local getnext = direct.getnext local todirect = direct.todirect local getid = direct.getid local getfield = direct.getfield local setfield = direct.setfield local glyph_node = node.id "glyph" local asciiA, asciia = string.byte "A", string.byte "a" local r13 = function (chr) local d d = chr - asciiA if 0 <= d and d <= 25 then return (d + 13) % 26 + asciiA end d = chr - asciia if 0 <= d and d <= 25 then return (d + 13) % 26 + asciia end return chr end local filter = function (hd) local cur = todirect (hd) ---> node -> int while cur do if getid (cur) == glyph_node then ---> if cur.id == glyph_node local chr = getfield (cur, "char") ---> chr = cur.char setfield (cur, "char", r13 (chr)) ---> cur.char = r13 (cur.char) end cur = getnext (cur) ---> cur = cur.next end return hd ---> return first node end callback.register ("pre_linebreak_filter", filter) To my knowledge, the correspondence between the functions under node.* and node.direct.* is most obvious in node-nut.lua: http://git.contextgarden.net/context/context/blob/master/tex/context/base/no... @Hans: Considering that node.direct has been part of the master branch for some time and the new model is used in Context without users reporting segfaults, could you give an ETA on when the generic fontloader will benefit from it? Best, Philipp