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); }