On Tue, Sep 17, 2019 at 2:52 PM Marcel Fabian Krüger <t...@2krueger.de>
wrote:

> Hi,
>
> the node(.direct).uses_font helpers currently always return false for
> glyph nodes:
> In the implementation
>
> static int lua_nodelib_direct_uses_font(lua_State * L)
> {
>     halfword n = lua_tointeger(L,1);
>     halfword f = lua_tointeger(L,2);
>     halfword p;
>     if (type(n) == glyph_node) {
>         lua_pushboolean(L,font(n) == f);
>     } else if (type(n) == disc_node) {
>         uses_font_disc(pre_break,p,n);
>         uses_font_disc(post_break,p,n);
>         uses_font_disc(no_break,p,n);
>     }
>     /* todo: other node types */
>     lua_pushboolean(L,0);
>     return 1;
> }
>
> the actual result is first calculated, but then the last pushboolean
> pushes a `false` on top of the stack and return this false.
> It could e.g. be fixed by adding a `return 1;` at the end of the first
> if block. `disc` nodes are not affected because uses_font_disc is a
> macro containing `return`.
>
> A minimal example in plain LuaTeX:
>
> \directlua{
>   local g = node.new'glyph'
>   g.font = font.current()
>   if not node.uses_font(g, font.current()) then
>     error'This should not happen'
>   end
>   node.free(g)
> }
> \bye
>
>

hm, probably a missed else, ie

} else {
    /* todo: other node types */
    lua_pushboolean(L,0);
 }

-- 
luigi
_______________________________________________
dev-luatex mailing list
dev-luatex@ntg.nl
https://mailman.ntg.nl/mailman/listinfo/dev-luatex

Reply via email to