Esempio n. 1
0
void FontFace::load(ExecutionContext* context)
{
    if (m_status != Unloaded)
        return;

    FontDescription fontDescription;
    FontFamily fontFamily;
    fontFamily.setFamily(m_family);
    fontDescription.setFamily(fontFamily);
    fontDescription.setTraitsMask(static_cast<FontTraitsMask>(traitsMask()));

    CSSFontSelector* fontSelector = toDocument(context)->styleEngine()->fontSelector();
    m_cssFontFace->load(fontDescription, fontSelector);
    fontSelector->loadPendingFonts();
}
FontCacheKey FontDescription::cacheKey(const AtomicString& familyName, FontTraitsMask desiredTraits) const
{
    FontTraitsMask traits = desiredTraits
        ? desiredTraits
        : traitsMask();

    unsigned options =
        static_cast<unsigned>(m_syntheticItalic) << 8 | // bit 9
        static_cast<unsigned>(m_syntheticBold) << 7 | // bit 8
        static_cast<unsigned>(m_fontSmoothing) << 5 | // bits 6-7
        static_cast<unsigned>(m_textRendering) << 3 | // bits 4-5
        static_cast<unsigned>(m_orientation) << 2 | // bit 3
        static_cast<unsigned>(m_usePrinterFont) << 1 | // bit 2
        static_cast<unsigned>(m_subpixelTextPosition); // bit 1

    return FontCacheKey(familyName, effectiveFontSize(), options | traits << 9);
}