/
typekit_script.js
59 lines (49 loc) · 1.83 KB
/
typekit_script.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/**
* @constructor
*/
webfont.TypekitScript = function(domHelper, configuration) {
this.domHelper_ = domHelper;
this.configuration_ = configuration;
this.fontFamilies_ = [];
this.fontVariations_ = {};
};
webfont.TypekitScript.NAME = 'typekit';
webfont.TypekitScript.HOOK = '__webfonttypekitmodule__';
webfont.TypekitScript.prototype.getScriptSrc = function(kitId) {
var protocol = this.domHelper_.getProtocol();
var api = this.configuration_['api'] || protocol + '//use.typekit.com';
return api + '/' + kitId + '.js';
};
webfont.TypekitScript.prototype.supportUserAgent = function(userAgent, support) {
var kitId = this.configuration_['id'];
var configuration = this.configuration_;
var loadWindow = this.domHelper_.getLoadWindow();
var self = this;
if (kitId) {
// Provide data to Typekit for processing.main
if (!loadWindow[webfont.TypekitScript.HOOK]) {
loadWindow[webfont.TypekitScript.HOOK] = {};
}
// Typekit will call 'init' to indicate whether it supports fonts
// and what fonts will be provided.
loadWindow[webfont.TypekitScript.HOOK][kitId] = function(callback) {
var init = function(typekitSupports, fontFamilies, fontVariations) {
self.fontFamilies_ = fontFamilies;
self.fontVariations_ = fontVariations;
support(typekitSupports);
};
callback(userAgent, configuration, init);
};
// Load the Typekit script.
var script = this.domHelper_.createScriptSrc(this.getScriptSrc(kitId))
this.domHelper_.insertInto('head', script);
} else {
support(true);
}
};
webfont.TypekitScript.prototype.load = function(onReady) {
onReady(this.fontFamilies_, this.fontVariations_);
};
globalNamespaceObject.addModule(webfont.TypekitScript.NAME, function(configuration, domHelper) {
return new webfont.TypekitScript(domHelper, configuration);
});