webfontloader 1.2.0 → 1.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +9 -0
- data/Gemfile +2 -8
- data/README.md +31 -32
- data/Rakefile +2 -33
- data/docs/EVENTS.md +10 -1
- data/docs/MODULES.md +4 -3
- data/lib/webfontloader.rb +1 -1
- data/spec/ascender/ascenderscript_spec.js +43 -0
- data/spec/core/cssclassname_spec.js +42 -0
- data/spec/core/cssfontfamilyname_spec.js +38 -0
- data/spec/core/domhelper_spec.js +158 -0
- data/spec/core/eventdispatcher_spec.js +209 -0
- data/spec/core/font_spec.js +218 -0
- data/spec/core/fontmoduleloader_spec.js +55 -0
- data/spec/core/fontruler_spec.js +33 -0
- data/spec/core/fontvariationdescription_spec.js +67 -0
- data/spec/core/fontwatcher_spec.js +204 -0
- data/spec/core/fontwatchrunner_spec.js +398 -0
- data/spec/core/size_spec.js +17 -0
- data/spec/core/useragentparser_spec.js +921 -0
- data/spec/custom/customcss_spec.js +36 -0
- data/spec/fontdeck/fontdeckscript_spec.js +111 -0
- data/spec/fonts/LICENSE.txt +93 -0
- data/spec/fonts/nullfont.css +1 -0
- data/spec/fonts/nullfont1.css +1 -0
- data/spec/fonts/nullfont2.css +1 -0
- data/spec/fonts/nullfont3.css +1 -0
- data/spec/fonts/sourcesans.eot +0 -0
- data/spec/fonts/sourcesans.otf +0 -0
- data/spec/fonts/sourcesans.svg +2523 -0
- data/spec/fonts/sourcesans.ttf +0 -0
- data/spec/fonts/sourcesans.woff +0 -0
- data/spec/fonts/sourcesansa.css +1 -0
- data/spec/fonts/sourcesansb.css +1 -0
- data/spec/google/fontapiparser_spec.js +348 -0
- data/spec/google/fontapiurlbuilder_spec.js +40 -0
- data/spec/google/googlefontapi_spec.js +123 -0
- data/spec/google/lastresortwebkitfontwatchrunner_spec.js +145 -0
- data/spec/index.html +95 -0
- data/spec/monotype/monotypescript_spec.js +49 -0
- data/spec/typekit/typekitscript_spec.js +93 -0
- data/src/core/domhelper.js +6 -3
- data/src/core/fontruler.js +1 -1
- data/src/core/fontwatcher.js +5 -0
- data/src/core/fontwatchrunner.js +7 -4
- data/src/monotype/monotype_script.js +4 -3
- data/tools/jasmine-phantomjs/jasmine-phantomjs.js +26 -0
- data/tools/jasmine-phantomjs/terminal-reporter.js +177 -0
- data/tools/jasmine/MIT.LICENSE +20 -0
- data/tools/jasmine/jasmine-html.js +681 -0
- data/tools/jasmine/jasmine.css +82 -0
- data/tools/jasmine/jasmine.js +2600 -0
- data/webfontloader.gemspec +46 -25
- metadata +77 -42
- data/src-test/ascender/ascender_script_test.js +0 -51
- data/src-test/core/cssclassnametest.js +0 -42
- data/src-test/core/cssfontfamilynametest.js +0 -54
- data/src-test/core/domhelpertest.js +0 -151
- data/src-test/core/eventdispatchertest.js +0 -275
- data/src-test/core/fontmoduleloadertest.js +0 -30
- data/src-test/core/fonttest.js +0 -121
- data/src-test/core/fontvariationdescriptiontest.js +0 -76
- data/src-test/core/fontwatchertest.js +0 -287
- data/src-test/core/fontwatchrunnertest.js +0 -454
- data/src-test/core/useragenttest.js +0 -755
- data/src-test/custom/customcsstest.js +0 -35
- data/src-test/fontdeck/fontdeck_script_test.js +0 -116
- data/src-test/google/fontapiparsertest.js +0 -252
- data/src-test/google/fontapiurlbuildertest.js +0 -71
- data/src-test/google/googlefontapitest.js +0 -185
- data/src-test/google/lastresortwebkitfontwatchrunnertest.js +0 -204
- data/src-test/monotype/monotype_script_test.js +0 -304
- data/src-test/typekit/typekit_script_test.js +0 -195
- data/tools/jstestdriver/JsTestDriver-1.2.1.jar +0 -0
@@ -0,0 +1,145 @@
|
|
1
|
+
describe('LastResortWebKitFontWatchRunner', function () {
|
2
|
+
var LastResortWebKitFontWatchRunner = webfont.LastResortWebKitFontWatchRunner,
|
3
|
+
Size = webfont.Size,
|
4
|
+
DomHelper = webfont.DomHelper,
|
5
|
+
domHelper = new DomHelper(window),
|
6
|
+
fontFamily = 'My Family',
|
7
|
+
fontDescription = 'n4';
|
8
|
+
|
9
|
+
var timesToCheckSizeBeforeChange = 0,
|
10
|
+
TARGET_SIZE = new Size(3, 3),
|
11
|
+
FALLBACK_SIZE_A = new Size(1, 1),
|
12
|
+
FALLBACK_SIZE_B = new Size(2, 2),
|
13
|
+
LAST_RESORT_SIZE = new Size(4, 4),
|
14
|
+
|
15
|
+
setupSizes = [FALLBACK_SIZE_A, FALLBACK_SIZE_B, LAST_RESORT_SIZE],
|
16
|
+
actualSizes = [],
|
17
|
+
fakeGetSizeCount = 0,
|
18
|
+
setupFinished = false,
|
19
|
+
fakeFontSizer = {
|
20
|
+
getSize: function (el) {
|
21
|
+
var result = null;
|
22
|
+
|
23
|
+
if (setupFinished) {
|
24
|
+
// If you are getting an exception here your tests does not specify enough
|
25
|
+
// size data to run properly.
|
26
|
+
if (fakeGetSizeCount >= actualSizes.length) {
|
27
|
+
throw 'Invalid test data';
|
28
|
+
}
|
29
|
+
result = actualSizes[fakeGetSizeCount];
|
30
|
+
fakeGetSizeCount += 1;
|
31
|
+
} else {
|
32
|
+
result = setupSizes[Math.min(fakeGetSizeCount, setupSizes.length - 1)];
|
33
|
+
fakeGetSizeCount += 1;
|
34
|
+
}
|
35
|
+
return result;
|
36
|
+
}
|
37
|
+
},
|
38
|
+
timesToGetTimeBeforeTimeout = 10,
|
39
|
+
fakeGetTime = function () {
|
40
|
+
if (timesToGetTimeBeforeTimeout <= 0) {
|
41
|
+
return 6000;
|
42
|
+
} else {
|
43
|
+
timesToGetTimeBeforeTimeout -= 1;
|
44
|
+
return 1;
|
45
|
+
}
|
46
|
+
},
|
47
|
+
asyncCount = 0,
|
48
|
+
fakeAsyncCall = function (func, timeout) {
|
49
|
+
asyncCount += 1;
|
50
|
+
func();
|
51
|
+
},
|
52
|
+
setupFinished = false,
|
53
|
+
originalStartMethod = null,
|
54
|
+
activeCallback = null,
|
55
|
+
inactiveCallback = null;
|
56
|
+
|
57
|
+
beforeEach(function () {
|
58
|
+
actualSizes = [];
|
59
|
+
setupFinished = false;
|
60
|
+
fakeGetSizeCount = 0;
|
61
|
+
|
62
|
+
asyncCount = 0;
|
63
|
+
timesToGetTimeBeforeTimeout = 10;
|
64
|
+
activeCallback = jasmine.createSpy('activeCallback');
|
65
|
+
inactiveCallback = jasmine.createSpy('inactiveCallback');
|
66
|
+
|
67
|
+
originalStartMethod = LastResortWebKitFontWatchRunner.prototype.start;
|
68
|
+
|
69
|
+
LastResortWebKitFontWatchRunner.prototype.start = function () {
|
70
|
+
setupFinished = true;
|
71
|
+
fakeGetSizeCount = 0;
|
72
|
+
originalStartMethod.apply(this);
|
73
|
+
};
|
74
|
+
});
|
75
|
+
|
76
|
+
afterEach(function () {
|
77
|
+
LastResortWebKitFontWatchRunner.prototype.start = originalStartMethod;
|
78
|
+
});
|
79
|
+
|
80
|
+
it('should ignore fallback size and call active', function () {
|
81
|
+
actualSizes = [
|
82
|
+
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
|
83
|
+
TARGET_SIZE, TARGET_SIZE
|
84
|
+
];
|
85
|
+
|
86
|
+
var fontWatchRunner = new LastResortWebKitFontWatchRunner(activeCallback, inactiveCallback,
|
87
|
+
domHelper, fakeFontSizer, fakeAsyncCall, fakeGetTime, fontFamily, fontDescription, true);
|
88
|
+
|
89
|
+
fontWatchRunner.start();
|
90
|
+
|
91
|
+
expect(asyncCount).toEqual(1);
|
92
|
+
expect(activeCallback).toHaveBeenCalledWith('My Family', 'n4');
|
93
|
+
});
|
94
|
+
|
95
|
+
it('should consider last resort font as having identical metrics and call active', function () {
|
96
|
+
actualSizes = [
|
97
|
+
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
|
98
|
+
LAST_RESORT_SIZE, LAST_RESORT_SIZE
|
99
|
+
];
|
100
|
+
|
101
|
+
timesToGetTimeBeforeTimeout = 2;
|
102
|
+
|
103
|
+
var fontWatchRunner = new LastResortWebKitFontWatchRunner(activeCallback, inactiveCallback,
|
104
|
+
domHelper, fakeFontSizer, fakeAsyncCall, fakeGetTime, 'Arimo', fontDescription, true);
|
105
|
+
|
106
|
+
fontWatchRunner.start();
|
107
|
+
|
108
|
+
expect(asyncCount).toEqual(1);
|
109
|
+
expect(activeCallback).toHaveBeenCalledWith('Arimo', 'n4');
|
110
|
+
});
|
111
|
+
|
112
|
+
it('should fail to load font and call inactive', function () {
|
113
|
+
actualSizes = [
|
114
|
+
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
|
115
|
+
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
|
116
|
+
FALLBACK_SIZE_A, FALLBACK_SIZE_B
|
117
|
+
];
|
118
|
+
|
119
|
+
timesToGetTimeBeforeTimeout = 3;
|
120
|
+
|
121
|
+
var fontWatchRunner = new LastResortWebKitFontWatchRunner(activeCallback, inactiveCallback,
|
122
|
+
domHelper, fakeFontSizer, fakeAsyncCall, fakeGetTime, fontFamily, fontDescription, true);
|
123
|
+
|
124
|
+
fontWatchRunner.start();
|
125
|
+
|
126
|
+
expect(asyncCount).toEqual(2);
|
127
|
+
expect(inactiveCallback).toHaveBeenCalledWith('My Family', 'n4');
|
128
|
+
});
|
129
|
+
|
130
|
+
it('should call inactive when we are loading a metric incompatible font', function () {
|
131
|
+
actualSizes = [
|
132
|
+
LAST_RESORT_SIZE, LAST_RESORT_SIZE,
|
133
|
+
LAST_RESORT_SIZE, LAST_RESORT_SIZE
|
134
|
+
];
|
135
|
+
|
136
|
+
timesToGetTimeBeforeTimeout = 2;
|
137
|
+
|
138
|
+
var fontWatchRunner = new LastResortWebKitFontWatchRunner(activeCallback, inactiveCallback,
|
139
|
+
domHelper, fakeFontSizer, fakeAsyncCall, fakeGetTime, fontFamily, fontDescription, true);
|
140
|
+
|
141
|
+
fontWatchRunner.start();
|
142
|
+
expect(asyncCount).toEqual(1);
|
143
|
+
expect(inactiveCallback).toHaveBeenCalledWith('My Family', 'n4');
|
144
|
+
});
|
145
|
+
});
|
data/spec/index.html
ADDED
@@ -0,0 +1,95 @@
|
|
1
|
+
<!doctype html>
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<title>Webfontloader tests</title>
|
5
|
+
<link rel="stylesheet" href="../tools/jasmine/jasmine.css">
|
6
|
+
|
7
|
+
<link rel="stylesheet" href="fonts/nullfont.css">
|
8
|
+
<link rel="stylesheet" href="fonts/nullfont1.css">
|
9
|
+
<link rel="stylesheet" href="fonts/nullfont2.css">
|
10
|
+
<link rel="stylesheet" href="fonts/nullfont3.css">
|
11
|
+
<link rel="stylesheet" href="fonts/sourcesansa.css">
|
12
|
+
</head>
|
13
|
+
<body>
|
14
|
+
<script src="../tools/jasmine/jasmine.js"></script>
|
15
|
+
<script src="../tools/jasmine/jasmine-html.js"></script>
|
16
|
+
<script src="../tools/jasmine-phantomjs/terminal-reporter.js"></script>
|
17
|
+
|
18
|
+
<script src="../src/core/namespace.js"></script>
|
19
|
+
<script src="../src/core/domhelper.js"></script>
|
20
|
+
<script src="../src/core/cssclassname.js"></script>
|
21
|
+
<script src="../src/core/cssfontfamilyname.js"></script>
|
22
|
+
<script src="../src/core/fontvariationdescription.js"></script>
|
23
|
+
<script src="../src/core/browserinfo.js"></script>
|
24
|
+
<script src="../src/core/useragent.js"></script>
|
25
|
+
<script src="../src/core/useragentparser.js"></script>
|
26
|
+
<script src="../src/core/fontmoduleloader.js"></script>
|
27
|
+
<script src="../src/core/eventdispatcher.js"></script>
|
28
|
+
<script src="../src/core/size.js"></script>
|
29
|
+
<script src="../src/core/fontruler.js"></script>
|
30
|
+
<script src="../src/core/fontwatchrunner.js"></script>
|
31
|
+
<script src="../src/core/fontwatcher.js"></script>
|
32
|
+
<script src="../src/core/font.js"></script>
|
33
|
+
<script src="../src/core/initialize.js"></script>
|
34
|
+
<script src="../src/google/fontapiparser.js"></script>
|
35
|
+
<script src="../src/google/fontapiurlbuilder.js"></script>
|
36
|
+
<script src="../src/google/googlefontapi.js"></script>
|
37
|
+
<script src="../src/google/lastresortwebkitfontwatchrunner.js"></script>
|
38
|
+
<script src="../src/custom/customcss.js"></script>
|
39
|
+
<script src="../src/ascender/ascender_script.js"></script>
|
40
|
+
<script src="../src/fontdeck/fontdeck_script.js"></script>
|
41
|
+
<script src="../src/monotype/monotype_script.js"></script>
|
42
|
+
<script src="../src/typekit/typekit_script.js"></script>
|
43
|
+
|
44
|
+
<script src="../spec/core/domhelper_spec.js"></script>
|
45
|
+
<script src="../spec/core/cssclassname_spec.js"></script>
|
46
|
+
<script src="../spec/core/cssfontfamilyname_spec.js"></script>
|
47
|
+
<script src="../spec/core/fontvariationdescription_spec.js"></script>
|
48
|
+
<script src="../spec/core/useragentparser_spec.js"></script>
|
49
|
+
<script src="../spec/core/fontmoduleloader_spec.js"></script>
|
50
|
+
<script src="../spec/core/eventdispatcher_spec.js"></script>
|
51
|
+
<script src="../spec/core/size_spec.js"></script>
|
52
|
+
<script src="../spec/core/fontruler_spec.js"></script>
|
53
|
+
<script src="../spec/core/fontwatchrunner_spec.js"></script>
|
54
|
+
<script src="../spec/core/fontwatcher_spec.js"></script>
|
55
|
+
<script src="../spec/core/font_spec.js"></script>
|
56
|
+
<script src="../spec/google/fontapiparser_spec.js"></script>
|
57
|
+
<script src="../spec/google/fontapiurlbuilder_spec.js"></script>
|
58
|
+
<script src="../spec/google/googlefontapi_spec.js"></script>
|
59
|
+
<script src="../spec/google/lastresortwebkitfontwatchrunner_spec.js"></script>
|
60
|
+
<script src="../spec/custom/customcss_spec.js"></script>
|
61
|
+
<script src="../spec/ascender/ascenderscript_spec.js"></script>
|
62
|
+
<script src="../spec/fontdeck/fontdeckscript_spec.js"></script>
|
63
|
+
<script src="../spec/monotype/monotypescript_spec.js"></script>
|
64
|
+
<script src="../spec/typekit/typekitscript_spec.js"></script>
|
65
|
+
|
66
|
+
<script>
|
67
|
+
(function () {
|
68
|
+
var env = jasmine.getEnv();
|
69
|
+
|
70
|
+
env.updateInterval = 1000;
|
71
|
+
|
72
|
+
var htmlReporter = new jasmine.HtmlReporter(),
|
73
|
+
terminalReporter = new jasmine.TerminalReporter({
|
74
|
+
verbosity: 3,
|
75
|
+
color: true
|
76
|
+
});
|
77
|
+
|
78
|
+
env.addReporter(terminalReporter);
|
79
|
+
env.addReporter(htmlReporter);
|
80
|
+
env.specFilter = function (spec) {
|
81
|
+
return htmlReporter.specFilter(spec);
|
82
|
+
};
|
83
|
+
|
84
|
+
var currentOnload = window.onload;
|
85
|
+
|
86
|
+
window.onload = function () {
|
87
|
+
if (currentOnload) {
|
88
|
+
currentOnload();
|
89
|
+
}
|
90
|
+
env.execute();
|
91
|
+
};
|
92
|
+
}());
|
93
|
+
</script>
|
94
|
+
</body>
|
95
|
+
</html>
|
@@ -0,0 +1,49 @@
|
|
1
|
+
describe('MonotypeScript', function () {
|
2
|
+
var MonotypeScript = webfont.MonotypeScript,
|
3
|
+
BrowserInfo = webfont.BrowserInfo,
|
4
|
+
UserAgent = webfont.UserAgent;
|
5
|
+
|
6
|
+
var configuration = {
|
7
|
+
projectId: '01e2ff27-25bf-4801-a23e-73d328e6c7cc',
|
8
|
+
api: 'http://fast.fonts.com/jsapidev'
|
9
|
+
};
|
10
|
+
|
11
|
+
var fakeDomHelper = null,
|
12
|
+
global = null,
|
13
|
+
script = {},
|
14
|
+
monotype = null,
|
15
|
+
load = null,
|
16
|
+
useragent = null,
|
17
|
+
support = null;
|
18
|
+
|
19
|
+
beforeEach(function () {
|
20
|
+
global = {};
|
21
|
+
|
22
|
+
fakeDomHelper = {
|
23
|
+
createElement: jasmine.createSpy('createElement').andReturn(script),
|
24
|
+
insertInto: jasmine.createSpy('insertInto'),
|
25
|
+
getLoadWindow: jasmine.createSpy('getLoadWindow').andReturn(global),
|
26
|
+
getProtocol: jasmine.createSpy('getProtocol').andReturn('http:')
|
27
|
+
};
|
28
|
+
support = jasmine.createSpy('support');
|
29
|
+
load = jasmine.createSpy('load');
|
30
|
+
useragent = new UserAgent('Firefox', '3.6', 'Gecko', '1.9.3', 'Macintosh', '10.6', undefined, new BrowserInfo(true, false));
|
31
|
+
|
32
|
+
monotype = new MonotypeScript(useragent, fakeDomHelper, configuration);
|
33
|
+
monotype.supportUserAgent(useragent, support);
|
34
|
+
monotype.load(load);
|
35
|
+
|
36
|
+
global[MonotypeScript.HOOK + configuration.projectId] = function () {
|
37
|
+
return ['aachen bold', 'kid print regular'];
|
38
|
+
};
|
39
|
+
|
40
|
+
script.onload();
|
41
|
+
});
|
42
|
+
|
43
|
+
it('should create a script element', function () {
|
44
|
+
expect(support).toHaveBeenCalled();
|
45
|
+
expect(fakeDomHelper.createElement).toHaveBeenCalledWith('script');
|
46
|
+
expect(script.src).toEqual('http://fast.fonts.com/jsapidev/01e2ff27-25bf-4801-a23e-73d328e6c7cc.js');
|
47
|
+
expect(load).toHaveBeenCalledWith([undefined, undefined], {});
|
48
|
+
});
|
49
|
+
});
|
@@ -0,0 +1,93 @@
|
|
1
|
+
describe('TypekitScript', function () {
|
2
|
+
var TypekitScript = webfont.TypekitScript;
|
3
|
+
|
4
|
+
var configuration = {
|
5
|
+
id: 'abc'
|
6
|
+
};
|
7
|
+
|
8
|
+
var fakeDomHelper = null,
|
9
|
+
global = {},
|
10
|
+
load = null,
|
11
|
+
support = null;
|
12
|
+
|
13
|
+
beforeEach(function () {
|
14
|
+
global = {};
|
15
|
+
|
16
|
+
support = jasmine.createSpy('support');
|
17
|
+
|
18
|
+
load = jasmine.createSpy('load');
|
19
|
+
|
20
|
+
fakeDomHelper = {
|
21
|
+
insertInto: jasmine.createSpy('insertInto'),
|
22
|
+
createScriptSrc: jasmine.createSpy('createScriptSrc'),
|
23
|
+
getLoadWindow: jasmine.createSpy('getLoadWindow').andReturn(global),
|
24
|
+
getProtocol: jasmine.createSpy('getProtocol').andReturn('http:')
|
25
|
+
};
|
26
|
+
});
|
27
|
+
|
28
|
+
it('support load and life cycle', function () {
|
29
|
+
var typekit = new TypekitScript(fakeDomHelper, configuration);
|
30
|
+
|
31
|
+
typekit.supportUserAgent('useragent', support);
|
32
|
+
|
33
|
+
expect(fakeDomHelper.insertInto.calls[0].args[0]).toEqual('head');
|
34
|
+
expect(fakeDomHelper.createScriptSrc).toHaveBeenCalledWith('http://use.typekit.com/abc.js');
|
35
|
+
expect(support).not.toHaveBeenCalled();
|
36
|
+
|
37
|
+
expect(global.__webfonttypekitmodule__).not.toBeNull();
|
38
|
+
expect(global.__webfonttypekitmodule__['abc']).not.toBeNull();
|
39
|
+
|
40
|
+
global.__webfonttypekitmodule__['abc'](function (ua, config, init) {
|
41
|
+
expect(ua).toEqual('useragent');
|
42
|
+
expect(config).toEqual(configuration);
|
43
|
+
expect(init).not.toBeNull();
|
44
|
+
init(true, ['Font1', 'Font2'], {});
|
45
|
+
});
|
46
|
+
|
47
|
+
expect(support).toHaveBeenCalled();
|
48
|
+
|
49
|
+
typekit.load(load);
|
50
|
+
|
51
|
+
expect(load).toHaveBeenCalledWith(['Font1', 'Font2'], { 'Font1': undefined, 'Font2': undefined });
|
52
|
+
});
|
53
|
+
|
54
|
+
it('should load with variations', function () {
|
55
|
+
var typekit = new TypekitScript(fakeDomHelper, configuration);
|
56
|
+
|
57
|
+
typekit.supportUserAgent('useragent', support);
|
58
|
+
|
59
|
+
global.__webfonttypekitmodule__['abc'](function (ua, config, init) {
|
60
|
+
init(true, ['Font1', 'Font2'], {
|
61
|
+
'Font1': ['n7', 'i7']
|
62
|
+
});
|
63
|
+
});
|
64
|
+
|
65
|
+
expect(support).toHaveBeenCalled();
|
66
|
+
|
67
|
+
typekit.load(load);
|
68
|
+
|
69
|
+
expect(load).toHaveBeenCalledWith(['Font1', 'Font2'], { 'Font1': ['n7', 'i7'], 'Font2': undefined });
|
70
|
+
});
|
71
|
+
|
72
|
+
it('should load through the alternative API', function () {
|
73
|
+
var typekit = new TypekitScript(fakeDomHelper, { id: 'abc', api: '/test' });
|
74
|
+
|
75
|
+
typekit.supportUserAgent('useragent', support);
|
76
|
+
expect(fakeDomHelper.insertInto.calls[0].args[0]).toEqual('head');
|
77
|
+
expect(fakeDomHelper.createScriptSrc).toHaveBeenCalledWith('/test/abc.js');
|
78
|
+
});
|
79
|
+
|
80
|
+
it('should not load without a kit id', function () {
|
81
|
+
var typekit = new TypekitScript(fakeDomHelper, { id: null });
|
82
|
+
|
83
|
+
typekit.supportUserAgent('useragent', support);
|
84
|
+
|
85
|
+
expect(fakeDomHelper.insertInto).not.toHaveBeenCalled();
|
86
|
+
expect(fakeDomHelper.createScriptSrc).not.toHaveBeenCalled();
|
87
|
+
expect(support).toHaveBeenCalled();
|
88
|
+
|
89
|
+
typekit.load(load);
|
90
|
+
|
91
|
+
expect(load).toHaveBeenCalledWith([], {});
|
92
|
+
});
|
93
|
+
});
|
data/src/core/domhelper.js
CHANGED
@@ -136,7 +136,9 @@ webfont.DomHelper.prototype.appendClassName = function(e, name) {
|
|
136
136
|
}
|
137
137
|
}
|
138
138
|
classes.push(name);
|
139
|
-
e.className = classes.join(' ')
|
139
|
+
e.className = classes.join(' ')
|
140
|
+
.replace(/\s+/g, ' ')
|
141
|
+
.replace(/^\s+|\s+$/, '');
|
140
142
|
};
|
141
143
|
|
142
144
|
/**
|
@@ -152,8 +154,9 @@ webfont.DomHelper.prototype.removeClassName = function(e, name) {
|
|
152
154
|
remainingClasses.push(classes[i]);
|
153
155
|
}
|
154
156
|
}
|
155
|
-
e.className = remainingClasses.join(' ')
|
156
|
-
|
157
|
+
e.className = remainingClasses.join(' ')
|
158
|
+
.replace(/\s+/g, ' ')
|
159
|
+
.replace(/^\s+|\s+$/, '');
|
157
160
|
};
|
158
161
|
|
159
162
|
/**
|
data/src/core/fontruler.js
CHANGED
@@ -41,7 +41,7 @@ webfont.FontRuler.prototype.computeStyleString_ = function(fontFamily, opt_fontD
|
|
41
41
|
var variationCss = opt_fontDescription ? this.fvd_.expand(opt_fontDescription) : '';
|
42
42
|
var styleString = "position:absolute;top:-999px;left:-999px;" +
|
43
43
|
"font-size:300px;width:auto;height:auto;line-height:normal;margin:0;" +
|
44
|
-
"padding:0;font-variant:normal;font-family:" +
|
44
|
+
"padding:0;font-variant:normal;white-space:nowrap;font-family:" +
|
45
45
|
this.nameHelper_.quote(fontFamily) + ";" + variationCss;
|
46
46
|
return styleString;
|
47
47
|
};
|
data/src/core/fontwatcher.js
CHANGED
@@ -45,6 +45,11 @@ webfont.FontWatcher.prototype.watch = function(fontFamilies, fontDescriptions,
|
|
45
45
|
fontTestStrings, fontWatchRunnerCtor, last) {
|
46
46
|
var length = fontFamilies.length;
|
47
47
|
|
48
|
+
if (length === 0) {
|
49
|
+
this.eventDispatcher_.dispatchInactive();
|
50
|
+
return;
|
51
|
+
}
|
52
|
+
|
48
53
|
for (var i = 0; i < length; i++) {
|
49
54
|
var fontFamily = fontFamilies[i];
|
50
55
|
if (!fontDescriptions[fontFamily]) {
|
data/src/core/fontwatchrunner.js
CHANGED
@@ -28,10 +28,8 @@ webfont.FontWatchRunner = function(activeCallback, inactiveCallback, domHelper,
|
|
28
28
|
|
29
29
|
this.metricCompatibleFonts_ = opt_metricCompatibleFonts || null;
|
30
30
|
|
31
|
-
this.fontRulerA_ =
|
32
|
-
this.
|
33
|
-
this.fontRulerB_ = new webfont.FontRuler(this.domHelper_, this.fontSizer_, this.fontTestString_);
|
34
|
-
this.fontRulerB_.insert();
|
31
|
+
this.fontRulerA_ = null;
|
32
|
+
this.fontRulerB_ = null;
|
35
33
|
|
36
34
|
this.setupLastResortSizes_();
|
37
35
|
};
|
@@ -82,6 +80,11 @@ webfont.FontWatchRunner.prototype.setupLastResortSizes_ = function() {
|
|
82
80
|
};
|
83
81
|
|
84
82
|
webfont.FontWatchRunner.prototype.start = function() {
|
83
|
+
this.fontRulerA_ = new webfont.FontRuler(this.domHelper_, this.fontSizer_, this.fontTestString_);
|
84
|
+
this.fontRulerA_.insert();
|
85
|
+
this.fontRulerB_ = new webfont.FontRuler(this.domHelper_, this.fontSizer_, this.fontTestString_);
|
86
|
+
this.fontRulerB_.insert();
|
87
|
+
|
85
88
|
this.started_ = this.getTime_();
|
86
89
|
|
87
90
|
this.fontRulerA_.setFont(this.fontFamily_ + ',' + webfont.FontWatchRunner.LastResortFonts.SERIF, this.fontDescription_);
|