From 2825535ae279610441caf5f1857d3dd348bbfcf7 Mon Sep 17 00:00:00 2001 From: John Berlin Date: Fri, 1 Jun 2018 18:13:43 -0400 Subject: [PATCH] Added FontFace to wombat overrides, https://drafts.csswg.org/css-font-loading/#FontFace-interface (#340) --- pywb/static/wombat.js | 27 +++++++++++++++++++++++++++ 1 file changed, 27 insertions(+) diff --git a/pywb/static/wombat.js b/pywb/static/wombat.js index 139c8b1c..336fcf5b 100644 --- a/pywb/static/wombat.js +++ b/pywb/static/wombat.js @@ -2073,6 +2073,30 @@ var _WBWombat = function($wbwindow, wbinfo) { } } + //============================================ + function initFontFaceOverride ($wbwindow) { + if (!$wbwindow.FontFace || $wbwindow.FontFace.__wboverriden__) { + return; + } + // per https://drafts.csswg.org/css-font-loading/#FontFace-interface and Chrome, FF, Opera Support + var origFontFace = $wbwindow.FontFace; + $wbwindow.FontFace = (function (FontFace) { + return function (family, source, descriptors) { + var rwSource = source; + if (source != null) { + if (typeof source !== 'string') { + source = source.toString(); // is CSSOMString or ArrayBuffer or ArrayBufferView + } + rwSource = rewrite_inline_style(source); + } + return new FontFace(family, rwSource, descriptors); + } + })($wbwindow.FontFace); + $wbwindow.FontFace.prototype = origFontFace.prototype; + Object.defineProperty($wbwindow.FontFace.prototype, "constructor", {value: $wbwindow.FontFace}); + $wbwindow.FontFace.__wboverriden__ = true; + } + //============================================ function init_wombat_loc(win) { @@ -3354,6 +3378,9 @@ var _WBWombat = function($wbwindow, wbinfo) { // Audio init_audio_override(); + // FontFace + initFontFaceOverride($wbwindow); + // Worker override (experimental) init_web_worker_override(); init_service_worker_override();