Every primitive widget type can be assigned a font, as by "Widgets -> Font...".
The default font of a field widget is the builtin font "body", unless the field widget is in "code" mode, in which case it will default to the builtin font "mono".
When spans within rtext specify no font (or a nonexistent font), the font of the field widget "shows through".
You can construct links in rtext with any font via scripting. For example:
field1.value:rtext.make["before "],rtext.make["text" "menu" "mylink"],rtext.make[" after"]

The rtext table thus constructed:

The current behavior of the "Text -> Link..." menu item creates spans which do not specify a font, and thus manually-created links always use the font of the field widget. I'll make a note to revisit this.