Meer, Hans van der <mailto:h.vanderm...@uva.nl>
14. Mai 2016 um 21:13
I think I did not state the problem clear enough.
The solution given here supposes that the fontsize is known beforehand.
However, what I am doing is calculating a font size based on the current one and than switch to that size. It is part of a fontsize changing mechanism inside an xmlsetup. In short what I am doing is:

\scratchdimen=\the\dimexpr\bodyfontsize\relax
\advance\scratchdimen 'somevalue' \relax
%\definebodyfontenvironment[\the\scratchdimen]
\begingroup
% must keep the change local
\switchtobodyfont[\the\scratchdimen]
...
\endgroup

The commented out \definebodyfontenvironment kills a lot of the font messages but I fear that each the time the same work is done as without it. The only benefit being the suppression of the font messages in the log ;-)

It might be impossible to accomplish this efficiently -- that is execute the font calculations once only for the given size. But at least I would like to give it a try.

You can save time with the \definebodyfontenvironment command.

In the following example context has to create a new bodyfont
environment for each iteration (because the values are local
to the group) to calculate the a, b, c etc. sizes which takes time
but in the same loop context only has to load the predefined size.

\starttext

\testfeatureonce{1000}
  {\begingroup
   \switchtobodyfont[18pt]
   \endgroup}

\definebodyfontenvironment[18pt]

\testfeatureonce{1000}
  {\begingroup
   \switchtobodyfont[18pt]
   \endgroup}

\stoptext

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

Reply via email to