Font represents a CSS font, not a platform font. A FontData is either one or a collection of SimpleFontData objects. SimpleFontData has a function called fontData() which returns AdditionalFontData and a member variable of type DerivedFontData. These names are confusing.
Maybe something like: Font -> CompositeFont SimpleFontData -> Font SegmentedFontData -> SegmentedFont FontData -> FontBase (eliminating the inheritance here would be good) AdditionalFontData -> SVGFontCallback (no need to be coy) SimpleFontData::fontData() -> SimpleFontData::svgFontCallback()