Re: [NTG-context] error calling font.getfont() on certain fonts

2013-03-29 Thread 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


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

2013-03-29 Thread Philipp Gesang
···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

2013-03-29 Thread 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



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

2013-03-29 Thread Philipp Gesang
···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

2013-03-29 Thread Hans Hagen

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
___