Font on and font off seem to just alter the "use non-proportional font" bit in
the header, so whether or not the Inform code works as expected will depend on
how often the interpreter looks at this bit. Most interpreters seem to cache
lines and only print when they reach a carriage return, etc. If they only check
the bit at this point, then the result will be as you describe above (something
similar seems to happen in the IF competition entry "MST3000").
I seem to recall that the Designer's Manual commented that it was unwise to
change proportional/fixed in the middle of a line, but I can't remember what
the current advice is. As an addendum, calling set_font with either 1 or 4
really should make the interpreter flush the text out of any internal buffers,
no matter what.
David