FontCustomPlatformData* createFontCustomPlatformData(const SharedBuffer* buffer) { if (g_customFontCache) { String fontName = createUniqueFontName(); RefPtr<SharedBuffer> localBuffer = SharedBuffer::create(buffer->data(), buffer->size()); if (renameFont(localBuffer.get(), fontName) && g_customFontCache->registerFont(fontName, localBuffer.get())) return new FontCustomPlatformData(fontName); } return 0; }
// Rename the font and install the new font data into the system HANDLE renameAndActivateFont(const SharedBuffer& fontData, const String& fontName) { Vector<char> rewrittenFontData; if (!renameFont(fontData, fontName, rewrittenFontData)) return 0; DWORD numFonts = 0; HANDLE fontHandle = AddFontMemResourceEx(rewrittenFontData.data(), rewrittenFontData.size(), 0, &numFonts); if (fontHandle && numFonts < 1) { RemoveFontMemResourceEx(fontHandle); return 0; } return fontHandle; }
// Rename the font and install the new font data into the system HANDLE renameAndActivateFont(SharedBuffer* fontData, const String& fontName) { Vector<char> rewrittenFontData; size_t nameTableSize = renameFont(fontData, fontName, rewrittenFontData); if (!nameTableSize) return 0; DWORD numFonts = 0; HANDLE fontHandle = AddFontMemResourceEx(rewrittenFontData.data(), fontData->size() + nameTableSize, 0, &numFonts); if (fontHandle && numFonts < 1) { RemoveFontMemResourceEx(fontHandle); return 0; } return fontHandle; }