void FontFaceCache::addFontFace(CSSFontSelector* cssFontSelector, RawPtr<FontFace> prpFontFace, bool cssConnected)
{
    RawPtr<FontFace> fontFace = prpFontFace;

    FamilyToTraitsMap::AddResult traitsResult = m_fontFaces.add(fontFace->family(), nullptr);
    if (!traitsResult.storedValue->value)
        traitsResult.storedValue->value = new TraitsMap;

    TraitsMap::AddResult segmentedFontFaceResult = traitsResult.storedValue->value->add(fontFace->traits().bitfield(), nullptr);
    if (!segmentedFontFaceResult.storedValue->value)
        segmentedFontFaceResult.storedValue->value = CSSSegmentedFontFace::create(cssFontSelector, fontFace->traits());

    segmentedFontFaceResult.storedValue->value->addFontFace(fontFace, cssConnected);
    if (cssConnected)
        m_cssConnectedFontFaces.add(fontFace);

    m_fonts.remove(fontFace->family());
    ++m_version;
}