The font should be tested for boolean truth before setting the font. Different widgets have different default fonts, and we don't want to override that with an invalid font, which may change the default appearance.

We'll also need to work out the best way to restore the default font, if the user set a custom font, but later removes it. This can be tricky, and I haven't yet spent the time to work out the best way to do it.

The final bit is whether or not we should inherit the font from the parent. Most widgets in Qt will inherit their parent's font by default. In that case, we may want to use a font cache on the parent, like in the list item:
https://github.com/enthought/enaml/blob/master/enaml/qt/qt_list_item.py

On the other hand, using a font cache per widget can be space expensive, and we may want to consider other ideas.