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.

Hans van der Meer




On 14 May 2016, at 20:00, Wolfgang Schuster <schuster.wolfgang@gmail.com> wrote:

14. Mai 2016 um 17:55
I like to execute this statement
\definebodyfontenvironment[somevalue]
in order to avoid lots of error messages as such:
fonts > bodyfont '8.0pt' is defined (can better be done global

Is this definebodyfontenvironment macro fully executed each time it is called or does ConTeXt remember and execute it once only?
Just put it at the begin of the document.

\definebodyfontenvironment[18pt]

\starttext

\dorecurse{10}
  {\begingroup
   \switchtobodyfont[18pt]
   \endgroup}

\stoptext

Wolfgang
___________________________________________________________________________________