The post does not indicate what the results are from the code above.
I'm not entirely sure how much the ctext widget manages the underlying text widget with respect to fonts, it's possible the ctext wrapper is blocking the change for some reason. If that is the case, then you may need to use the ctext specific configuring commands (e.g. ctext::addHighlightClass) to set the desired font.
Generally speaking about the text widget:
The widget font should be used when setting the font across all text ( $w configure -font $font ).
If a tag has a font value that is empty ( [$w tag cget -font] eq {} ), it should not be blindly changed unless it is intentional to have a different font from the default widget font.
-Brian