static PassRefPtr<LoadFontCallback> createFromParams(const Dictionary& params, FontLoader& fontLoader, const FontCascade& font) { RefPtr<VoidCallback> onsuccess; RefPtr<VoidCallback> onerror; params.get("onsuccess", onsuccess); params.get("onerror", onerror); if (!onsuccess && !onerror) return 0; int numFamilies = font.familyCount(); return LoadFontCallback::create(numFamilies, fontLoader, onsuccess, onerror); }
bool FontLoader::checkFont(const String& fontString, const String&) { // FIXME: The second parameter (text) is ignored. FontCascade font; if (!resolveFontStyle(fontString, font)) return false; for (unsigned i = 0; i < font.familyCount(); i++) { CSSSegmentedFontFace* face = m_document->fontSelector().getFontFace(font.fontDescription(), font.familyAt(i)); if (!face || !face->checkFont()) return false; } return true; }
void FontLoader::loadFont(const Dictionary& params) { // FIXME: The text member of params is ignored. String fontString; if (!params.get("font", fontString)) return; FontCascade font; if (!resolveFontStyle(fontString, font)) return; RefPtr<LoadFontCallback> callback = LoadFontCallback::createFromParams(params, *this, font); m_numLoadingFromJS += callback->familyCount(); for (unsigned i = 0; i < font.familyCount(); i++) { CSSSegmentedFontFace* face = m_document->fontSelector().getFontFace(font.fontDescription(), font.familyAt(i)); if (!face) { if (callback) callback->notifyError(); continue; } face->loadFont(font.fontDescription(), callback); } }