ntg-context - mailing list for ConTeXt users
 help / color / mirror / Atom feed
* error calling font.getfont() on certain fonts
@ 2013-03-28 17:41 Philipp Gesang
  2013-03-29 14:21 ` Hans Hagen
  0 siblings, 1 reply; 6+ messages in thread
From: Philipp Gesang @ 2013-03-28 17:41 UTC (permalink / raw)
  To: ConTeXt ML


[-- Attachment #1.1: Type: text/plain, Size: 896 bytes --]

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


[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: error calling font.getfont() on certain fonts
  2013-03-28 17:41 error calling font.getfont() on certain fonts Philipp Gesang
@ 2013-03-29 14:21 ` Hans Hagen
  2013-03-29 15:29   ` Philipp Gesang
  0 siblings, 1 reply; 6+ messages in thread
From: Hans Hagen @ 2013-03-29 14:21 UTC (permalink / raw)
  To: ConTeXt ML

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: error calling font.getfont() on certain fonts
  2013-03-29 14:21 ` Hans Hagen
@ 2013-03-29 15:29   ` Philipp Gesang
  2013-03-29 16:12     ` Hans Hagen
  0 siblings, 1 reply; 6+ messages in thread
From: Philipp Gesang @ 2013-03-29 15:29 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 2189 bytes --]

···<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

[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: error calling font.getfont() on certain fonts
  2013-03-29 15:29   ` Philipp Gesang
@ 2013-03-29 16:12     ` Hans Hagen
  2013-03-29 16:36       ` Philipp Gesang
  0 siblings, 1 reply; 6+ messages in thread
From: Hans Hagen @ 2013-03-29 16:12 UTC (permalink / raw)
  To: mailing list for ConTeXt users

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: error calling font.getfont() on certain fonts
  2013-03-29 16:12     ` Hans Hagen
@ 2013-03-29 16:36       ` Philipp Gesang
  2013-03-29 16:42         ` Hans Hagen
  0 siblings, 1 reply; 6+ messages in thread
From: Philipp Gesang @ 2013-03-29 16:36 UTC (permalink / raw)
  To: mailing list for ConTeXt users


[-- Attachment #1.1: Type: text/plain, Size: 1306 bytes --]

···<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

[-- Attachment #1.2: Type: application/pgp-signature, Size: 198 bytes --]

[-- Attachment #2: Type: text/plain, Size: 485 bytes --]

___________________________________________________________________________________
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
___________________________________________________________________________________

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: error calling font.getfont() on certain fonts
  2013-03-29 16:36       ` Philipp Gesang
@ 2013-03-29 16:42         ` Hans Hagen
  0 siblings, 0 replies; 6+ messages in thread
From: Hans Hagen @ 2013-03-29 16:42 UTC (permalink / raw)
  To: mailing list for ConTeXt users

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
___________________________________________________________________________________


^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2013-03-29 16:42 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-28 17:41 error calling font.getfont() on certain fonts Philipp Gesang
2013-03-29 14:21 ` Hans Hagen
2013-03-29 15:29   ` Philipp Gesang
2013-03-29 16:12     ` Hans Hagen
2013-03-29 16:36       ` Philipp Gesang
2013-03-29 16:42         ` Hans Hagen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).