webfontloader
Advanced tools
Comparing version 1.5.15 to 1.5.17
{ | ||
"name": "webfontloader", | ||
"version": "1.5.15", | ||
"version": "1.5.17", | ||
"description": "Web Font Loader gives you added control when using linked fonts via @font-face.", | ||
"main": "webfontloader.js", | ||
"scripts": { | ||
"test": "./node_modules/.bin/phantomjs tools/jasmine-phantomjs/jasmine-phantomjs.js spec/index.html" | ||
"test": "phantomjs tools/jasmine-phantomjs/jasmine-phantomjs.js spec/index.html" | ||
}, | ||
@@ -33,4 +33,3 @@ "repository": { | ||
"devDependencies": { | ||
"phantomjs2-ext": "0.0.4" | ||
} | ||
} |
@@ -44,15 +44,11 @@ # Web Font Loader | ||
<script> | ||
WebFontConfig = { | ||
typekit: { id: 'xxxxxx' } | ||
}; | ||
(function() { | ||
var wf = document.createElement('script'); | ||
wf.src = ('https:' == document.location.protocol ? 'https' : 'http') + | ||
'://ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js'; | ||
wf.type = 'text/javascript'; | ||
wf.async = 'true'; | ||
var s = document.getElementsByTagName('script')[0]; | ||
s.parentNode.insertBefore(wf, s); | ||
})(); | ||
WebFontConfig = { | ||
typekit: { id: 'xxxxxx' } | ||
}; | ||
(function(d) { | ||
var wf = d.createElement('script'), s = d.scripts[0]; | ||
wf.src = '//ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js'; | ||
s.parentNode.insertBefore(wf, s); | ||
})(document); | ||
</script> | ||
@@ -59,0 +55,0 @@ ``` |
@@ -24,9 +24,6 @@ describe('FontWatcher', function () { | ||
new Version(3, 6), | ||
'3.6', | ||
'Gecko', | ||
new Version(1, 9, 3), | ||
'1.9.3', | ||
'Macintosh', | ||
new Version(10, 6), | ||
'10.6', | ||
undefined, | ||
@@ -33,0 +30,0 @@ new BrowserInfo(true, false, false, false) |
@@ -11,5 +11,12 @@ describe('FontWatchRunner', function () { | ||
activeCallback = null, | ||
inactiveCallback = null; | ||
inactiveCallback = null, | ||
userAgent = null, | ||
nullFont = null, | ||
sourceSansA = null, | ||
sourceSansB = null, | ||
elena = null; | ||
beforeEach(function () { | ||
var userAgentParser = new UserAgentParser(window.navigator.userAgent, window.document); | ||
domHelper = new DomHelper(window); | ||
@@ -19,380 +26,134 @@ | ||
inactiveCallback = jasmine.createSpy('inactiveCallback'); | ||
}); | ||
describe('Fake browser', function () { | ||
var font = new Font('My Family', 'n4'), | ||
TARGET_SIZE = 3, | ||
FALLBACK_SIZE_A = 1, | ||
FALLBACK_SIZE_B = 2, | ||
LAST_RESORT_SIZE = 4, | ||
userAgent = userAgentParser.parse(); | ||
browserInfo = new BrowserInfo(true, false, false), | ||
fallbackBugBrowserInfo = new BrowserInfo(true, true, false), | ||
setupWidths = [], | ||
actualWidths = [], | ||
timesToGetTimeBeforeTimeout = 10; | ||
nullFont = new Font('__webfontloader_test__'); | ||
sourceSansA = new Font('SourceSansA'); | ||
sourceSansB = new Font('SourceSansB'); | ||
elena = new Font('Elena'); | ||
}); | ||
beforeEach(function () { | ||
jasmine.Clock.useMock(); | ||
it('should fail to load a null font', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, nullFont, userAgent.getBrowserInfo(), 500, {}); | ||
setupWidths = [FALLBACK_SIZE_A, FALLBACK_SIZE_B, LAST_RESORT_SIZE]; | ||
runs(function () { | ||
fontWatchRunner.start(); | ||
}); | ||
actualWidths = []; | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
var setupFinished = false, | ||
fakeGetWidthCount = 0; | ||
spyOn(FontRuler.prototype, 'getWidth').andCallFake(function () { | ||
var result = null; | ||
if (setupFinished) { | ||
// If you are getting an exception here your tests does not specify enough | ||
// size data to run properly. | ||
if (fakeGetWidthCount >= actualWidths.length) { | ||
throw 'Invalid test data'; | ||
} | ||
result = actualWidths[fakeGetWidthCount]; | ||
fakeGetWidthCount += 1; | ||
} else { | ||
result = setupWidths[Math.min(fakeGetWidthCount, setupWidths.length - 1)]; | ||
fakeGetWidthCount += 1; | ||
} | ||
return result; | ||
}); | ||
timesToGetBeforeTimeout = 10; | ||
spyOn(goog, 'now').andCallFake(function () { | ||
if (timesToGetTimeBeforeTimeout <= 0) { | ||
return 6000; | ||
} else { | ||
timesToGetTimeBeforeTimeout -= 1; | ||
return 1; | ||
} | ||
}); | ||
var originalStart = FontWatchRunner.prototype.start; | ||
spyOn(FontWatchRunner.prototype, 'start').andCallFake(function () { | ||
setupFinished = true; | ||
fakeGetWidthCount = 0; | ||
originalStart.apply(this); | ||
}); | ||
runs(function () { | ||
expect(inactiveCallback).toHaveBeenCalledWith(nullFont); | ||
}); | ||
}); | ||
it('should call active if fonts are already loaded', function () { | ||
actualWidths = [ | ||
TARGET_SIZE, TARGET_SIZE | ||
]; | ||
it('should load font succesfully', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, sourceSansA, userAgent.getBrowserInfo(), 5000), | ||
ruler = new FontRuler(domHelper, 'abcdef'), | ||
monospace = new Font('monospace'), | ||
sourceSansAFallback = new Font("'SourceSansA', monospace"), | ||
activeWidth = null, | ||
originalWidth = null, | ||
finalCheck = false; | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, browserInfo); | ||
runs(function () { | ||
ruler.insert(); | ||
ruler.setFont(monospace); | ||
originalWidth = ruler.getWidth(); | ||
ruler.setFont(sourceSansAFallback); | ||
fontWatchRunner.start(); | ||
}); | ||
jasmine.Clock.tick(1 * 25); | ||
expect(activeCallback).toHaveBeenCalledWith(font); | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
it('should wait for font load and call active', function () { | ||
actualWidths = [ | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B, | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B, | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B, | ||
TARGET_SIZE, TARGET_SIZE | ||
]; | ||
runs(function () { | ||
expect(activeCallback).toHaveBeenCalledWith(sourceSansA); | ||
activeWidth = ruler.getWidth(); | ||
expect(activeWidth).not.toEqual(originalWidth); | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, browserInfo); | ||
window.setTimeout(function () { | ||
finalCheck = true; | ||
}, 200); | ||
}); | ||
fontWatchRunner.start(); | ||
waitsFor(function () { | ||
return finalCheck; | ||
}); | ||
jasmine.Clock.tick(3 * 25); | ||
expect(activeCallback).toHaveBeenCalledWith(font); | ||
runs(function () { | ||
expect(ruler.getWidth()).not.toEqual(originalWidth); | ||
expect(ruler.getWidth()).toEqual(activeWidth); | ||
}); | ||
}); | ||
it('should wait for font inactive and call inactive', function () { | ||
timesToGetTimeBeforeTimeout = 5; | ||
it('should attempt to load a non-existing font', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, elena, userAgent.getBrowserInfo(), 500, {}); | ||
actualWidths = [ | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B, | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B, | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B, | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B, | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B | ||
]; | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, browserInfo); | ||
runs(function () { | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(4 * 25); | ||
expect(inactiveCallback).toHaveBeenCalledWith(font); | ||
}); | ||
describe('WebKit fallback bug', function () { | ||
it('should ignore fallback size and call active', function () { | ||
actualWidths = [ | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE, | ||
TARGET_SIZE, TARGET_SIZE | ||
]; | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, fallbackBugBrowserInfo); | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(1 * 25); | ||
expect(activeCallback).toHaveBeenCalledWith(font); | ||
}); | ||
it('should consider last resort font as having identical metrics and call active', function () { | ||
actualWidths = [ | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE, | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE | ||
]; | ||
timesToGetTimeBeforeTimeout = 2; | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, fallbackBugBrowserInfo); | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(1 * 25); | ||
expect(activeCallback).toHaveBeenCalledWith(font); | ||
}); | ||
it('should fail to load font and call inactive', function () { | ||
actualWidths = [ | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE, | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE, | ||
FALLBACK_SIZE_A, FALLBACK_SIZE_B | ||
]; | ||
timesToGetTimeBeforeTimeout = 3; | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, fallbackBugBrowserInfo); | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(2 * 25); | ||
expect(inactiveCallback).toHaveBeenCalledWith(font); | ||
}); | ||
it('should call inactive when we are loading a metric incompatible font', function () { | ||
actualWidths = [ | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE, | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE | ||
]; | ||
timesToGetTimeBeforeTimeout = 2; | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, fallbackBugBrowserInfo, 0, { 'My Other Family': true }); | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(1 * 25); | ||
expect(inactiveCallback).toHaveBeenCalledWith(font); | ||
}); | ||
it('should call active when we are loading a metric compatible font', function () { | ||
actualWidths = [ | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE, | ||
LAST_RESORT_SIZE, LAST_RESORT_SIZE | ||
]; | ||
timesToGetTimeBeforeTimeout = 2; | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, new Font('Arimo'), fallbackBugBrowserInfo, 0, { 'Arimo': true }); | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(1 * 25); | ||
expect(activeCallback).toHaveBeenCalledWith(new Font('Arimo')); | ||
}); | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
describe('test string', function () { | ||
var fontWatchRunner = null; | ||
beforeEach(function () { | ||
spyOn(domHelper, 'createElement').andCallThrough(); | ||
}); | ||
it('should be the default', function () { | ||
actualWidths = [ | ||
TARGET_SIZE, TARGET_SIZE | ||
]; | ||
fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, browserInfo); | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(1 * 25); | ||
expect(domHelper.createElement.mostRecentCall.args[2]).toEqual('BESbswy'); | ||
}); | ||
it('should be a custom string', function () { | ||
actualWidths = [ | ||
TARGET_SIZE, TARGET_SIZE | ||
]; | ||
fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, font, browserInfo, 0, null, 'TestString'); | ||
fontWatchRunner.start(); | ||
jasmine.Clock.tick(1 * 25); | ||
expect(domHelper.createElement.mostRecentCall.args[2]).toEqual('TestString'); | ||
}); | ||
runs(function () { | ||
expect(inactiveCallback).toHaveBeenCalledWith(elena); | ||
}); | ||
}); | ||
describe('real browser testing', function () { | ||
var userAgent = null, | ||
nullFont = null, | ||
sourceSansA = null, | ||
sourceSansB = null, | ||
elena = null; | ||
it('should load even if @font-face is inserted after watching has started', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, sourceSansB, userAgent.getBrowserInfo(), 5000), | ||
ruler = new FontRuler(domHelper, 'abcdef'), | ||
monospace = new Font('monospace'), | ||
sourceSansBFallback = new Font("'SourceSansB', monospace"), | ||
activeWidth = null, | ||
originalWidth = null, | ||
finalCheck = false; | ||
beforeEach(function () { | ||
var userAgentParser = new UserAgentParser(window.navigator.userAgent, window.document); | ||
runs(function () { | ||
ruler.insert(); | ||
ruler.setFont(monospace); | ||
originalWidth = ruler.getWidth(); | ||
ruler.setFont(sourceSansBFallback); | ||
fontWatchRunner.start(); | ||
var link = document.createElement('link'); | ||
nullFont = new Font('__webfontloader_test__'); | ||
sourceSansA = new Font('SourceSansA'); | ||
sourceSansB = new Font('SourceSansB'); | ||
elena = new Font('Elena'); | ||
link.rel = "stylesheet"; | ||
link.href= "fixtures/fonts/sourcesansb.css"; | ||
userAgent = userAgentParser.parse(); | ||
domHelper.insertInto('head', link); | ||
}); | ||
it('should fail to load a null font', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, nullFont, userAgent.getBrowserInfo(), 500); | ||
runs(function () { | ||
fontWatchRunner.start(); | ||
}); | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
runs(function () { | ||
expect(inactiveCallback).toHaveBeenCalledWith(nullFont); | ||
}); | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
it('should load font succesfully', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, sourceSansA, userAgent.getBrowserInfo(), 5000), | ||
ruler = new FontRuler(domHelper, 'abcdef'), | ||
monospace = new Font('monospace'), | ||
sourceSansAFallback = new Font("'SourceSansA', monospace"), | ||
activeWidth = null, | ||
originalWidth = null, | ||
finalCheck = false; | ||
runs(function () { | ||
expect(activeCallback).toHaveBeenCalledWith(sourceSansB); | ||
activeWidth = ruler.getWidth(); | ||
expect(activeWidth).not.toEqual(originalWidth); | ||
runs(function () { | ||
ruler.insert(); | ||
ruler.setFont(monospace); | ||
originalWidth = ruler.getWidth(); | ||
ruler.setFont(sourceSansAFallback); | ||
fontWatchRunner.start(); | ||
}); | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
runs(function () { | ||
expect(activeCallback).toHaveBeenCalledWith(sourceSansA); | ||
activeWidth = ruler.getWidth(); | ||
expect(activeWidth).not.toEqual(originalWidth); | ||
window.setTimeout(function () { | ||
finalCheck = true; | ||
}, 200); | ||
}); | ||
waitsFor(function () { | ||
return finalCheck; | ||
}); | ||
runs(function () { | ||
expect(ruler.getWidth()).not.toEqual(originalWidth); | ||
expect(ruler.getWidth()).toEqual(activeWidth); | ||
}); | ||
window.setTimeout(function () { | ||
finalCheck = true; | ||
}, 200); | ||
}); | ||
it('should attempt to load a non-existing font', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, elena, userAgent.getBrowserInfo(), 500); | ||
runs(function () { | ||
fontWatchRunner.start(); | ||
}); | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
runs(function () { | ||
expect(inactiveCallback).toHaveBeenCalledWith(elena); | ||
}); | ||
waitsFor(function () { | ||
return finalCheck; | ||
}); | ||
it('should load even if @font-face is inserted after watching has started', function () { | ||
var fontWatchRunner = new FontWatchRunner(activeCallback, inactiveCallback, | ||
domHelper, sourceSansB, userAgent.getBrowserInfo(), 5000), | ||
ruler = new FontRuler(domHelper, 'abcdef'), | ||
monospace = new Font('monospace'), | ||
sourceSansBFallback = new Font("'SourceSansB', monospace"), | ||
activeWidth = null, | ||
originalWidth = null, | ||
finalCheck = false; | ||
runs(function () { | ||
ruler.insert(); | ||
ruler.setFont(monospace); | ||
originalWidth = ruler.getWidth(); | ||
ruler.setFont(sourceSansBFallback); | ||
fontWatchRunner.start(); | ||
var link = document.createElement('link'); | ||
link.rel = "stylesheet"; | ||
link.href= "fixtures/fonts/sourcesansb.css"; | ||
domHelper.insertInto('head', link); | ||
}); | ||
waitsFor(function () { | ||
return activeCallback.wasCalled || inactiveCallback.wasCalled; | ||
}); | ||
runs(function () { | ||
expect(activeCallback).toHaveBeenCalledWith(sourceSansB); | ||
activeWidth = ruler.getWidth(); | ||
expect(activeWidth).not.toEqual(originalWidth); | ||
window.setTimeout(function () { | ||
finalCheck = true; | ||
}, 200); | ||
}); | ||
waitsFor(function () { | ||
return finalCheck; | ||
}); | ||
runs(function () { | ||
expect(ruler.getWidth()).not.toEqual(originalWidth); | ||
expect(ruler.getWidth()).toEqual(activeWidth); | ||
}); | ||
runs(function () { | ||
expect(ruler.getWidth()).not.toEqual(originalWidth); | ||
expect(ruler.getWidth()).toEqual(activeWidth); | ||
}); | ||
}); | ||
}); |
@@ -295,5 +295,8 @@ goog.provide('webfont.DomHelper'); | ||
'rel': 'stylesheet', | ||
'href': href | ||
'href': href, | ||
'media': 'only x' | ||
}); | ||
var sheets = this.document_.styleSheets; | ||
var done = false; | ||
@@ -321,4 +324,20 @@ | ||
function onAvailable(callback) { | ||
for (var i = 0; i < sheets.length; i++) { | ||
if (sheets[i].href && sheets[i].href.indexOf(href) !== -1) { | ||
return callback(); | ||
} | ||
} | ||
setTimeout(function () { | ||
onAvailable(callback); | ||
}, 0); | ||
} | ||
this.insertInto('head', link); | ||
onAvailable(function () { | ||
link.media = "all"; | ||
}); | ||
return link; | ||
@@ -325,0 +344,0 @@ }; |
@@ -87,13 +87,13 @@ goog.provide('webfont.FontWatcher'); | ||
//} else { | ||
fontWatchRunner = new FontWatchRunner( | ||
goog.bind(this.fontActive_, this), | ||
goog.bind(this.fontInactive_, this), | ||
this.domHelper_, | ||
font, | ||
this.browserInfo_, | ||
this.timeout_, | ||
metricCompatibleFonts, | ||
testString | ||
); | ||
//} | ||
// | ||
fontWatchRunner = new FontWatchRunner( | ||
goog.bind(this.fontActive_, this), | ||
goog.bind(this.fontInactive_, this), | ||
this.domHelper_, | ||
font, | ||
this.browserInfo_, | ||
this.timeout_, | ||
metricCompatibleFonts, | ||
testString | ||
); | ||
@@ -100,0 +100,0 @@ fontWatchRunner.start(); |
@@ -23,4 +23,4 @@ goog.provide('webfont.FontWatchRunner'); | ||
this.font_ = font; | ||
this.browserInfo_ = browserInfo; | ||
this.fontTestString_ = opt_fontTestString || webfont.FontWatchRunner.DEFAULT_TEST_STRING; | ||
this.browserInfo_ = browserInfo; | ||
this.lastResortWidths_ = {}; | ||
@@ -33,2 +33,3 @@ this.timeout_ = opt_timeout || 3000; | ||
this.fontRulerB_ = null; | ||
this.fontRulerC_ = null; | ||
@@ -66,21 +67,20 @@ this.setupLastResortWidths_(); | ||
FontWatchRunner.prototype.setupLastResortWidths_ = function() { | ||
var fontRuler = new FontRuler(this.domHelper_, this.fontTestString_); | ||
this.fontRulerA_ = new FontRuler(this.domHelper_, this.fontTestString_); | ||
this.fontRulerB_ = new FontRuler(this.domHelper_, this.fontTestString_); | ||
this.fontRulerC_ = new FontRuler(this.domHelper_, this.fontTestString_); | ||
fontRuler.insert(); | ||
this.fontRulerA_.setFont(new Font(FontWatchRunner.LastResortFonts.SERIF, this.font_.getVariation())); | ||
this.fontRulerB_.setFont(new Font(FontWatchRunner.LastResortFonts.SANS_SERIF, this.font_.getVariation())); | ||
this.fontRulerC_.setFont(new Font(FontWatchRunner.LastResortFonts.MONOSPACE, this.font_.getVariation())); | ||
for (var font in FontWatchRunner.LastResortFonts) { | ||
if (FontWatchRunner.LastResortFonts.hasOwnProperty(font)) { | ||
fontRuler.setFont(new Font(FontWatchRunner.LastResortFonts[font], this.font_.getVariation())); | ||
this.lastResortWidths_[FontWatchRunner.LastResortFonts[font]] = fontRuler.getWidth(); | ||
} | ||
} | ||
fontRuler.remove(); | ||
this.fontRulerA_.insert(); | ||
this.fontRulerB_.insert(); | ||
this.fontRulerC_.insert(); | ||
this.lastResortWidths_[FontWatchRunner.LastResortFonts.SERIF] = this.fontRulerA_.getWidth(); | ||
this.lastResortWidths_[FontWatchRunner.LastResortFonts.SANS_SERIF] = this.fontRulerB_.getWidth(); | ||
this.lastResortWidths_[FontWatchRunner.LastResortFonts.MONOSPACE] = this.fontRulerC_.getWidth(); | ||
}; | ||
FontWatchRunner.prototype.start = function() { | ||
this.fontRulerA_ = new FontRuler(this.domHelper_, this.fontTestString_); | ||
this.fontRulerA_.insert(); | ||
this.fontRulerB_ = new FontRuler(this.domHelper_, this.fontTestString_); | ||
this.fontRulerB_.insert(); | ||
this.started_ = goog.now(); | ||
@@ -206,3 +206,3 @@ | ||
this.check_(); | ||
}, this), 25); | ||
}, this), 50); | ||
}; | ||
@@ -217,4 +217,5 @@ | ||
this.fontRulerB_.remove(); | ||
this.fontRulerC_.remove(); | ||
callback(this.font_); | ||
}; | ||
}); |
@@ -1,10 +0,10 @@ | ||
/* Web Font Loader v1.5.15 - (c) Adobe Systems, Google. License: Apache 2.0 */ | ||
;(function(window,document,undefined){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function k(a,b,c){k=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?aa:ba;return k.apply(null,arguments)}var n=Date.now||function(){return+new Date};function q(a,b){this.J=a;this.t=b||a;this.C=this.t.document}q.prototype.createElement=function(a,b,c){a=this.C.createElement(a);if(b)for(var d in b)b.hasOwnProperty(d)&&("style"==d?a.style.cssText=b[d]:a.setAttribute(d,b[d]));c&&a.appendChild(this.C.createTextNode(c));return a};function r(a,b,c){a=a.C.getElementsByTagName(b)[0];a||(a=document.documentElement);a&&a.lastChild&&a.insertBefore(c,a.lastChild)}function ca(a,b){function c(){a.C.body?b():setTimeout(c,0)}c()} | ||
/* Web Font Loader v1.5.17 - (c) Adobe Systems, Google. License: Apache 2.0 */ | ||
;(function(window,document,undefined){function aa(a,b,c){return a.call.apply(a.bind,arguments)}function ba(a,b,c){if(!a)throw Error();if(2<arguments.length){var d=Array.prototype.slice.call(arguments,2);return function(){var c=Array.prototype.slice.call(arguments);Array.prototype.unshift.apply(c,d);return a.apply(b,c)}}return function(){return a.apply(b,arguments)}}function k(a,b,c){k=Function.prototype.bind&&-1!=Function.prototype.bind.toString().indexOf("native code")?aa:ba;return k.apply(null,arguments)}var n=Date.now||function(){return+new Date};function q(a,b){this.K=a;this.w=b||a;this.A=this.w.document}q.prototype.createElement=function(a,b,c){a=this.A.createElement(a);if(b)for(var d in b)b.hasOwnProperty(d)&&("style"==d?a.style.cssText=b[d]:a.setAttribute(d,b[d]));c&&a.appendChild(this.A.createTextNode(c));return a};function r(a,b,c){a=a.A.getElementsByTagName(b)[0];a||(a=document.documentElement);a&&a.lastChild&&a.insertBefore(c,a.lastChild)}function ca(a,b){function c(){a.A.body?b():setTimeout(c,0)}c()} | ||
function s(a,b,c){b=b||[];c=c||[];for(var d=a.className.split(/\s+/),e=0;e<b.length;e+=1){for(var f=!1,g=0;g<d.length;g+=1)if(b[e]===d[g]){f=!0;break}f||d.push(b[e])}b=[];for(e=0;e<d.length;e+=1){f=!1;for(g=0;g<c.length;g+=1)if(d[e]===c[g]){f=!0;break}f||b.push(d[e])}a.className=b.join(" ").replace(/\s+/g," ").replace(/^\s+|\s+$/,"")}function t(a,b){for(var c=a.className.split(/\s+/),d=0,e=c.length;d<e;d++)if(c[d]==b)return!0;return!1} | ||
function u(a){if("string"===typeof a.ma)return a.ma;var b=a.t.location.protocol;"about:"==b&&(b=a.J.location.protocol);return"https:"==b?"https:":"http:"}function v(a,b){var c=a.createElement("link",{rel:"stylesheet",href:b}),d=!1;c.onload=function(){d||(d=!0)};c.onerror=function(){d||(d=!0)};r(a,"head",c)} | ||
function w(a,b,c,d){var e=a.C.getElementsByTagName("head")[0];if(e){var f=a.createElement("script",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(g=!0,c&&c(null),f.onload=f.onreadystatechange=null,"HEAD"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);window.setTimeout(function(){g||(g=!0,c&&c(Error("Script load timeout")))},d||5E3);return f}return null};function x(a,b){this.X=a;this.fa=b};function y(a,b,c,d){this.c=null!=a?a:null;this.g=null!=b?b:null;this.A=null!=c?c:null;this.e=null!=d?d:null}var da=/^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/;y.prototype.compare=function(a){return this.c>a.c||this.c===a.c&&this.g>a.g||this.c===a.c&&this.g===a.g&&this.A>a.A?1:this.c<a.c||this.c===a.c&&this.g<a.g||this.c===a.c&&this.g===a.g&&this.A<a.A?-1:0};y.prototype.toString=function(){return[this.c,this.g||"",this.A||"",this.e||""].join("")}; | ||
function z(a){a=da.exec(a);var b=null,c=null,d=null,e=null;a&&(null!==a[1]&&a[1]&&(b=parseInt(a[1],10)),null!==a[2]&&a[2]&&(c=parseInt(a[2],10)),null!==a[3]&&a[3]&&(d=parseInt(a[3],10)),null!==a[4]&&a[4]&&(e=/^[0-9]+$/.test(a[4])?parseInt(a[4],10):a[4]));return new y(b,c,d,e)};function A(a,b,c,d,e,f,g,h){this.M=a;this.k=h}A.prototype.getName=function(){return this.M};function B(a){this.a=a}var ea=new A("Unknown",0,0,0,0,0,0,new x(!1,!1)); | ||
function u(a){if("string"===typeof a.na)return a.na;var b=a.w.location.protocol;"about:"==b&&(b=a.K.location.protocol);return"https:"==b?"https:":"http:"}function v(a,b){function c(a){for(var d=0;d<e.length;d++)if(e[d].href&&-1!==e[d].href.indexOf(b)){a();return}setTimeout(function(){c(a)},0)}var d=a.createElement("link",{rel:"stylesheet",href:b,media:"only x"}),e=a.A.styleSheets,f=!1;d.onload=function(){f||(f=!0)};d.onerror=function(){f||(f=!0)};r(a,"head",d);c(function(){d.media="all"})} | ||
function w(a,b,c,d){var e=a.A.getElementsByTagName("head")[0];if(e){var f=a.createElement("script",{src:b}),g=!1;f.onload=f.onreadystatechange=function(){g||this.readyState&&"loaded"!=this.readyState&&"complete"!=this.readyState||(g=!0,c&&c(null),f.onload=f.onreadystatechange=null,"HEAD"==f.parentNode.tagName&&e.removeChild(f))};e.appendChild(f);window.setTimeout(function(){g||(g=!0,c&&c(Error("Script load timeout")))},d||5E3);return f}return null};function x(a,b){this.Y=a;this.ga=b};function y(a,b,c,d){this.c=null!=a?a:null;this.g=null!=b?b:null;this.F=null!=c?c:null;this.e=null!=d?d:null}var da=/^([0-9]+)(?:[\._-]([0-9]+))?(?:[\._-]([0-9]+))?(?:[\._+-]?(.*))?$/;y.prototype.compare=function(a){return this.c>a.c||this.c===a.c&&this.g>a.g||this.c===a.c&&this.g===a.g&&this.F>a.F?1:this.c<a.c||this.c===a.c&&this.g<a.g||this.c===a.c&&this.g===a.g&&this.F<a.F?-1:0};y.prototype.toString=function(){return[this.c,this.g||"",this.F||"",this.e||""].join("")}; | ||
function z(a){a=da.exec(a);var b=null,c=null,d=null,e=null;a&&(null!==a[1]&&a[1]&&(b=parseInt(a[1],10)),null!==a[2]&&a[2]&&(c=parseInt(a[2],10)),null!==a[3]&&a[3]&&(d=parseInt(a[3],10)),null!==a[4]&&a[4]&&(e=/^[0-9]+$/.test(a[4])?parseInt(a[4],10):a[4]));return new y(b,c,d,e)};function A(a,b,c,d,e,f,g,h){this.N=a;this.m=h}A.prototype.getName=function(){return this.N};function B(a){this.a=a}var ea=new A("Unknown",0,0,0,0,0,0,new x(!1,!1)); | ||
B.prototype.parse=function(){var a;if(-1!=this.a.indexOf("MSIE")||-1!=this.a.indexOf("Trident/")){a=C(this);var b=z(D(this)),c=null,d=E(this.a,/Trident\/([\d\w\.]+)/,1),c=-1!=this.a.indexOf("MSIE")?z(E(this.a,/MSIE ([\d\w\.]+)/,1)):z(E(this.a,/rv:([\d\w\.]+)/,1));""!=d&&z(d);a=new A("MSIE",0,0,0,0,0,0,new x("Windows"==a&&6<=c.c||"Windows Phone"==a&&8<=b.c,!1))}else if(-1!=this.a.indexOf("Opera"))a:if(a=z(E(this.a,/Presto\/([\d\w\.]+)/,1)),z(D(this)),null!==a.c||z(E(this.a,/rv:([^\)]+)/,1)),-1!=this.a.indexOf("Opera Mini/"))a= | ||
z(E(this.a,/Opera Mini\/([\d\.]+)/,1)),a=new A("OperaMini",0,0,0,C(this),0,0,new x(!1,!1));else{if(-1!=this.a.indexOf("Version/")&&(a=z(E(this.a,/Version\/([\d\.]+)/,1)),null!==a.c)){a=new A("Opera",0,0,0,C(this),0,0,new x(10<=a.c,!1));break a}a=z(E(this.a,/Opera[\/ ]([\d\.]+)/,1));a=null!==a.c?new A("Opera",0,0,0,C(this),0,0,new x(10<=a.c,!1)):new A("Opera",0,0,0,C(this),0,0,new x(!1,!1))}else/OPR\/[\d.]+/.test(this.a)?a=F(this):/AppleWeb(K|k)it/.test(this.a)?a=F(this):-1!=this.a.indexOf("Gecko")? | ||
(a="Unknown",b=new y,z(D(this)),b=!1,-1!=this.a.indexOf("Firefox")?(a="Firefox",b=z(E(this.a,/Firefox\/([\d\w\.]+)/,1)),b=3<=b.c&&5<=b.g):-1!=this.a.indexOf("Mozilla")&&(a="Mozilla"),c=z(E(this.a,/rv:([^\)]+)/,1)),b||(b=1<c.c||1==c.c&&9<c.g||1==c.c&&9==c.g&&2<=c.A),a=new A(a,0,0,0,C(this),0,0,new x(b,!1))):a=ea;return a}; | ||
(a="Unknown",b=new y,z(D(this)),b=!1,-1!=this.a.indexOf("Firefox")?(a="Firefox",b=z(E(this.a,/Firefox\/([\d\w\.]+)/,1)),b=3<=b.c&&5<=b.g):-1!=this.a.indexOf("Mozilla")&&(a="Mozilla"),c=z(E(this.a,/rv:([^\)]+)/,1)),b||(b=1<c.c||1==c.c&&9<c.g||1==c.c&&9==c.g&&2<=c.F),a=new A(a,0,0,0,C(this),0,0,new x(b,!1))):a=ea;return a}; | ||
function C(a){var b=E(a.a,/(iPod|iPad|iPhone|Android|Windows Phone|BB\d{2}|BlackBerry)/,1);if(""!=b)return/BB\d{2}/.test(b)&&(b="BlackBerry"),b;a=E(a.a,/(Linux|Mac_PowerPC|Macintosh|Windows|CrOS|PlayStation|CrKey)/,1);return""!=a?("Mac_PowerPC"==a?a="Macintosh":"PlayStation"==a&&(a="Linux"),a):"Unknown"} | ||
@@ -14,18 +14,18 @@ function D(a){var b=E(a.a,/(OS X|Windows NT|Android) ([^;)]+)/,2);if(b||(b=E(a.a,/Windows Phone( OS)? ([^;)]+)/,2))||(b=E(a.a,/(iPhone )?OS ([\d_]+)/,2)))return b;if(b=E(a.a,/(?:Linux|CrOS|CrKey) ([^;)]+)/,1))for(var b=b.split(/\s/),c=0;c<b.length;c+=1)if(/^[\d\._]+$/.test(b[c]))return b[c];return(a=E(a.a,/(BB\d{2}|BlackBerry).*?Version\/([^\s]*)/,2))?a:"Unknown"} | ||
e?f="Unknown":"Silk"==e?f=E(a.a,/Silk\/([\d\._]+)/,1):"Chrome"==e?f=E(a.a,/(Chrome|CrMo|CriOS)\/([\d\.]+)/,2):-1!=a.a.indexOf("Version/")?f=E(a.a,/Version\/([\d\.\w]+)/,1):"AdobeAIR"==e?f=E(a.a,/AdobeAIR\/([\d\.]+)/,1):"Opera"==e?f=E(a.a,/OPR\/([\d.]+)/,1):"PhantomJS"==e&&(f=E(a.a,/PhantomJS\/([\d.]+)/,1));f=z(f);g="AdobeAIR"==e?2<f.c||2==f.c&&5<=f.g:"BlackBerry"==b?10<=c.c:"Android"==b?2<c.c||2==c.c&&1<c.g:526<=d.c||525<=d.c&&13<=d.g;return new A(e,0,0,0,0,0,0,new x(g,536>d.c||536==d.c&&11>d.g))} | ||
function E(a,b,c){return(a=a.match(b))&&a[c]?a[c]:""};function G(a){this.la=a||"-"}G.prototype.e=function(a){for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c].replace(/[\W_]+/g,"").toLowerCase());return b.join(this.la)};function H(a,b){this.M=a;this.Y=4;this.N="n";var c=(b||"n4").match(/^([nio])([1-9])$/i);c&&(this.N=c[1],this.Y=parseInt(c[2],10))}H.prototype.getName=function(){return this.M};function I(a){return a.N+a.Y}function ga(a){var b=4,c="n",d=null;a&&((d=a.match(/(normal|oblique|italic)/i))&&d[1]&&(c=d[1].substr(0,1).toLowerCase()),(d=a.match(/([1-9]00|normal|bold)/i))&&d[1]&&(/bold/i.test(d[1])?b=7:/[1-9]00/.test(d[1])&&(b=parseInt(d[1].substr(0,1),10))));return c+b};function ha(a,b){this.d=a;this.p=a.t.document.documentElement;this.P=b;this.j="wf";this.h=new G("-");this.ga=!1!==b.events;this.B=!1!==b.classes}function J(a){if(a.B){var b=t(a.p,a.h.e(a.j,"active")),c=[],d=[a.h.e(a.j,"loading")];b||c.push(a.h.e(a.j,"inactive"));s(a.p,c,d)}K(a,"inactive")}function K(a,b,c){if(a.ga&&a.P[b])if(c)a.P[b](c.getName(),I(c));else a.P[b]()};function ia(){this.w={}};function L(a,b){this.d=a;this.G=b;this.m=this.d.createElement("span",{"aria-hidden":"true"},this.G)}function M(a){r(a.d,"body",a.m)} | ||
function N(a){var b;b=[];for(var c=a.M.split(/,\s*/),d=0;d<c.length;d++){var e=c[d].replace(/['"]/g,"");-1==e.indexOf(" ")?b.push(e):b.push("'"+e+"'")}b=b.join(",");c="normal";"o"===a.N?c="oblique":"i"===a.N&&(c="italic");return"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:"+b+";"+("font-style:"+c+";font-weight:"+(a.Y+"00")+";")} | ||
L.prototype.remove=function(){var a=this.m;a.parentNode&&a.parentNode.removeChild(a)};function O(a,b,c,d,e,f,g,h){this.Z=a;this.ja=b;this.d=c;this.s=d;this.G=h||"BESbswy";this.k=e;this.I={};this.W=f||3E3;this.ba=g||null;this.F=this.D=null;a=new L(this.d,this.G);M(a);for(var m in P)P.hasOwnProperty(m)&&(b=new H(P[m],I(this.s)),b=N(b),a.m.style.cssText=b,this.I[P[m]]=a.m.offsetWidth);a.remove()}var P={ra:"serif",qa:"sans-serif",pa:"monospace"}; | ||
O.prototype.start=function(){this.D=new L(this.d,this.G);M(this.D);this.F=new L(this.d,this.G);M(this.F);this.na=n();var a=new H(this.s.getName()+",serif",I(this.s)),a=N(a);this.D.m.style.cssText=a;a=new H(this.s.getName()+",sans-serif",I(this.s));a=N(a);this.F.m.style.cssText=a;Q(this)};function R(a,b,c){for(var d in P)if(P.hasOwnProperty(d)&&b===a.I[P[d]]&&c===a.I[P[d]])return!0;return!1} | ||
function Q(a){var b=a.D.m.offsetWidth,c=a.F.m.offsetWidth;b===a.I.serif&&c===a.I["sans-serif"]||a.k.fa&&R(a,b,c)?n()-a.na>=a.W?a.k.fa&&R(a,b,c)&&(null===a.ba||a.ba.hasOwnProperty(a.s.getName()))?S(a,a.Z):S(a,a.ja):ja(a):S(a,a.Z)}function ja(a){setTimeout(k(function(){Q(this)},a),25)}function S(a,b){a.D.remove();a.F.remove();b(a.s)};function T(a,b,c,d){this.d=b;this.u=c;this.R=0;this.da=this.aa=!1;this.W=d;this.k=a.k}function ka(a,b,c,d,e){c=c||{};if(0===b.length&&e)J(a.u);else for(a.R+=b.length,e&&(a.aa=e),e=0;e<b.length;e++){var f=b[e],g=c[f.getName()],h=a.u,m=f;h.B&&s(h.p,[h.h.e(h.j,m.getName(),I(m).toString(),"loading")]);K(h,"fontloading",m);h=null;h=new O(k(a.ha,a),k(a.ia,a),a.d,f,a.k,a.W,d,g);h.start()}} | ||
T.prototype.ha=function(a){var b=this.u;b.B&&s(b.p,[b.h.e(b.j,a.getName(),I(a).toString(),"active")],[b.h.e(b.j,a.getName(),I(a).toString(),"loading"),b.h.e(b.j,a.getName(),I(a).toString(),"inactive")]);K(b,"fontactive",a);this.da=!0;la(this)}; | ||
T.prototype.ia=function(a){var b=this.u;if(b.B){var c=t(b.p,b.h.e(b.j,a.getName(),I(a).toString(),"active")),d=[],e=[b.h.e(b.j,a.getName(),I(a).toString(),"loading")];c||d.push(b.h.e(b.j,a.getName(),I(a).toString(),"inactive"));s(b.p,d,e)}K(b,"fontinactive",a);la(this)};function la(a){0==--a.R&&a.aa&&(a.da?(a=a.u,a.B&&s(a.p,[a.h.e(a.j,"active")],[a.h.e(a.j,"loading"),a.h.e(a.j,"inactive")]),K(a,"active")):J(a.u))};function U(a){this.J=a;this.v=new ia;this.oa=new B(a.navigator.userAgent);this.a=this.oa.parse();this.T=this.U=0;this.Q=this.S=!0} | ||
U.prototype.load=function(a){this.d=new q(this.J,a.context||this.J);this.S=!1!==a.events;this.Q=!1!==a.classes;var b=new ha(this.d,a),c=[],d=a.timeout;b.B&&s(b.p,[b.h.e(b.j,"loading")]);K(b,"loading");var c=this.v,e=this.d,f=[],g;for(g in a)if(a.hasOwnProperty(g)){var h=c.w[g];h&&f.push(h(a[g],e))}c=f;this.T=this.U=c.length;a=new T(this.a,this.d,b,d);d=0;for(g=c.length;d<g;d++)e=c[d],e.K(this.a,k(this.ka,this,e,b,a))}; | ||
U.prototype.ka=function(a,b,c,d){var e=this;d?a.load(function(a,b,d){ma(e,c,a,b,d)}):(a=0==--this.U,this.T--,a&&0==this.T?J(b):(this.Q||this.S)&&ka(c,[],{},null,a))};function ma(a,b,c,d,e){var f=0==--a.U;(a.Q||a.S)&&setTimeout(function(){ka(b,c,d||null,e||null,f)},0)};function na(a,b,c){this.O=a?a:b+oa;this.q=[];this.V=[];this.ea=c||""}var oa="//fonts.googleapis.com/css";na.prototype.e=function(){if(0==this.q.length)throw Error("No fonts to load!");if(-1!=this.O.indexOf("kit="))return this.O;for(var a=this.q.length,b=[],c=0;c<a;c++)b.push(this.q[c].replace(/ /g,"+"));a=this.O+"?family="+b.join("%7C");0<this.V.length&&(a+="&subset="+this.V.join(","));0<this.ea.length&&(a+="&text="+encodeURIComponent(this.ea));return a};function pa(a){this.q=a;this.ca=[];this.L={}} | ||
function E(a,b,c){return(a=a.match(b))&&a[c]?a[c]:""};function G(a){this.ma=a||"-"}G.prototype.e=function(a){for(var b=[],c=0;c<arguments.length;c++)b.push(arguments[c].replace(/[\W_]+/g,"").toLowerCase());return b.join(this.ma)};function H(a,b){this.N=a;this.Z=4;this.O="n";var c=(b||"n4").match(/^([nio])([1-9])$/i);c&&(this.O=c[1],this.Z=parseInt(c[2],10))}H.prototype.getName=function(){return this.N};function I(a){return a.O+a.Z}function ga(a){var b=4,c="n",d=null;a&&((d=a.match(/(normal|oblique|italic)/i))&&d[1]&&(c=d[1].substr(0,1).toLowerCase()),(d=a.match(/([1-9]00|normal|bold)/i))&&d[1]&&(/bold/i.test(d[1])?b=7:/[1-9]00/.test(d[1])&&(b=parseInt(d[1].substr(0,1),10))));return c+b};function ha(a,b){this.d=a;this.q=a.w.document.documentElement;this.Q=b;this.j="wf";this.h=new G("-");this.ha=!1!==b.events;this.G=!1!==b.classes}function J(a){if(a.G){var b=t(a.q,a.h.e(a.j,"active")),c=[],d=[a.h.e(a.j,"loading")];b||c.push(a.h.e(a.j,"inactive"));s(a.q,c,d)}K(a,"inactive")}function K(a,b,c){if(a.ha&&a.Q[b])if(c)a.Q[b](c.getName(),I(c));else a.Q[b]()};function ia(){this.D={}};function L(a,b){this.d=a;this.I=b;this.k=this.d.createElement("span",{"aria-hidden":"true"},this.I)}function M(a){r(a.d,"body",a.k)} | ||
function N(a){var b;b=[];for(var c=a.N.split(/,\s*/),d=0;d<c.length;d++){var e=c[d].replace(/['"]/g,"");-1==e.indexOf(" ")?b.push(e):b.push("'"+e+"'")}b=b.join(",");c="normal";"o"===a.O?c="oblique":"i"===a.O&&(c="italic");return"display:block;position:absolute;top:-9999px;left:-9999px;font-size:300px;width:auto;height:auto;line-height:normal;margin:0;padding:0;font-variant:normal;white-space:nowrap;font-family:"+b+";"+("font-style:"+c+";font-weight:"+(a.Z+"00")+";")} | ||
L.prototype.remove=function(){var a=this.k;a.parentNode&&a.parentNode.removeChild(a)};function O(a,b,c,d,e,f,g,h){this.$=a;this.ka=b;this.d=c;this.o=d;this.m=e;this.I=h||"BESbswy";this.v={};this.X=f||3E3;this.ca=g||null;this.H=this.u=this.t=null;this.t=new L(this.d,this.I);this.u=new L(this.d,this.I);this.H=new L(this.d,this.I);a=new H("serif",I(this.o));a=N(a);this.t.k.style.cssText=a;a=new H("sans-serif",I(this.o));a=N(a);this.u.k.style.cssText=a;a=new H("monospace",I(this.o));a=N(a);this.H.k.style.cssText=a;M(this.t);M(this.u);M(this.H);this.v.serif=this.t.k.offsetWidth;this.v["sans-serif"]= | ||
this.u.k.offsetWidth;this.v.monospace=this.H.k.offsetWidth}var P={sa:"serif",ra:"sans-serif",qa:"monospace"};O.prototype.start=function(){this.oa=n();var a=new H(this.o.getName()+",serif",I(this.o)),a=N(a);this.t.k.style.cssText=a;a=new H(this.o.getName()+",sans-serif",I(this.o));a=N(a);this.u.k.style.cssText=a;Q(this)};function R(a,b,c){for(var d in P)if(P.hasOwnProperty(d)&&b===a.v[P[d]]&&c===a.v[P[d]])return!0;return!1} | ||
function Q(a){var b=a.t.k.offsetWidth,c=a.u.k.offsetWidth;b===a.v.serif&&c===a.v["sans-serif"]||a.m.ga&&R(a,b,c)?n()-a.oa>=a.X?a.m.ga&&R(a,b,c)&&(null===a.ca||a.ca.hasOwnProperty(a.o.getName()))?S(a,a.$):S(a,a.ka):ja(a):S(a,a.$)}function ja(a){setTimeout(k(function(){Q(this)},a),50)}function S(a,b){a.t.remove();a.u.remove();a.H.remove();b(a.o)};function T(a,b,c,d){this.d=b;this.B=c;this.S=0;this.ea=this.ba=!1;this.X=d;this.m=a.m}function ka(a,b,c,d,e){c=c||{};if(0===b.length&&e)J(a.B);else for(a.S+=b.length,e&&(a.ba=e),e=0;e<b.length;e++){var f=b[e],g=c[f.getName()],h=a.B,m=f;h.G&&s(h.q,[h.h.e(h.j,m.getName(),I(m).toString(),"loading")]);K(h,"fontloading",m);h=null;h=new O(k(a.ia,a),k(a.ja,a),a.d,f,a.m,a.X,d,g);h.start()}} | ||
T.prototype.ia=function(a){var b=this.B;b.G&&s(b.q,[b.h.e(b.j,a.getName(),I(a).toString(),"active")],[b.h.e(b.j,a.getName(),I(a).toString(),"loading"),b.h.e(b.j,a.getName(),I(a).toString(),"inactive")]);K(b,"fontactive",a);this.ea=!0;la(this)}; | ||
T.prototype.ja=function(a){var b=this.B;if(b.G){var c=t(b.q,b.h.e(b.j,a.getName(),I(a).toString(),"active")),d=[],e=[b.h.e(b.j,a.getName(),I(a).toString(),"loading")];c||d.push(b.h.e(b.j,a.getName(),I(a).toString(),"inactive"));s(b.q,d,e)}K(b,"fontinactive",a);la(this)};function la(a){0==--a.S&&a.ba&&(a.ea?(a=a.B,a.G&&s(a.q,[a.h.e(a.j,"active")],[a.h.e(a.j,"loading"),a.h.e(a.j,"inactive")]),K(a,"active")):J(a.B))};function U(a){this.K=a;this.C=new ia;this.pa=new B(a.navigator.userAgent);this.a=this.pa.parse();this.U=this.V=0;this.R=this.T=!0} | ||
U.prototype.load=function(a){this.d=new q(this.K,a.context||this.K);this.T=!1!==a.events;this.R=!1!==a.classes;var b=new ha(this.d,a),c=[],d=a.timeout;b.G&&s(b.q,[b.h.e(b.j,"loading")]);K(b,"loading");var c=this.C,e=this.d,f=[],g;for(g in a)if(a.hasOwnProperty(g)){var h=c.D[g];h&&f.push(h(a[g],e))}c=f;this.U=this.V=c.length;a=new T(this.a,this.d,b,d);d=0;for(g=c.length;d<g;d++)e=c[d],e.L(this.a,k(this.la,this,e,b,a))}; | ||
U.prototype.la=function(a,b,c,d){var e=this;d?a.load(function(a,b,d){ma(e,c,a,b,d)}):(a=0==--this.V,this.U--,a&&0==this.U?J(b):(this.R||this.T)&&ka(c,[],{},null,a))};function ma(a,b,c,d,e){var f=0==--a.V;(a.R||a.T)&&setTimeout(function(){ka(b,c,d||null,e||null,f)},0)};function na(a,b,c){this.P=a?a:b+oa;this.s=[];this.W=[];this.fa=c||""}var oa="//fonts.googleapis.com/css";na.prototype.e=function(){if(0==this.s.length)throw Error("No fonts to load!");if(-1!=this.P.indexOf("kit="))return this.P;for(var a=this.s.length,b=[],c=0;c<a;c++)b.push(this.s[c].replace(/ /g,"+"));a=this.P+"?family="+b.join("%7C");0<this.W.length&&(a+="&subset="+this.W.join(","));0<this.fa.length&&(a+="&text="+encodeURIComponent(this.fa));return a};function pa(a){this.s=a;this.da=[];this.M={}} | ||
var qa={latin:"BESbswy",cyrillic:"йяЖ",greek:"αβΣ",khmer:"កខគ",Hanuman:"កខគ"},ra={thin:"1",extralight:"2","extra-light":"2",ultralight:"2","ultra-light":"2",light:"3",regular:"4",book:"4",medium:"5","semi-bold":"6",semibold:"6","demi-bold":"6",demibold:"6",bold:"7","extra-bold":"8",extrabold:"8","ultra-bold":"8",ultrabold:"8",black:"9",heavy:"9",l:"3",r:"4",b:"7"},sa={i:"i",italic:"i",n:"n",normal:"n"},ta=/^(thin|(?:(?:extra|ultra)-?)?light|regular|book|medium|(?:(?:semi|demi|extra|ultra)-?)?bold|black|heavy|l|r|b|[1-9]00)?(n|i|normal|italic)?$/; | ||
pa.prototype.parse=function(){for(var a=this.q.length,b=0;b<a;b++){var c=this.q[b].split(":"),d=c[0].replace(/\+/g," "),e=["n4"];if(2<=c.length){var f;var g=c[1];f=[];if(g)for(var g=g.split(","),h=g.length,m=0;m<h;m++){var l;l=g[m];if(l.match(/^[\w-]+$/)){l=ta.exec(l.toLowerCase());var p=void 0;if(null==l)p="";else{p=void 0;p=l[1];if(null==p||""==p)p="4";else var fa=ra[p],p=fa?fa:isNaN(p)?"4":p.substr(0,1);l=l[2];p=[null==l||""==l?"n":sa[l],p].join("")}l=p}else l="";l&&f.push(l)}0<f.length&&(e=f); | ||
3==c.length&&(c=c[2],f=[],c=c?c.split(","):f,0<c.length&&(c=qa[c[0]])&&(this.L[d]=c))}this.L[d]||(c=qa[d])&&(this.L[d]=c);for(c=0;c<e.length;c+=1)this.ca.push(new H(d,e[c]))}};function V(a,b){this.a=(new B(navigator.userAgent)).parse();this.d=a;this.f=b}var ua={Arimo:!0,Cousine:!0,Tinos:!0};V.prototype.K=function(a,b){b(a.k.X)};V.prototype.load=function(a){var b=this.d;"MSIE"==this.a.getName()&&1!=this.f.blocking?ca(b,k(this.$,this,a)):this.$(a)}; | ||
V.prototype.$=function(a){for(var b=this.d,c=new na(this.f.api,u(b),this.f.text),d=this.f.families,e=d.length,f=0;f<e;f++){var g=d[f].split(":");3==g.length&&c.V.push(g.pop());var h="";2==g.length&&""!=g[1]&&(h=":");c.q.push(g.join(h))}d=new pa(d);d.parse();v(b,c.e());a(d.ca,d.L,ua)};function W(a,b){this.d=a;this.f=b;this.o=[]}W.prototype.H=function(a){var b=this.d;return u(this.d)+(this.f.api||"//f.fontdeck.com/s/css/js/")+(b.t.location.hostname||b.J.location.hostname)+"/"+a+".js"}; | ||
W.prototype.K=function(a,b){var c=this.f.id,d=this.d.t,e=this;c?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[c]=function(a,c){for(var d=0,m=c.fonts.length;d<m;++d){var l=c.fonts[d];e.o.push(new H(l.name,ga("font-weight:"+l.weight+";font-style:"+l.style)))}b(a)},w(this.d,this.H(c),function(a){a&&b(!1)})):b(!1)};W.prototype.load=function(a){a(this.o)};function X(a,b){this.d=a;this.f=b;this.o=[]}X.prototype.H=function(a){var b=u(this.d);return(this.f.api||b+"//use.typekit.net")+"/"+a+".js"};X.prototype.K=function(a,b){var c=this.f.id,d=this.d.t,e=this;c?w(this.d,this.H(c),function(a){if(a)b(!1);else{if(d.Typekit&&d.Typekit.config&&d.Typekit.config.fn){a=d.Typekit.config.fn;for(var c=0;c<a.length;c+=2)for(var h=a[c],m=a[c+1],l=0;l<m.length;l++)e.o.push(new H(h,m[l]));try{d.Typekit.load({events:!1,classes:!1})}catch(p){}}b(!0)}},2E3):b(!1)}; | ||
X.prototype.load=function(a){a(this.o)};function Y(a,b){this.d=a;this.f=b;this.o=[]}Y.prototype.K=function(a,b){var c=this,d=c.f.projectId,e=c.f.version;if(d){var f=c.d.t;w(this.d,c.H(d,e),function(e){if(e)b(!1);else{if(f["__mti_fntLst"+d]&&(e=f["__mti_fntLst"+d]()))for(var h=0;h<e.length;h++)c.o.push(new H(e[h].fontfamily));b(a.k.X)}}).id="__MonotypeAPIScript__"+d}else b(!1)};Y.prototype.H=function(a,b){var c=u(this.d),d=(this.f.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return c+"//"+d+"/"+a+".js"+(b?"?v="+b:"")}; | ||
Y.prototype.load=function(a){a(this.o)};function Z(a,b){this.d=a;this.f=b}Z.prototype.load=function(a){var b,c,d=this.f.urls||[],e=this.f.families||[],f=this.f.testStrings||{};b=0;for(c=d.length;b<c;b++)v(this.d,d[b]);d=[];b=0;for(c=e.length;b<c;b++){var g=e[b].split(":");if(g[1])for(var h=g[1].split(","),m=0;m<h.length;m+=1)d.push(new H(g[0],h[m]));else d.push(new H(g[0]))}a(d,f)};Z.prototype.K=function(a,b){return b(a.k.X)};var $=new U(this);$.v.w.custom=function(a,b){return new Z(b,a)};$.v.w.fontdeck=function(a,b){return new W(b,a)};$.v.w.monotype=function(a,b){return new Y(b,a)};$.v.w.typekit=function(a,b){return new X(b,a)};$.v.w.google=function(a,b){return new V(b,a)};this.WebFont||(this.WebFont={},this.WebFont.load=k($.load,$),this.WebFontConfig&&$.load(this.WebFontConfig));})(this,document); | ||
pa.prototype.parse=function(){for(var a=this.s.length,b=0;b<a;b++){var c=this.s[b].split(":"),d=c[0].replace(/\+/g," "),e=["n4"];if(2<=c.length){var f;var g=c[1];f=[];if(g)for(var g=g.split(","),h=g.length,m=0;m<h;m++){var l;l=g[m];if(l.match(/^[\w-]+$/)){l=ta.exec(l.toLowerCase());var p=void 0;if(null==l)p="";else{p=void 0;p=l[1];if(null==p||""==p)p="4";else var fa=ra[p],p=fa?fa:isNaN(p)?"4":p.substr(0,1);l=l[2];p=[null==l||""==l?"n":sa[l],p].join("")}l=p}else l="";l&&f.push(l)}0<f.length&&(e=f); | ||
3==c.length&&(c=c[2],f=[],c=c?c.split(","):f,0<c.length&&(c=qa[c[0]])&&(this.M[d]=c))}this.M[d]||(c=qa[d])&&(this.M[d]=c);for(c=0;c<e.length;c+=1)this.da.push(new H(d,e[c]))}};function V(a,b){this.a=(new B(navigator.userAgent)).parse();this.d=a;this.f=b}var ua={Arimo:!0,Cousine:!0,Tinos:!0};V.prototype.L=function(a,b){b(a.m.Y)};V.prototype.load=function(a){var b=this.d;"MSIE"==this.a.getName()&&1!=this.f.blocking?ca(b,k(this.aa,this,a)):this.aa(a)}; | ||
V.prototype.aa=function(a){for(var b=this.d,c=new na(this.f.api,u(b),this.f.text),d=this.f.families,e=d.length,f=0;f<e;f++){var g=d[f].split(":");3==g.length&&c.W.push(g.pop());var h="";2==g.length&&""!=g[1]&&(h=":");c.s.push(g.join(h))}d=new pa(d);d.parse();v(b,c.e());a(d.da,d.M,ua)};function W(a,b){this.d=a;this.f=b;this.p=[]}W.prototype.J=function(a){var b=this.d;return u(this.d)+(this.f.api||"//f.fontdeck.com/s/css/js/")+(b.w.location.hostname||b.K.location.hostname)+"/"+a+".js"}; | ||
W.prototype.L=function(a,b){var c=this.f.id,d=this.d.w,e=this;c?(d.__webfontfontdeckmodule__||(d.__webfontfontdeckmodule__={}),d.__webfontfontdeckmodule__[c]=function(a,c){for(var d=0,m=c.fonts.length;d<m;++d){var l=c.fonts[d];e.p.push(new H(l.name,ga("font-weight:"+l.weight+";font-style:"+l.style)))}b(a)},w(this.d,this.J(c),function(a){a&&b(!1)})):b(!1)};W.prototype.load=function(a){a(this.p)};function X(a,b){this.d=a;this.f=b;this.p=[]}X.prototype.J=function(a){var b=u(this.d);return(this.f.api||b+"//use.typekit.net")+"/"+a+".js"};X.prototype.L=function(a,b){var c=this.f.id,d=this.d.w,e=this;c?w(this.d,this.J(c),function(a){if(a)b(!1);else{if(d.Typekit&&d.Typekit.config&&d.Typekit.config.fn){a=d.Typekit.config.fn;for(var c=0;c<a.length;c+=2)for(var h=a[c],m=a[c+1],l=0;l<m.length;l++)e.p.push(new H(h,m[l]));try{d.Typekit.load({events:!1,classes:!1})}catch(p){}}b(!0)}},2E3):b(!1)}; | ||
X.prototype.load=function(a){a(this.p)};function Y(a,b){this.d=a;this.f=b;this.p=[]}Y.prototype.L=function(a,b){var c=this,d=c.f.projectId,e=c.f.version;if(d){var f=c.d.w;w(this.d,c.J(d,e),function(e){if(e)b(!1);else{if(f["__mti_fntLst"+d]&&(e=f["__mti_fntLst"+d]()))for(var h=0;h<e.length;h++)c.p.push(new H(e[h].fontfamily));b(a.m.Y)}}).id="__MonotypeAPIScript__"+d}else b(!1)};Y.prototype.J=function(a,b){var c=u(this.d),d=(this.f.api||"fast.fonts.net/jsapi").replace(/^.*http(s?):(\/\/)?/,"");return c+"//"+d+"/"+a+".js"+(b?"?v="+b:"")}; | ||
Y.prototype.load=function(a){a(this.p)};function Z(a,b){this.d=a;this.f=b}Z.prototype.load=function(a){var b,c,d=this.f.urls||[],e=this.f.families||[],f=this.f.testStrings||{};b=0;for(c=d.length;b<c;b++)v(this.d,d[b]);d=[];b=0;for(c=e.length;b<c;b++){var g=e[b].split(":");if(g[1])for(var h=g[1].split(","),m=0;m<h.length;m+=1)d.push(new H(g[0],h[m]));else d.push(new H(g[0]))}a(d,f)};Z.prototype.L=function(a,b){return b(a.m.Y)};var $=new U(this);$.C.D.custom=function(a,b){return new Z(b,a)};$.C.D.fontdeck=function(a,b){return new W(b,a)};$.C.D.monotype=function(a,b){return new Y(b,a)};$.C.D.typekit=function(a,b){return new X(b,a)};$.C.D.google=function(a,b){return new V(b,a)};this.WebFont||(this.WebFont={},this.WebFont.load=k($.load,$),this.WebFontConfig&&$.load(this.WebFontConfig));})(this,document); | ||
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
Sorry, the diff of this file is not supported yet
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
0
121
7734398
11055
345