to avoid duplicate code between the drracket support for printing and
for write/display; also add a special case for 2htdp/image images
because they can be trusted across the boundary between DrRacket's
implementation and the user's program (as there is no way to embed
arbitrary code into a 2htdp/image image)
this has the advantage of that the information is inserted when the
state of the text is set up so that font sizing works
it also means that if there is a syntax object with a syntax
object on its properties with another one like that etc etc etc
they will only be rendered when they are made visible which
theoretically could be a performance improvement for some people