fontfaceobserver
Advanced tools
Comparing version 1.2.3 to 1.3.0
@@ -15,8 +15,1 @@ /** | ||
FontFaceObserver.prototype.check = function (opt_text) {}; | ||
/** | ||
* @param {string=} opt_text | ||
* | ||
* @return {Promise.<number>} | ||
*/ | ||
FontFaceObserver.prototype.available = function (opt_text) {}; |
@@ -1,6 +0,6 @@ | ||
(function(){'use strict';function f(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.f=document.createElement("span");this.e=document.createElement("span");this.d=-1;this.b.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.c.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;"; | ||
this.e.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.f.style.cssText="display:inline-block;width:200%;height:200%;";this.b.appendChild(this.f);this.c.appendChild(this.e);this.a.appendChild(this.b);this.a.appendChild(this.c)}function h(a,b,c){a.a.style.cssText="min-width:20px;min-height:20px;display:inline-block;visibility:hidden;position:absolute;width:auto;margin:0;padding:0;top:0;white-space:nowrap;font-size:100px;font-family:"+b+";"+c} | ||
function r(a){var b=a.a.offsetWidth,c=b+100;a.e.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.d!==b?(a.d=b,!0):!1}function s(a,b){a.b.addEventListener("scroll",function(){r(a)&&null!==a.a.parentNode&&b(a.d)},!1);a.c.addEventListener("scroll",function(){r(a)&&null!==a.a.parentNode&&b(a.d)},!1);r(a)};function t(a,b){this.family=a;this.style=b.style||"normal";this.variant=b.variant||"normal";this.weight=b.weight||"normal";this.stretch=b.stretch||"stretch";this.featureSettings=b.featureSettings||"normal"}var u=null; | ||
t.prototype.a=function(a){a=a||"BESbswy";var b="font-style:"+this.style+";font-variant:"+this.variant+";font-weight:"+this.weight+";font-stretch:"+this.stretch+";font-feature-settings:"+this.featureSettings+";-moz-font-feature-settings:"+this.featureSettings+";-webkit-font-feature-settings:"+this.featureSettings+";",c=document.createElement("div"),k=new f(a),l=new f(a),m=new f(a),d=-1,e=-1,g=-1,n=-1,p=-1,q=-1,v=this;h(k,"sans-serif",b);h(l,"serif",b);h(m,"monospace",b);c.appendChild(k.a);c.appendChild(l.a); | ||
c.appendChild(m.a);document.body.appendChild(c);n=k.a.offsetWidth;p=l.a.offsetWidth;q=m.a.offsetWidth;return new Promise(function(a,x){function w(){if(-1!==d&&-1!==e&&-1!==g&&d===e&&e===g){if(null===u){var b=/AppleWeb[kK]it\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);u=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))}u?d===n&&e===n&&g===n||d===p&&e===p&&g===p||d===q&&e===q&&g===q||a(d):a(d)}}setTimeout(function(){document.body.removeChild(c);x(-1)},3E3);s(k, | ||
function(a){d=a;w()});h(k,v.family+",sans-serif",b);s(l,function(a){e=a;w()});h(l,v.family+",serif",b);s(m,function(a){g=a;w()});h(m,v.family+",monospace",b)})};t.prototype.b=function(a){var b=this;return this.a(a).then(function(){return b},function(){throw b;})};window.FontFaceObserver=t;window.FontFaceObserver.prototype.check=t.prototype.b;window.FontFaceObserver.prototype.available=t.prototype.a;}()); | ||
(function(){'use strict';function e(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.f=document.createElement("span");this.e=document.createElement("span");this.d=-1;this.b.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.c.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;"; | ||
this.e.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.f.style.cssText="display:inline-block;width:200%;height:200%;";this.b.appendChild(this.f);this.c.appendChild(this.e);this.a.appendChild(this.b);this.a.appendChild(this.c)}function r(a,b,c){a.a.style.cssText="min-width:20px;min-height:20px;display:inline-block;visibility:hidden;position:absolute;width:auto;margin:0;padding:0;top:0;white-space:nowrap;font-size:100px;font-family:"+b+";"+c} | ||
function s(a){var b=a.a.offsetWidth,c=b+100;a.e.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.d!==b?(a.d=b,!0):!1}function t(a,b){a.b.addEventListener("scroll",function(){s(a)&&null!==a.a.parentNode&&b(a.d)},!1);a.c.addEventListener("scroll",function(){s(a)&&null!==a.a.parentNode&&b(a.d)},!1);s(a)};function u(a,b){this.family=a;this.style=b.style||"normal";this.variant=b.variant||"normal";this.weight=b.weight||"normal";this.stretch=b.stretch||"stretch";this.featureSettings=b.featureSettings||"normal"}var v=null; | ||
u.prototype.a=function(a){a=a||"BESbswy";var b="font-style:"+this.style+";font-variant:"+this.variant+";font-weight:"+this.weight+";font-stretch:"+this.stretch+";font-feature-settings:"+this.featureSettings+";-moz-font-feature-settings:"+this.featureSettings+";-webkit-font-feature-settings:"+this.featureSettings+";",c=document.createElement("div"),k=new e(a),l=new e(a),m=new e(a),f=-1,d=-1,g=-1,n=-1,p=-1,q=-1,h=this;r(k,"sans-serif",b);r(l,"serif",b);r(m,"monospace",b);c.appendChild(k.a);c.appendChild(l.a); | ||
c.appendChild(m.a);document.body.appendChild(c);n=k.a.offsetWidth;p=l.a.offsetWidth;q=m.a.offsetWidth;return new Promise(function(a,y){function w(){null!==c.parentNode&&document.body.removeChild(c)}function x(){if(-1!==f&&-1!==d&&-1!==g&&f===d&&d===g){if(null===v){var b=/AppleWeb[kK]it\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);v=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))}v?f===n&&d===n&&g===n||f===p&&d===p&&g===p||f===q&&d===q&&g===q||(w(),a(h)):(w(), | ||
a(h))}}setTimeout(function(){w();y(h)},3E3);t(k,function(a){f=a;x()});r(k,h.family+",sans-serif",b);t(l,function(a){d=a;x()});r(l,h.family+",serif",b);t(m,function(a){g=a;x()});r(m,h.family+",monospace",b)})};window.FontFaceObserver=u;window.FontFaceObserver.prototype.check=u.prototype.a;}()); |
@@ -6,7 +6,7 @@ (function(){'use strict';function f(a){this.a=k;this.b=void 0;this.d=[];var b=this;try{a(function(a){l(b,a)},function(a){m(b,a)})}catch(c){m(b,c)}}var k=2;function n(a){return new f(function(b,c){c(a)})}function p(a){return new f(function(b){b(a)})} | ||
(function(){'use strict';function f(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.f=document.createElement("span");this.e=document.createElement("span");this.d=-1;this.b.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.c.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;"; | ||
this.e.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.f.style.cssText="display:inline-block;width:200%;height:200%;";this.b.appendChild(this.f);this.c.appendChild(this.e);this.a.appendChild(this.b);this.a.appendChild(this.c)}function h(a,b,c){a.a.style.cssText="min-width:20px;min-height:20px;display:inline-block;visibility:hidden;position:absolute;width:auto;margin:0;padding:0;top:0;white-space:nowrap;font-size:100px;font-family:"+b+";"+c} | ||
function r(a){var b=a.a.offsetWidth,c=b+100;a.e.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.d!==b?(a.d=b,!0):!1}function s(a,b){a.b.addEventListener("scroll",function(){r(a)&&null!==a.a.parentNode&&b(a.d)},!1);a.c.addEventListener("scroll",function(){r(a)&&null!==a.a.parentNode&&b(a.d)},!1);r(a)};function t(a,b){this.family=a;this.style=b.style||"normal";this.variant=b.variant||"normal";this.weight=b.weight||"normal";this.stretch=b.stretch||"stretch";this.featureSettings=b.featureSettings||"normal"}var u=null; | ||
t.prototype.a=function(a){a=a||"BESbswy";var b="font-style:"+this.style+";font-variant:"+this.variant+";font-weight:"+this.weight+";font-stretch:"+this.stretch+";font-feature-settings:"+this.featureSettings+";-moz-font-feature-settings:"+this.featureSettings+";-webkit-font-feature-settings:"+this.featureSettings+";",c=document.createElement("div"),k=new f(a),l=new f(a),m=new f(a),d=-1,e=-1,g=-1,n=-1,p=-1,q=-1,v=this;h(k,"sans-serif",b);h(l,"serif",b);h(m,"monospace",b);c.appendChild(k.a);c.appendChild(l.a); | ||
c.appendChild(m.a);document.body.appendChild(c);n=k.a.offsetWidth;p=l.a.offsetWidth;q=m.a.offsetWidth;return new Promise(function(a,x){function w(){if(-1!==d&&-1!==e&&-1!==g&&d===e&&e===g){if(null===u){var b=/AppleWeb[kK]it\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);u=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))}u?d===n&&e===n&&g===n||d===p&&e===p&&g===p||d===q&&e===q&&g===q||a(d):a(d)}}setTimeout(function(){document.body.removeChild(c);x(-1)},3E3);s(k, | ||
function(a){d=a;w()});h(k,v.family+",sans-serif",b);s(l,function(a){e=a;w()});h(l,v.family+",serif",b);s(m,function(a){g=a;w()});h(m,v.family+",monospace",b)})};t.prototype.b=function(a){var b=this;return this.a(a).then(function(){return b},function(){throw b;})};window.FontFaceObserver=t;window.FontFaceObserver.prototype.check=t.prototype.b;window.FontFaceObserver.prototype.available=t.prototype.a;}()); | ||
(function(){'use strict';function e(a){this.a=document.createElement("div");this.a.setAttribute("aria-hidden","true");this.a.appendChild(document.createTextNode(a));this.b=document.createElement("span");this.c=document.createElement("span");this.f=document.createElement("span");this.e=document.createElement("span");this.d=-1;this.b.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.c.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;"; | ||
this.e.style.cssText="display:inline-block;position:absolute;height:100%;width:100%;overflow:scroll;";this.f.style.cssText="display:inline-block;width:200%;height:200%;";this.b.appendChild(this.f);this.c.appendChild(this.e);this.a.appendChild(this.b);this.a.appendChild(this.c)}function r(a,b,c){a.a.style.cssText="min-width:20px;min-height:20px;display:inline-block;visibility:hidden;position:absolute;width:auto;margin:0;padding:0;top:0;white-space:nowrap;font-size:100px;font-family:"+b+";"+c} | ||
function s(a){var b=a.a.offsetWidth,c=b+100;a.e.style.width=c+"px";a.c.scrollLeft=c;a.b.scrollLeft=a.b.scrollWidth+100;return a.d!==b?(a.d=b,!0):!1}function t(a,b){a.b.addEventListener("scroll",function(){s(a)&&null!==a.a.parentNode&&b(a.d)},!1);a.c.addEventListener("scroll",function(){s(a)&&null!==a.a.parentNode&&b(a.d)},!1);s(a)};function u(a,b){this.family=a;this.style=b.style||"normal";this.variant=b.variant||"normal";this.weight=b.weight||"normal";this.stretch=b.stretch||"stretch";this.featureSettings=b.featureSettings||"normal"}var v=null; | ||
u.prototype.a=function(a){a=a||"BESbswy";var b="font-style:"+this.style+";font-variant:"+this.variant+";font-weight:"+this.weight+";font-stretch:"+this.stretch+";font-feature-settings:"+this.featureSettings+";-moz-font-feature-settings:"+this.featureSettings+";-webkit-font-feature-settings:"+this.featureSettings+";",c=document.createElement("div"),k=new e(a),l=new e(a),m=new e(a),f=-1,d=-1,g=-1,n=-1,p=-1,q=-1,h=this;r(k,"sans-serif",b);r(l,"serif",b);r(m,"monospace",b);c.appendChild(k.a);c.appendChild(l.a); | ||
c.appendChild(m.a);document.body.appendChild(c);n=k.a.offsetWidth;p=l.a.offsetWidth;q=m.a.offsetWidth;return new Promise(function(a,y){function w(){null!==c.parentNode&&document.body.removeChild(c)}function x(){if(-1!==f&&-1!==d&&-1!==g&&f===d&&d===g){if(null===v){var b=/AppleWeb[kK]it\/([0-9]+)(?:\.([0-9]+))/.exec(window.navigator.userAgent);v=!!b&&(536>parseInt(b[1],10)||536===parseInt(b[1],10)&&11>=parseInt(b[2],10))}v?f===n&&d===n&&g===n||f===p&&d===p&&g===p||f===q&&d===q&&g===q||(w(),a(h)):(w(), | ||
a(h))}}setTimeout(function(){w();y(h)},3E3);t(k,function(a){f=a;x()});r(k,h.family+",sans-serif",b);t(l,function(a){d=a;x()});r(l,h.family+",serif",b);t(m,function(a){g=a;x()});r(m,h.family+",monospace",b)})};window.FontFaceObserver=u;window.FontFaceObserver.prototype.check=u.prototype.a;}()); |
{ | ||
"name": "fontfaceobserver", | ||
"version": "1.2.3", | ||
"version": "1.3.0", | ||
"description": "Detect if web fonts are available", | ||
@@ -5,0 +5,0 @@ "directories": { |
@@ -31,4 +31,2 @@ # Font Face Observer | ||
There is also the more low-level `available` method which returns a promise that is settled with the width of the test string in the loaded font. This is only for advanced use when you need to know the width of one or more glyphs and the font must be available right away. | ||
## Installation | ||
@@ -35,0 +33,0 @@ |
@@ -10,2 +10,1 @@ goog.require('fontface.Observer'); | ||
window['FontFaceObserver']['prototype']['check'] = fontface.Observer.prototype.check; | ||
window['FontFaceObserver']['prototype']['available'] = fontface.Observer.prototype.available; |
@@ -100,10 +100,6 @@ goog.provide('fontface.Observer'); | ||
/** | ||
* Low-level font availability check. Use `check`. | ||
* | ||
* @param {string=} testString Optional test string to use for detecting if a font is available. | ||
* | ||
* @return {Promise.<number>} A promise resolved with the final width of the | ||
* test span if the font is applied. Rejected with -1 if the font doesn't load. | ||
* @return {Promise.<fontface.Observer>} | ||
*/ | ||
Observer.prototype.available = function (testString) { | ||
Observer.prototype.check = function (testString) { | ||
var text = testString || 'BESbswy', | ||
@@ -144,2 +140,11 @@ style = this.getStyle(), | ||
* @private | ||
*/ | ||
function removeContainer() { | ||
if (container.parentNode !== null) { | ||
dom.remove(document.body, container); | ||
} | ||
} | ||
/** | ||
* @private | ||
* | ||
@@ -168,6 +173,8 @@ * Cases: | ||
// The width we got doesn't match any of the known last resort fonts, so let's assume fonts are loaded. | ||
resolve(widthA); | ||
removeContainer(); | ||
resolve(that); | ||
} | ||
} else { | ||
resolve(widthA); | ||
removeContainer(); | ||
resolve(that); | ||
} | ||
@@ -179,4 +186,4 @@ } | ||
setTimeout(function () { | ||
dom.remove(document.body, container); | ||
reject(-1); | ||
removeContainer(); | ||
reject(that); | ||
}, Observer.DEFAULT_TIMEOUT); | ||
@@ -206,16 +213,2 @@ | ||
}; | ||
/** | ||
* @param {string=} testString Optional test string to use for detecting if | ||
* a font is loaded. | ||
* @return {Promise.<fontface.Observer>} | ||
*/ | ||
Observer.prototype.check = function (testString) { | ||
var that = this; | ||
return this.available(testString).then(function () { | ||
return that; | ||
}, function () { | ||
throw that; | ||
}); | ||
}; | ||
}); |
@@ -9,3 +9,2 @@ describe('Observer', function () { | ||
expect(observer, 'not to be', null); | ||
expect(observer.available, 'to be a function'); | ||
expect(observer.check, 'to be a function'); | ||
@@ -12,0 +11,0 @@ }); |
Sorry, the diff of this file is not supported yet
299628
3884
55