We might end up double-bolding text or double-italicizing text if variations are turned on at the same time as synthesis.
It looks like CTFontGetSymbolicTraits() actually does the right thing with a variable font (well, at least with San Francisco) if you specify a heavy value on the weight axis. Closing.