Thank you for your detailed information.
2011/10/25 Hans Hagen
On 25-10-2011 14:09, Lutz Haseloff wrote:
Hi all,
some months ago I printed the name of the current font with following code:
\starttext The current font is: \ctxlua{tex.print(font.getfont(font.current()).fullname)}. \stoptext
Now I get an error message:
! LuaTeX error<main ctx instance>:1: no string to print stack traceback: [C]: in function 'print' <main ctx instance>:1: in main chunk. l.2 ...int(font.getfont(font.current()).fullname)} . ?
What is the right way now? (didn't find any news in functionref.pdf or luatexref-t.pdf)
In order of efficiency (most efficient on top):
\starttext
\ctxlua{tex.print(fonts.hashes.properties[font.current()].fullname)}
\ctxlua{tex.print(fonts.hashes.identifiers[font.current()].properties.fullname)}
\ctxlua{tex.print(font.getfont(font.current()).properties.fullname)}
\stoptext
the font.getfont returns the table that tex gets passed and in context that table gets normalized, in the sense that variables are collected in 'properties' and 'parameters'
in general, don't use font.getfont() in context as in the worst case it will rebuild a lua table at the tex
in the current beta you can run s-fnt-35.mkiv to see how this works
(this file will be renamed in a next beta)
Hans
----------------------------------------------------------------- Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | voip: 087 875 68 74 | www.pragma-ade.com | www.pragma-pod.nl -----------------------------------------------------------------