Re: [NTG-context] error calling font.getfont() on certain fonts
On 3/28/2013 6:41 PM, Philipp Gesang wrote: Hi all, I get an error when I run this code: \ctxlua{font.getfont( font.current() )} (Complete example below.) Oddly, whether or not this fails depends on the font. The issue does occur with both today’s beta and Tex Live. The error message is error: .../context/tex/texmf-context/tex/context/base/node-inj.lua:97: attempt to perform arithmetic on local 'factor' (a nil value) At the same time, in Plain the equivalent code works fine for all fonts. Bug or feature? it's a side effect ... it looks like font.getfont operates on the table passed to tex and when you request it it probably fills in some data (like parameters) thereby overloading / wiping out existing stuff so after that call the data structure as context uses (and needs) it is messed up add this after the definition of definers.read(specification,size,id) and it will probably work ok function font.getfont(id) return fontdata[id] -- otherwise issues end (I'll add a similar overload someplace else.) Best regards Philipp %% working fonts: %\setupbodyfont[iwona] %\setupbodyfont[computer-modern-unicode] %\setupbodyfont[antykwa-poltawskiego] %% ... ? %% not working: \setupbodyfont[modern] %\setupbodyfont[antykwa] %\setupbodyfont[termes] %\setupbodyfont[pagella] %\setupbodyfont[bonum] %% ... ? \starttext foo \ctxlua{font.getfont( font.current() )} bar \stoptext in context you can try this: \startluacode function font.getfont(id) return fonts.hashes.identifiers[id] end \stopluacode \starttext foo \ctxlua{inspect(font.getfont( font.current()).parameters )} bar \stoptext if you comment the function overload you see the difference 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 - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] error calling font.getfont() on certain fonts
···date: 2013-03-29, Friday···from: Hans Hagen··· On 3/28/2013 6:41 PM, Philipp Gesang wrote: Hi all, I get an error when I run this code: \ctxlua{font.getfont( font.current() )} (Complete example below.) Oddly, whether or not this fails depends on the font. The issue does occur with both today’s beta and Tex Live. The error message is error: .../context/tex/texmf-context/tex/context/base/node-inj.lua:97: attempt to perform arithmetic on local 'factor' (a nil value) At the same time, in Plain the equivalent code works fine for all fonts. Bug or feature? it's a side effect ... it looks like font.getfont operates on the table passed to tex and when you request it it probably fills in some data (like parameters) thereby overloading / wiping out existing stuff so after that call the data structure as context uses (and needs) it is messed up I just read that in the manual: Note that at the moment, each access to the font.fonts or call to font.getfont creates a lua table for the whole font. This process can be quite slow. In a later version of LuaTEX, this interface will change (it will start using userdata objects instead of actual tables). add this after the definition of definers.read(specification,size,id) and it will probably work ok function font.getfont(id) return fontdata[id] -- otherwise issues end (I'll add a similar overload someplace else.) Great! Looking forward to the next update. in context you can try this: \startluacode function font.getfont(id) return fonts.hashes.identifiers[id] end \stopluacode \starttext foo \ctxlua{inspect(font.getfont( font.current()).parameters )} bar \stoptext if you comment the function overload you see the difference Compared to Plain, Context adds a lot to the “.parameters” table. Sadly, writing to it doesn’t appear to change anything … Philipp -- () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments pgpNBXV1Ijhmi.pgp Description: PGP signature ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] error calling font.getfont() on certain fonts
On 3/29/2013 4:29 PM, Philipp Gesang wrote: I just read that in the manual: Note that at the moment, each access to the font.fonts or call to font.getfont creates a lua table for the whole font. This process can be quite slow. In a later version of LuaTEX, this interface will change (it will start using userdata objects instead of actual tables). even then it's of not much use for context as we have more data and keep that data at the lua end so font.getfont has no benefits then Compared to Plain, Context adds a lot to the “.parameters” table. Sadly, writing to it doesn’t appear to change anything … well, why would you .. the font is already passed to tex and you cannot change that frozen state (imagine: what would a change in width of a char mean halfway? it woul dnot work well with the backend) ... what would you like to change? 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 - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] error calling font.getfont() on certain fonts
···date: 2013-03-29, Friday···from: Hans Hagen··· On 3/29/2013 4:29 PM, Philipp Gesang wrote: I just read that in the manual: Note that at the moment, each access to the font.fonts or call to font.getfont creates a lua table for the whole font. This process can be quite slow. In a later version of LuaTEX, this interface will change (it will start using userdata objects instead of actual tables). even then it's of not much use for context as we have more data and keep that data at the lua end so font.getfont has no benefits then For my purpose the benefit is that I can access some info about the font with the same code in all three formats. Compared to Plain, Context adds a lot to the “.parameters” table. Sadly, writing to it doesn’t appear to change anything … well, why would you .. the font is already passed to tex and you cannot change that frozen state (imagine: what would a change in width of a char mean halfway? it woul dnot work well with the backend) ... what would you like to change? That wasn’t 100% serious. Just me experimenting. Best Philipp -- () ascii ribbon campaign - against html e-mail /\ www.asciiribbon.org - against proprietary attachments pgp82wEaxRbmI.pgp Description: PGP signature ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
Re: [NTG-context] error calling font.getfont() on certain fonts
On 3/29/2013 5:36 PM, Philipp Gesang wrote: ···date: 2013-03-29, Friday···from: Hans Hagen··· On 3/29/2013 4:29 PM, Philipp Gesang wrote: I just read that in the manual: Note that at the moment, each access to the font.fonts or call to font.getfont creates a lua table for the whole font. This process can be quite slow. In a later version of LuaTEX, this interface will change (it will start using userdata objects instead of actual tables). even then it's of not much use for context as we have more data and keep that data at the lua end so font.getfont has no benefits then For my purpose the benefit is that I can access some info about the font with the same code in all three formats. ok, *.parameters probably carries the same info but for the rest you cannot assume that the context font handler (plus the derived generic one) will limit itself to that subset; in a similar fashion there is a difference between what context keeps track of and stores and the raw loaded otf font data (in other words: cross macro package has a limited meaning) 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 - ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___
[NTG-context] error calling font.getfont() on certain fonts
Hi all, I get an error when I run this code: \ctxlua{font.getfont( font.current() )} (Complete example below.) Oddly, whether or not this fails depends on the font. The issue does occur with both today’s beta and Tex Live. The error message is error: .../context/tex/texmf-context/tex/context/base/node-inj.lua:97: attempt to perform arithmetic on local 'factor' (a nil value) At the same time, in Plain the equivalent code works fine for all fonts. Bug or feature? Best regards Philipp %% working fonts: %\setupbodyfont[iwona] %\setupbodyfont[computer-modern-unicode] %\setupbodyfont[antykwa-poltawskiego] %% ... ? %% not working: \setupbodyfont[modern] %\setupbodyfont[antykwa] %\setupbodyfont[termes] %\setupbodyfont[pagella] %\setupbodyfont[bonum] %% ... ? \starttext foo \ctxlua{font.getfont( font.current() )} bar \stoptext pgpRcL_tp4ym0.pgp Description: PGP signature ___ If your question is of interest to others as well, please add an entry to the Wiki! maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context webpage : http://www.pragma-ade.nl / http://tex.aanhet.net archive : http://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net ___