webfontloader 1.4.11 → 1.4.12
Sign up to get free protection for your applications and to get access to all the features.
- data/CHANGELOG +3 -0
- data/CONTRIBUTING.md +7 -1
- data/README.md +2 -2
- data/Rakefile +18 -4
- data/browsers.json +122 -0
- data/lib/webfontloader/modules.rb +1 -1
- data/lib/webfontloader.rb +1 -1
- data/spec/core/webfont_spec.js +15 -19
- data/spec/deps.js +4 -5
- data/spec/index.html +4 -1
- data/spec/modules/google/googlefontapi_spec.js +4 -7
- data/spec/modules/monotype_spec.js +1 -1
- data/src/core/initialize.js +79 -14
- data/src/core/webfont.js +7 -10
- data/src/modules/custom.js +4 -4
- data/src/modules/fontdeck.js +4 -4
- data/src/modules/google/googlefontapi.js +9 -8
- data/src/modules/monotype.js +3 -8
- data/src/modules/typekit.js +5 -4
- data/tools/jasmine-browserstack/jasmine-browserstack.js +128 -0
- data/webfontloader.gemspec +4 -3
- metadata +6 -5
- data/src/async_load.js +0 -3
data/CHANGELOG
CHANGED
@@ -1,3 +1,6 @@
|
|
1
|
+
v1.4.12 (August 21, 2013)
|
2
|
+
* Cleared up initialization code and made all modules optional and configurable at compile time
|
3
|
+
|
1
4
|
v1.4.11 (August 8, 2013)
|
2
5
|
* Remove Ascender module (according to Monotype the service has now been shutdown completely.)
|
3
6
|
* Switch Monotype module to use fast.fonts.net instead of fast.fonts.com
|
data/CONTRIBUTING.md
CHANGED
@@ -9,7 +9,7 @@ You'll need a few rubygems to run the tests, demo server, and other rake tasks,
|
|
9
9
|
$ gem install bundler
|
10
10
|
$ bundle install
|
11
11
|
|
12
|
-
To run the tests in a headless WebKit you will also need to have [PhantomJS](http://www.phantomjs.org) installed. You can install PhantomJS by downloading a binary
|
12
|
+
To run the tests in a headless WebKit you will also need to have [PhantomJS](http://www.phantomjs.org) installed. You can install PhantomJS by downloading a binary or using HomeBrew.
|
13
13
|
|
14
14
|
$ brew install phantomjs
|
15
15
|
|
@@ -19,6 +19,12 @@ To build a JS file from source, just run rake:
|
|
19
19
|
|
20
20
|
$ rake
|
21
21
|
|
22
|
+
If you want to build a JS file with only specific modules you can specify them on the command line:
|
23
|
+
|
24
|
+
$ rake compile['custom google typekit']
|
25
|
+
|
26
|
+
This will compile a JS file with only the `custom`, `google` and `typekit` modules. The available modules are: `custom`, `google`, `typekit`, `ascender`, `monotype`, `fontdeck`. By default all modules are included.
|
27
|
+
|
22
28
|
## Demos
|
23
29
|
|
24
30
|
A full suite of demo pages is included in this source. Here you can find some
|
data/README.md
CHANGED
@@ -205,11 +205,11 @@ The Fonts.com module has an optional `version` option which acts as a cache-bust
|
|
205
205
|
|
206
206
|
### Google
|
207
207
|
|
208
|
-
Using [Google's Font API](https://code.google.com/apis/webfonts/docs/getting_started.html), name the font families you'd like to load.
|
208
|
+
Using [Google's Font API](https://code.google.com/apis/webfonts/docs/getting_started.html), name the font families you'd like to load. You can use the same [syntax](https://developers.google.com/fonts/docs/getting_started#Syntax) as in the Font API to specify styles:
|
209
209
|
|
210
210
|
WebFontConfig = {
|
211
211
|
google: {
|
212
|
-
families: ['Droid Sans', 'Droid Serif']
|
212
|
+
families: ['Droid Sans', 'Droid Serif:bold']
|
213
213
|
}
|
214
214
|
};
|
215
215
|
|
data/Rakefile
CHANGED
@@ -81,9 +81,12 @@ directory "target"
|
|
81
81
|
directory "tmp"
|
82
82
|
|
83
83
|
desc "Compile the JavaScript into target/webfont.js"
|
84
|
-
task :compile => "target/webfont.js"
|
84
|
+
task :compile, [:modules] => "target/webfont.js"
|
85
85
|
|
86
|
-
file "target/webfont.js" => SourceJs + ["target"] do |t|
|
86
|
+
file "target/webfont.js", [:modules] => SourceJs + ["target"] do |t, args|
|
87
|
+
args.with_defaults(:modules => 'custom google typekit monotype fontdeck')
|
88
|
+
|
89
|
+
modules = args[:modules].split ' '
|
87
90
|
|
88
91
|
output_marker = "%output%"
|
89
92
|
output_wrapper = @modules.js_output_wrapper(output_marker)
|
@@ -99,6 +102,8 @@ file "target/webfont.js" => SourceJs + ["target"] do |t|
|
|
99
102
|
"--define goog.DEBUG=false"
|
100
103
|
]
|
101
104
|
|
105
|
+
args.concat modules.map { |m| "--define INCLUDE_" + m.upcase + "_MODULE" }
|
106
|
+
|
102
107
|
# Extra args to add warnings.
|
103
108
|
args.concat([
|
104
109
|
["--warning_level", "VERBOSE"],
|
@@ -113,9 +118,12 @@ file "target/webfont.js" => SourceJs + ["target"] do |t|
|
|
113
118
|
end
|
114
119
|
|
115
120
|
desc "Creates debug version into target/webfont.js"
|
116
|
-
task :debug => "target/webfont_debug.js"
|
121
|
+
task :debug, [:modules] => "target/webfont_debug.js"
|
122
|
+
|
123
|
+
file "target/webfont_debug.js", [:modules] => SourceJs + ["target"] do |t|
|
124
|
+
args.with_defaults(:modules => 'custom google typekit monotype fontdeck')
|
117
125
|
|
118
|
-
|
126
|
+
modules = args[:modules].split ' '
|
119
127
|
|
120
128
|
output_marker = "%output%"
|
121
129
|
output_wrapper = @modules.js_output_wrapper(output_marker)
|
@@ -133,6 +141,8 @@ file "target/webfont_debug.js" => SourceJs + ["target"] do |t|
|
|
133
141
|
"--formatting=PRINT_INPUT_DELIMITER"
|
134
142
|
]
|
135
143
|
|
144
|
+
args.concat modules.map { |m| "--define INCLUDE_" + m.upcase + "_MODULE" }
|
145
|
+
|
136
146
|
# Extra args to add warnings.
|
137
147
|
args.concat([
|
138
148
|
["--warning_level", "VERBOSE"],
|
@@ -149,6 +159,10 @@ end
|
|
149
159
|
#
|
150
160
|
# Run
|
151
161
|
#
|
162
|
+
desc "BrowserStack tests"
|
163
|
+
task :bstest do |t|
|
164
|
+
exec "browserstack-test -u $BROWSERSTACK_USERNAME -p $BROWSERSTACK_PASSWORD -k $BROWSERSTACK_KEY -b browsers.json http://localhost:9999/spec/index.html"
|
165
|
+
end
|
152
166
|
|
153
167
|
desc "Test everything"
|
154
168
|
task :default => [:clean, :gzipbytes, :test]
|
data/browsers.json
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
[
|
2
|
+
{
|
3
|
+
"os_version": "XP",
|
4
|
+
"os": "Windows",
|
5
|
+
"browser_version": "11.1",
|
6
|
+
"browser": "opera"
|
7
|
+
},
|
8
|
+
{
|
9
|
+
"os_version": "XP",
|
10
|
+
"os": "Windows",
|
11
|
+
"browser_version": "3.6",
|
12
|
+
"browser": "firefox"
|
13
|
+
},
|
14
|
+
{
|
15
|
+
"os_version": "XP",
|
16
|
+
"os": "Windows",
|
17
|
+
"browser_version": "20.0",
|
18
|
+
"browser": "firefox"
|
19
|
+
},
|
20
|
+
{
|
21
|
+
"os_version": "XP",
|
22
|
+
"os": "Windows",
|
23
|
+
"browser_version": "6.0",
|
24
|
+
"browser": "ie"
|
25
|
+
},
|
26
|
+
{
|
27
|
+
"os_version": "XP",
|
28
|
+
"os": "Windows",
|
29
|
+
"browser_version": "7.0",
|
30
|
+
"browser": "ie"
|
31
|
+
},
|
32
|
+
{
|
33
|
+
"os_version": "XP",
|
34
|
+
"os": "Windows",
|
35
|
+
"browser_version": "8.0",
|
36
|
+
"browser": "ie"
|
37
|
+
},
|
38
|
+
{
|
39
|
+
"os_version": "8",
|
40
|
+
"os": "Windows",
|
41
|
+
"browser_version": "10.0 Desktop",
|
42
|
+
"browser": "ie"
|
43
|
+
},
|
44
|
+
{
|
45
|
+
"os_version": "7",
|
46
|
+
"os": "Windows",
|
47
|
+
"browser_version": "9.0",
|
48
|
+
"browser": "ie"
|
49
|
+
},
|
50
|
+
{
|
51
|
+
"os_version": "Mountain Lion",
|
52
|
+
"os": "OS X",
|
53
|
+
"browser_version": "6.0",
|
54
|
+
"browser": "safari"
|
55
|
+
},
|
56
|
+
{
|
57
|
+
"os_version": "Mountain Lion",
|
58
|
+
"os": "OS X",
|
59
|
+
"browser_version": "25.0",
|
60
|
+
"browser": "chrome"
|
61
|
+
},
|
62
|
+
{
|
63
|
+
"os_version": "Snow Leopard",
|
64
|
+
"os": "OS X",
|
65
|
+
"browser_version": "5.0",
|
66
|
+
"browser": "safari"
|
67
|
+
},
|
68
|
+
{
|
69
|
+
"os_version": "5.0",
|
70
|
+
"device": "iPad 2 (5.0)",
|
71
|
+
"os": "ios",
|
72
|
+
"browser": "Mobile Safari"
|
73
|
+
},
|
74
|
+
{
|
75
|
+
"os_version": "5.1",
|
76
|
+
"device": "iPad 3rd",
|
77
|
+
"os": "ios",
|
78
|
+
"browser": "Mobile Safari"
|
79
|
+
},
|
80
|
+
{
|
81
|
+
"os_version": "6.0",
|
82
|
+
"device": "iPhone 5",
|
83
|
+
"os": "ios",
|
84
|
+
"browser": "Mobile Safari"
|
85
|
+
},
|
86
|
+
{
|
87
|
+
"os_version": "4.3.2",
|
88
|
+
"device": "iPad 2",
|
89
|
+
"os": "ios",
|
90
|
+
"browser": "Mobile Safari"
|
91
|
+
},
|
92
|
+
{
|
93
|
+
"os_version": "2.3",
|
94
|
+
"device": "Samsung Galaxy S II",
|
95
|
+
"os": "android",
|
96
|
+
"browser": "Android Browser"
|
97
|
+
},
|
98
|
+
{
|
99
|
+
"os_version": "2.2",
|
100
|
+
"device": "Samsung Galaxy S",
|
101
|
+
"os": "android",
|
102
|
+
"browser": "Android Browser"
|
103
|
+
},
|
104
|
+
{
|
105
|
+
"os_version": "4.2",
|
106
|
+
"device": "LG Nexus 4",
|
107
|
+
"os": "android",
|
108
|
+
"browser": "Android Browser"
|
109
|
+
},
|
110
|
+
{
|
111
|
+
"os_version": "4.0",
|
112
|
+
"device": "Samsung Galaxy Nexus",
|
113
|
+
"os": "android",
|
114
|
+
"browser": "Android Browser"
|
115
|
+
},
|
116
|
+
{
|
117
|
+
"os_version": "4.1",
|
118
|
+
"device": "Samsung Galaxy S III",
|
119
|
+
"os": "android",
|
120
|
+
"browser": "Android Browser"
|
121
|
+
}
|
122
|
+
]
|
@@ -16,7 +16,7 @@ module WebFontLoader
|
|
16
16
|
|
17
17
|
def all_source_files
|
18
18
|
@all_source_files ||= begin
|
19
|
-
modules.map { |mod| config[mod] }.compact.flatten.map { |f| File.join(js_src, f) }
|
19
|
+
modules.map { |mod| config[mod] }.compact.flatten.map { |f| File.join(js_src, f) }
|
20
20
|
end
|
21
21
|
end
|
22
22
|
|
data/lib/webfontloader.rb
CHANGED
data/spec/core/webfont_spec.js
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
describe('WebFont', function () {
|
2
2
|
var WebFont = webfont.WebFont,
|
3
|
+
Font = webfont.Font;
|
3
4
|
UserAgent = webfont.UserAgent,
|
4
5
|
FontWatchRunner = webfont.FontWatchRunner,
|
5
6
|
BrowserInfo = webfont.BrowserInfo,
|
@@ -31,7 +32,7 @@ describe('WebFont', function () {
|
|
31
32
|
testModule = null;
|
32
33
|
|
33
34
|
beforeEach(function () {
|
34
|
-
font = new WebFont(window
|
35
|
+
font = new WebFont(window);
|
35
36
|
font.addModule('test', function (conf, domHelper) {
|
36
37
|
testModule = new function () {
|
37
38
|
this.conf = conf;
|
@@ -92,10 +93,15 @@ describe('WebFont', function () {
|
|
92
93
|
describe('font load with context', function () {
|
93
94
|
var font = null,
|
94
95
|
testModule = null,
|
95
|
-
fakeMainWindow = {
|
96
|
+
fakeMainWindow = {
|
97
|
+
navigator: {
|
98
|
+
userAgent: 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-US) AppleWebKit/533.2 (KHTML, like Gecko) Chrome/5.0.342.9 Safari/533.2'
|
99
|
+
},
|
100
|
+
document: {}
|
101
|
+
};
|
96
102
|
|
97
103
|
beforeEach(function () {
|
98
|
-
font = new WebFont(fakeMainWindow
|
104
|
+
font = new WebFont(fakeMainWindow);
|
99
105
|
font.addModule('test', function (conf, domHelper) {
|
100
106
|
testModule = new function () {
|
101
107
|
this.domHelper = domHelper;
|
@@ -135,7 +141,7 @@ describe('WebFont', function () {
|
|
135
141
|
beforeEach(function () {
|
136
142
|
font = new Font('Font1');
|
137
143
|
jasmine.Clock.useMock();
|
138
|
-
webfont = new WebFont(window
|
144
|
+
webfont = new WebFont(window);
|
139
145
|
webfont.addModule('test', function (conf, domHelper) {
|
140
146
|
testModule = new function () {
|
141
147
|
this.conf = conf;
|
@@ -202,7 +208,7 @@ describe('WebFont', function () {
|
|
202
208
|
testModule = null;
|
203
209
|
|
204
210
|
beforeEach(function () {
|
205
|
-
font = new WebFont(window
|
211
|
+
font = new WebFont(window);
|
206
212
|
|
207
213
|
font.addModule('test', function (conf, domHelper) {
|
208
214
|
testModule = new function () {};
|
@@ -233,24 +239,15 @@ describe('WebFont', function () {
|
|
233
239
|
testModule = null;
|
234
240
|
|
235
241
|
beforeEach(function () {
|
236
|
-
font = new WebFont(window
|
237
|
-
'Firefox',
|
238
|
-
new Version(3, 6),
|
239
|
-
'3.6',
|
240
|
-
'Gecko',
|
241
|
-
new Version(1, 9, 2),
|
242
|
-
'1.9.2',
|
243
|
-
'Macintosh',
|
244
|
-
new Version(10, 6),
|
245
|
-
'10.6',
|
246
|
-
undefined,
|
247
|
-
new BrowserInfo(false, false, false)
|
248
|
-
));
|
242
|
+
font = new WebFont(window);
|
249
243
|
font.addModule('test', function (conf, domHelper) {
|
250
244
|
testModule = new function () {
|
251
245
|
this.conf = conf;
|
252
246
|
this.loadCalled = false;
|
253
247
|
};
|
248
|
+
testModule.supportUserAgent = function (ua, support) {
|
249
|
+
support(false);
|
250
|
+
};
|
254
251
|
testModule.load = function () {};
|
255
252
|
return testModule;
|
256
253
|
});
|
@@ -266,7 +263,6 @@ describe('WebFont', function () {
|
|
266
263
|
inactive: inactive
|
267
264
|
});
|
268
265
|
|
269
|
-
expect(testModule).toBeNull()
|
270
266
|
expect(inactive).toHaveBeenCalled();
|
271
267
|
});
|
272
268
|
});
|
data/spec/deps.js
CHANGED
@@ -1,21 +1,20 @@
|
|
1
1
|
// This file was autogenerated by calcdeps.js
|
2
|
-
goog.addDependency("../../src/async_load.js", [], []);
|
3
2
|
goog.addDependency("../../src/closure.js", [], []);
|
4
3
|
goog.addDependency("../../src/core/browserinfo.js", ["webfont.BrowserInfo"], []);
|
5
4
|
goog.addDependency("../../src/core/cssclassname.js", ["webfont.CssClassName"], []);
|
6
5
|
goog.addDependency("../../src/core/domhelper.js", ["webfont.DomHelper"], []);
|
7
6
|
goog.addDependency("../../src/core/eventdispatcher.js", ["webfont.EventDispatcher"], ["webfont.CssClassName"]);
|
8
7
|
goog.addDependency("../../src/core/font.js", ["webfont.Font"], []);
|
9
|
-
goog.addDependency("../../src/core/
|
8
|
+
goog.addDependency("../../src/core/fontmodule.js", ["webfont.FontModule"], []);
|
9
|
+
goog.addDependency("../../src/core/fontmoduleloader.js", ["webfont.FontModuleLoader","webfont.FontModuleFactory"], []);
|
10
10
|
goog.addDependency("../../src/core/fontruler.js", ["webfont.FontRuler"], []);
|
11
11
|
goog.addDependency("../../src/core/fontwatcher.js", ["webfont.FontWatcher"], ["webfont.FontWatchRunner"]);
|
12
12
|
goog.addDependency("../../src/core/fontwatchrunner.js", ["webfont.FontWatchRunner"], ["webfont.Font","webfont.FontRuler"]);
|
13
|
-
goog.addDependency("../../src/core/initialize.js", ["webfont"], ["webfont.
|
14
|
-
goog.addDependency("../../src/core/namespace.js", [], []);
|
13
|
+
goog.addDependency("../../src/core/initialize.js", ["webfont"], ["webfont.WebFont","webfont.modules.Typekit","webfont.modules.Fontdeck","webfont.modules.Monotype","webfont.modules.Custom","webfont.modules.google.GoogleFontApi"]);
|
15
14
|
goog.addDependency("../../src/core/useragent.js", ["webfont.UserAgent"], []);
|
16
15
|
goog.addDependency("../../src/core/useragentparser.js", ["webfont.UserAgentParser"], ["webfont.BrowserInfo","webfont.UserAgent","webfont.Version"]);
|
17
16
|
goog.addDependency("../../src/core/version.js", ["webfont.Version"], []);
|
18
|
-
goog.addDependency("../../src/core/webfont.js", ["webfont.WebFont"], ["webfont.DomHelper","webfont.EventDispatcher","webfont.FontWatcher"]);
|
17
|
+
goog.addDependency("../../src/core/webfont.js", ["webfont.WebFont"], ["webfont.DomHelper","webfont.EventDispatcher","webfont.FontWatcher","webfont.FontModuleLoader","webfont.UserAgentParser"]);
|
19
18
|
goog.addDependency("../../src/modules/custom.js", ["webfont.modules.Custom"], ["webfont.Font"]);
|
20
19
|
goog.addDependency("../../src/modules/fontdeck.js", ["webfont.modules.Fontdeck"], ["webfont.Font"]);
|
21
20
|
goog.addDependency("../../src/modules/google/fontapiparser.js", ["webfont.modules.google.FontApiParser"], ["webfont.Font"]);
|
data/spec/index.html
CHANGED
@@ -20,6 +20,7 @@
|
|
20
20
|
<script src="../tools/jasmine/jasmine.js"></script>
|
21
21
|
<script src="../tools/jasmine/jasmine-html.js"></script>
|
22
22
|
<script src="../tools/jasmine-phantomjs/terminal-reporter.js"></script>
|
23
|
+
<script src="../tools/jasmine-browserstack/jasmine-browserstack.js"></script>
|
23
24
|
<script src="../tools/compiler/base.js"></script>
|
24
25
|
<script src="../spec/deps.js"></script>
|
25
26
|
|
@@ -64,12 +65,14 @@
|
|
64
65
|
terminalReporter = new jasmine.TerminalReporter({
|
65
66
|
verbosity: 3,
|
66
67
|
color: true
|
67
|
-
})
|
68
|
+
}),
|
69
|
+
browserStackReporter = new jasmine.BrowserStackReporter();
|
68
70
|
|
69
71
|
if (/PhantomJS/.test(navigator.userAgent)) {
|
70
72
|
env.addReporter(terminalReporter);
|
71
73
|
}
|
72
74
|
env.addReporter(htmlReporter);
|
75
|
+
env.addReporter(browserStackReporter);
|
73
76
|
env.specFilter = function (spec) {
|
74
77
|
return htmlReporter.specFilter(spec);
|
75
78
|
};
|
@@ -1,8 +1,6 @@
|
|
1
1
|
describe('modules.google.GoogleFontApi', function () {
|
2
2
|
var GoogleFontApi = webfont.modules.google.GoogleFontApi,
|
3
3
|
Font = webfont.Font,
|
4
|
-
UserAgent = webfont.UserAgent,
|
5
|
-
userAgent = null,
|
6
4
|
link = '',
|
7
5
|
insert = '',
|
8
6
|
fakeDomHelper = {
|
@@ -18,7 +16,6 @@ describe('modules.google.GoogleFontApi', function () {
|
|
18
16
|
beforeEach(function () {
|
19
17
|
insert = '';
|
20
18
|
link = '';
|
21
|
-
userAgent = new UserAgent('Test', '1.0', true);
|
22
19
|
});
|
23
20
|
|
24
21
|
describe('call onReady with font family loading', function () {
|
@@ -26,7 +23,7 @@ describe('modules.google.GoogleFontApi', function () {
|
|
26
23
|
fonts = null;
|
27
24
|
|
28
25
|
beforeEach(function () {
|
29
|
-
googleFontApi = new GoogleFontApi(
|
26
|
+
googleFontApi = new GoogleFontApi(fakeDomHelper, { families: ['Font1', 'Font2'] });
|
30
27
|
googleFontApi.load(function (f) {
|
31
28
|
fonts = f;
|
32
29
|
});
|
@@ -48,7 +45,7 @@ describe('modules.google.GoogleFontApi', function () {
|
|
48
45
|
var googleFontApi = null;
|
49
46
|
|
50
47
|
beforeEach(function () {
|
51
|
-
googleFontApi = new GoogleFontApi(
|
48
|
+
googleFontApi = new GoogleFontApi(fakeDomHelper, {
|
52
49
|
api: 'http://moo',
|
53
50
|
families: ['Font1', 'Font2']
|
54
51
|
});
|
@@ -64,7 +61,7 @@ describe('modules.google.GoogleFontApi', function () {
|
|
64
61
|
var googleFontApi = null;
|
65
62
|
|
66
63
|
beforeEach(function () {
|
67
|
-
googleFontApi = new GoogleFontApi(
|
64
|
+
googleFontApi = new GoogleFontApi(fakeDomHelper, { families: ['Font1 WithSpace', 'Font2 WithSpaceToo'] });
|
68
65
|
googleFontApi.load(function () {});
|
69
66
|
});
|
70
67
|
|
@@ -77,7 +74,7 @@ describe('modules.google.GoogleFontApi', function () {
|
|
77
74
|
var googleFontApi = null;
|
78
75
|
|
79
76
|
beforeEach(function () {
|
80
|
-
googleFontApi = new GoogleFontApi(
|
77
|
+
googleFontApi = new GoogleFontApi(fakeDomHelper, { families: ['Font1 WithSpace:bi', 'Font2 WithSpaceToo:b,r'] });
|
81
78
|
googleFontApi.load(function () {});
|
82
79
|
});
|
83
80
|
|
@@ -45,7 +45,7 @@ describe('modules.Monotype', function () {
|
|
45
45
|
new BrowserInfo(true, false, false)
|
46
46
|
);
|
47
47
|
|
48
|
-
monotype = new Monotype(
|
48
|
+
monotype = new Monotype(fakeDomHelper, configuration);
|
49
49
|
monotype.supportUserAgent(useragent, support);
|
50
50
|
monotype.load(load);
|
51
51
|
|
data/src/core/initialize.js
CHANGED
@@ -1,28 +1,93 @@
|
|
1
1
|
goog.provide('webfont');
|
2
2
|
|
3
|
-
goog.require('webfont.UserAgentParser');
|
4
|
-
goog.require('webfont.FontModuleLoader');
|
5
3
|
goog.require('webfont.WebFont');
|
6
4
|
|
5
|
+
goog.require('webfont.modules.Typekit');
|
6
|
+
goog.require('webfont.modules.Fontdeck');
|
7
|
+
goog.require('webfont.modules.Monotype');
|
8
|
+
goog.require('webfont.modules.Custom');
|
9
|
+
goog.require('webfont.modules.google.GoogleFontApi');
|
10
|
+
|
7
11
|
/**
|
8
12
|
* @typedef {Object.<string, Array.<string>>}
|
9
13
|
*/
|
10
14
|
webfont.FontTestStrings;
|
11
15
|
|
12
16
|
/**
|
13
|
-
*
|
14
|
-
|
17
|
+
* @define {boolean}
|
18
|
+
*/
|
19
|
+
var INCLUDE_CUSTOM_MODULE = false;
|
20
|
+
|
21
|
+
/**
|
22
|
+
* @define {boolean}
|
23
|
+
*/
|
24
|
+
var INCLUDE_FONTDECK_MODULE = false;
|
25
|
+
|
26
|
+
/**
|
27
|
+
* @define {boolean}
|
28
|
+
*/
|
29
|
+
var INCLUDE_MONOTYPE_MODULE = false;
|
30
|
+
|
31
|
+
/**
|
32
|
+
* @define {boolean}
|
33
|
+
*/
|
34
|
+
var INCLUDE_TYPEKIT_MODULE = false;
|
35
|
+
|
36
|
+
/**
|
37
|
+
* @define {boolean}
|
38
|
+
*/
|
39
|
+
var INCLUDE_GOOGLE_MODULE = false;
|
40
|
+
|
41
|
+
/**
|
15
42
|
* @define {string}
|
16
43
|
*/
|
17
|
-
var
|
44
|
+
var WEBFONT = 'WebFont';
|
45
|
+
|
46
|
+
/**
|
47
|
+
* @define {string}
|
48
|
+
*/
|
49
|
+
var WEBFONT_CONFIG = 'WebFontConfig';
|
50
|
+
|
51
|
+
/**
|
52
|
+
* @type {webfont.WebFont}
|
53
|
+
*/
|
54
|
+
var webFontLoader = new webfont.WebFont(goog.global);
|
55
|
+
|
56
|
+
if (INCLUDE_CUSTOM_MODULE) {
|
57
|
+
webFontLoader.addModule(webfont.modules.Custom.NAME, function (configuration, domHelper) {
|
58
|
+
return new webfont.modules.Custom(domHelper, configuration);
|
59
|
+
});
|
60
|
+
}
|
61
|
+
|
62
|
+
if (INCLUDE_FONTDECK_MODULE) {
|
63
|
+
webFontLoader.addModule(webfont.modules.Fontdeck.NAME, function (configuration, domHelper) {
|
64
|
+
return new webfont.modules.Fontdeck(domHelper, configuration);
|
65
|
+
});
|
66
|
+
}
|
67
|
+
|
68
|
+
if (INCLUDE_MONOTYPE_MODULE) {
|
69
|
+
webFontLoader.addModule(webfont.modules.Monotype.NAME, function (configuration, domHelper) {
|
70
|
+
return new webfont.modules.Monotype(domHelper, configuration);
|
71
|
+
});
|
72
|
+
}
|
73
|
+
|
74
|
+
if (INCLUDE_TYPEKIT_MODULE) {
|
75
|
+
webFontLoader.addModule(webfont.modules.Typekit.NAME, function (configuration, domHelper) {
|
76
|
+
return new webfont.modules.Typekit(domHelper, configuration);
|
77
|
+
});
|
78
|
+
}
|
79
|
+
|
80
|
+
if (INCLUDE_GOOGLE_MODULE) {
|
81
|
+
webFontLoader.addModule(webfont.modules.google.GoogleFontApi.NAME, function (configuration, domHelper) {
|
82
|
+
return new webfont.modules.google.GoogleFontApi(domHelper, configuration);
|
83
|
+
});
|
84
|
+
}
|
18
85
|
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
var userAgent = userAgentParser.parse();
|
23
|
-
var fontModuleLoader = new webfont.FontModuleLoader();
|
24
|
-
return new webfont.WebFont(window, fontModuleLoader, userAgent);
|
25
|
-
})();
|
86
|
+
if (!goog.global[WEBFONT]) {
|
87
|
+
goog.global[WEBFONT] = {};
|
88
|
+
goog.global[WEBFONT]['load'] = goog.bind(webFontLoader.load, webFontLoader);
|
26
89
|
|
27
|
-
|
28
|
-
|
90
|
+
if (goog.global[WEBFONT_CONFIG]) {
|
91
|
+
webFontLoader.load(goog.global[WEBFONT_CONFIG]);
|
92
|
+
}
|
93
|
+
}
|
data/src/core/webfont.js
CHANGED
@@ -3,18 +3,19 @@ goog.provide('webfont.WebFont');
|
|
3
3
|
goog.require('webfont.DomHelper');
|
4
4
|
goog.require('webfont.EventDispatcher');
|
5
5
|
goog.require('webfont.FontWatcher');
|
6
|
+
goog.require('webfont.FontModuleLoader');
|
7
|
+
goog.require('webfont.UserAgentParser');
|
6
8
|
|
7
9
|
/**
|
8
10
|
* @param {Window} mainWindow The main application window containing
|
9
11
|
* webfontloader.js.
|
10
|
-
* @param {webfont.FontModuleLoader} fontModuleLoader A loader instance to use.
|
11
|
-
* @param {webfont.UserAgent} userAgent The detected user agent to load for.
|
12
12
|
* @constructor
|
13
13
|
*/
|
14
|
-
webfont.WebFont = function(mainWindow
|
14
|
+
webfont.WebFont = function(mainWindow) {
|
15
15
|
this.mainWindow_ = mainWindow;
|
16
|
-
this.fontModuleLoader_ =
|
17
|
-
this.
|
16
|
+
this.fontModuleLoader_ = new webfont.FontModuleLoader();
|
17
|
+
this.userAgentParser_ = new webfont.UserAgentParser(mainWindow.navigator.userAgent, mainWindow.document);
|
18
|
+
this.userAgent_ = this.userAgentParser_.parse();
|
18
19
|
this.moduleLoading_ = 0;
|
19
20
|
this.moduleFailedLoading_ = 0;
|
20
21
|
};
|
@@ -43,11 +44,7 @@ goog.scope(function () {
|
|
43
44
|
var eventDispatcher = new EventDispatcher(
|
44
45
|
this.domHelper_, context.document.documentElement, configuration);
|
45
46
|
|
46
|
-
|
47
|
-
this.load_(eventDispatcher, configuration);
|
48
|
-
} else {
|
49
|
-
eventDispatcher.dispatchInactive();
|
50
|
-
}
|
47
|
+
this.load_(eventDispatcher, configuration);
|
51
48
|
};
|
52
49
|
|
53
50
|
/**
|
data/src/modules/custom.js
CHANGED
@@ -18,6 +18,10 @@ webfont.modules.Custom = function(domHelper, configuration) {
|
|
18
18
|
this.configuration_ = configuration;
|
19
19
|
};
|
20
20
|
|
21
|
+
/**
|
22
|
+
* @const
|
23
|
+
* @type {string}
|
24
|
+
*/
|
21
25
|
webfont.modules.Custom.NAME = 'custom';
|
22
26
|
|
23
27
|
goog.scope(function () {
|
@@ -56,7 +60,3 @@ goog.scope(function () {
|
|
56
60
|
return support(userAgent.getBrowserInfo().hasWebFontSupport());
|
57
61
|
};
|
58
62
|
});
|
59
|
-
|
60
|
-
globalNamespaceObject.addModule(webfont.modules.Custom.NAME, function(configuration, domHelper) {
|
61
|
-
return new webfont.modules.Custom(domHelper, configuration);
|
62
|
-
});
|
data/src/modules/fontdeck.js
CHANGED
@@ -12,6 +12,10 @@ webfont.modules.Fontdeck = function(domHelper, configuration) {
|
|
12
12
|
this.fonts_ = [];
|
13
13
|
};
|
14
14
|
|
15
|
+
/**
|
16
|
+
* @const
|
17
|
+
* @type {string}
|
18
|
+
*/
|
15
19
|
webfont.modules.Fontdeck.NAME = 'fontdeck';
|
16
20
|
webfont.modules.Fontdeck.HOOK = '__webfontfontdeckmodule__';
|
17
21
|
webfont.modules.Fontdeck.API = '//f.fontdeck.com/s/css/js/';
|
@@ -65,7 +69,3 @@ goog.scope(function () {
|
|
65
69
|
onReady(this.fonts_);
|
66
70
|
};
|
67
71
|
});
|
68
|
-
|
69
|
-
globalNamespaceObject.addModule(webfont.modules.Fontdeck.NAME, function(configuration, domHelper) {
|
70
|
-
return new webfont.modules.Fontdeck(domHelper, configuration);
|
71
|
-
});
|
@@ -8,12 +8,19 @@ goog.require('webfont.FontWatchRunner');
|
|
8
8
|
* @constructor
|
9
9
|
* @implements {webfont.FontModule}
|
10
10
|
*/
|
11
|
-
webfont.modules.google.GoogleFontApi = function(
|
12
|
-
|
11
|
+
webfont.modules.google.GoogleFontApi = function(domHelper, configuration) {
|
12
|
+
var userAgentParser = new webfont.UserAgentParser(navigator.userAgent, document);
|
13
|
+
|
14
|
+
this.userAgent_ = userAgentParser.parse();
|
15
|
+
|
13
16
|
this.domHelper_ = domHelper;
|
14
17
|
this.configuration_ = configuration;
|
15
18
|
};
|
16
19
|
|
20
|
+
/**
|
21
|
+
* @const
|
22
|
+
* @type {string}
|
23
|
+
*/
|
17
24
|
webfont.modules.google.GoogleFontApi.NAME = 'google';
|
18
25
|
|
19
26
|
goog.scope(function () {
|
@@ -58,9 +65,3 @@ goog.scope(function () {
|
|
58
65
|
onReady(fontApiParser.getFonts(), fontApiParser.getFontTestStrings(), GoogleFontApi.METRICS_COMPATIBLE_FONTS);
|
59
66
|
};
|
60
67
|
});
|
61
|
-
|
62
|
-
globalNamespaceObject.addModule(webfont.modules.google.GoogleFontApi.NAME, function(configuration, domHelper) {
|
63
|
-
var userAgentParser = new webfont.UserAgentParser(navigator.userAgent, document);
|
64
|
-
var userAgent = userAgentParser.parse();
|
65
|
-
return new webfont.modules.google.GoogleFontApi(userAgent, domHelper, configuration);
|
66
|
-
});
|
data/src/modules/monotype.js
CHANGED
@@ -14,8 +14,7 @@ projectId: 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'//this is your Fonts.com Web fo
|
|
14
14
|
* @constructor
|
15
15
|
* @implements {webfont.FontModule}
|
16
16
|
*/
|
17
|
-
webfont.modules.Monotype = function (
|
18
|
-
this.userAgent_ = userAgent;
|
17
|
+
webfont.modules.Monotype = function (domHelper, configuration) {
|
19
18
|
this.domHelper_ = domHelper;
|
20
19
|
this.configuration_ = configuration;
|
21
20
|
this.fonts_ = [];
|
@@ -23,7 +22,9 @@ webfont.modules.Monotype = function (userAgent, domHelper, configuration) {
|
|
23
22
|
|
24
23
|
/**
|
25
24
|
* name of the module through which external API is supposed to call the MonotypeFontAPI.
|
25
|
+
*
|
26
26
|
* @const
|
27
|
+
* @type {string}
|
27
28
|
*/
|
28
29
|
webfont.modules.Monotype.NAME = 'monotype';
|
29
30
|
|
@@ -87,9 +88,3 @@ goog.scope(function () {
|
|
87
88
|
onReady(this.fonts_);
|
88
89
|
};
|
89
90
|
});
|
90
|
-
|
91
|
-
globalNamespaceObject.addModule(webfont.modules.Monotype.NAME, function (configuration, domHelper) {
|
92
|
-
var userAgentParser = new webfont.UserAgentParser(navigator.userAgent, document);
|
93
|
-
var userAgent = userAgentParser.parse();
|
94
|
-
return new webfont.modules.Monotype(userAgent, domHelper, configuration);
|
95
|
-
});
|
data/src/modules/typekit.js
CHANGED
@@ -12,7 +12,12 @@ webfont.modules.Typekit = function(domHelper, configuration) {
|
|
12
12
|
this.fonts_ = [];
|
13
13
|
};
|
14
14
|
|
15
|
+
/**
|
16
|
+
* @const
|
17
|
+
* @type {string}
|
18
|
+
*/
|
15
19
|
webfont.modules.Typekit.NAME = 'typekit';
|
20
|
+
|
16
21
|
webfont.modules.Typekit.HOOK = '__webfonttypekitmodule__';
|
17
22
|
|
18
23
|
goog.scope(function () {
|
@@ -72,7 +77,3 @@ goog.scope(function () {
|
|
72
77
|
onReady(this.fonts_);
|
73
78
|
};
|
74
79
|
});
|
75
|
-
|
76
|
-
globalNamespaceObject.addModule(webfont.modules.Typekit.NAME, function(configuration, domHelper) {
|
77
|
-
return new webfont.modules.Typekit(domHelper, configuration);
|
78
|
-
});
|
@@ -0,0 +1,128 @@
|
|
1
|
+
(function (root, factory) {
|
2
|
+
if (typeof define === 'function' && define.amd) {
|
3
|
+
define(['jasmine'], factory);
|
4
|
+
} else {
|
5
|
+
factory(jasmine);
|
6
|
+
}
|
7
|
+
}(this, function (jasmine) {
|
8
|
+
function stack(err) {
|
9
|
+
var str = err.stack || err.toString();
|
10
|
+
|
11
|
+
if (!~str.indexOf(err.message)) {
|
12
|
+
str = err.message + '\n' + str;
|
13
|
+
}
|
14
|
+
|
15
|
+
if ('[object Error]' == str) {
|
16
|
+
str = err.message;
|
17
|
+
}
|
18
|
+
|
19
|
+
if (!err.stack && err.sourceURL && err.line !== undefined) {
|
20
|
+
str += '\n(' + err.sourceURL + ':' + err.line + ')';
|
21
|
+
}
|
22
|
+
return str.replace(/^/gm, ' ');
|
23
|
+
}
|
24
|
+
|
25
|
+
function BrowserStackReporter() {
|
26
|
+
this.stats = {
|
27
|
+
suites: 0,
|
28
|
+
tests: 0,
|
29
|
+
passes: 0,
|
30
|
+
pending: 0,
|
31
|
+
failures: 0
|
32
|
+
};
|
33
|
+
this.tests = [];
|
34
|
+
}
|
35
|
+
|
36
|
+
BrowserStackReporter.prototype.reportRunnerStarting = function (runner) {
|
37
|
+
this.stats.start = new Date();
|
38
|
+
};
|
39
|
+
|
40
|
+
BrowserStackReporter.prototype.reportSpecStarting = function (spec) {
|
41
|
+
spec.startedAt = new Date().getTime();
|
42
|
+
};
|
43
|
+
|
44
|
+
BrowserStackReporter.prototype.reportSpecResults = function (spec) {
|
45
|
+
var currentTime = new Date().getTime();
|
46
|
+
spec.duration = currentTime - spec.startedAt;
|
47
|
+
|
48
|
+
var result = spec.results();
|
49
|
+
|
50
|
+
var test = {
|
51
|
+
status: null,
|
52
|
+
title: spec.getFullName().replace(/#/g, ''),
|
53
|
+
duration: currentTime - spec.startedAt
|
54
|
+
};
|
55
|
+
|
56
|
+
if (result.skipped) {
|
57
|
+
this.stats.pending += 1;
|
58
|
+
test.status = 'skipped';
|
59
|
+
} else if (result.failedCount === 0) {
|
60
|
+
this.stats.passes += 1;
|
61
|
+
test.status = 'passed';
|
62
|
+
} else {
|
63
|
+
var items = result.getItems(),
|
64
|
+
message = [];
|
65
|
+
|
66
|
+
for (var i = 0; i < items.length; i += 1) {
|
67
|
+
message.push(stack(items[i].trace));
|
68
|
+
}
|
69
|
+
|
70
|
+
test.err = message;
|
71
|
+
test.status = 'failed';
|
72
|
+
this.stats.failures += 1;
|
73
|
+
}
|
74
|
+
|
75
|
+
this.stats.tests += 1;
|
76
|
+
this.tests.push(test);
|
77
|
+
};
|
78
|
+
|
79
|
+
BrowserStackReporter.prototype.reportSuiteResults = function (suite) {
|
80
|
+
};
|
81
|
+
|
82
|
+
BrowserStackReporter.prototype.reportRunnerResults = function (runner) {
|
83
|
+
var suites = runner.suites();
|
84
|
+
|
85
|
+
this.stats.end = new Date();
|
86
|
+
this.stats.duration = this.stats.end - this.stats.end;
|
87
|
+
|
88
|
+
this.stats.suites = suites.length;
|
89
|
+
|
90
|
+
var result = '1..' + this.stats.tests + '\n';
|
91
|
+
|
92
|
+
for (var i = 0; i < this.tests.length; i += 1) {
|
93
|
+
var count = i + 1;
|
94
|
+
|
95
|
+
if (this.tests[i].status === 'pending') {
|
96
|
+
result += 'ok ' + count + ' ' + this.tests[i].title + ' # SKIP -\n';
|
97
|
+
} else if (this.tests[i].status === 'failed') {
|
98
|
+
result += 'not ok ' + count + ' ' + this.tests[i].title + '\n';
|
99
|
+
for (var j = 0; j < this.tests[i].err.length; j += 1) {
|
100
|
+
result += this.tests[i].err[j] + '\n';
|
101
|
+
}
|
102
|
+
} else {
|
103
|
+
result += 'ok ' + count + ' ' + this.tests[i].title + '\n';
|
104
|
+
}
|
105
|
+
}
|
106
|
+
|
107
|
+
result += '# tests ' + this.stats.tests + '\n';
|
108
|
+
result += '# pass ' + this.stats.passes + '\n';
|
109
|
+
result += '# fail ' + this.stats.failures + '\n';
|
110
|
+
|
111
|
+
if (/browser=/i.test(window.location.search)) {
|
112
|
+
var xhr = null;
|
113
|
+
|
114
|
+
if (window.XMLHttpRequest) {
|
115
|
+
xhr = new XMLHttpRequest();
|
116
|
+
} else {
|
117
|
+
xhr = new ActiveXObject('Microsoft.XMLHTTP');
|
118
|
+
}
|
119
|
+
|
120
|
+
xhr.open('POST', window.location.href);
|
121
|
+
xhr.setRequestHeader('Content-Type', 'text/plain');
|
122
|
+
xhr.send(result);
|
123
|
+
}
|
124
|
+
};
|
125
|
+
|
126
|
+
// Attach to the jasmine object like many other reporters do
|
127
|
+
jasmine.BrowserStackReporter = BrowserStackReporter;
|
128
|
+
}));
|
data/webfontloader.gemspec
CHANGED
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
|
|
13
13
|
## If your rubyforge_project name is different, then edit it and comment out
|
14
14
|
## the sub! line in the Rakefile
|
15
15
|
s.name = 'webfontloader'
|
16
|
-
s.version = '1.4.
|
17
|
-
s.date = '2013-08-
|
16
|
+
s.version = '1.4.12'
|
17
|
+
s.date = '2013-08-21'
|
18
18
|
|
19
19
|
## Make sure your summary is short. The description may be as long
|
20
20
|
## as you like.
|
@@ -74,6 +74,7 @@ DESC
|
|
74
74
|
README.md
|
75
75
|
Rakefile
|
76
76
|
bin/webfontloader-demos
|
77
|
+
browsers.json
|
77
78
|
lib/webfontloader.rb
|
78
79
|
lib/webfontloader/demo/public/basic.css
|
79
80
|
lib/webfontloader/demo/public/blank.html
|
@@ -143,7 +144,6 @@ DESC
|
|
143
144
|
spec/modules/google/googlefontapi_spec.js
|
144
145
|
spec/modules/monotype_spec.js
|
145
146
|
spec/modules/typekit_spec.js
|
146
|
-
src/async_load.js
|
147
147
|
src/closure.js
|
148
148
|
src/core/browserinfo.js
|
149
149
|
src/core/cssclassname.js
|
@@ -170,6 +170,7 @@ DESC
|
|
170
170
|
src/modules/typekit.js
|
171
171
|
tools/compiler/base.js
|
172
172
|
tools/compiler/compiler.jar
|
173
|
+
tools/jasmine-browserstack/jasmine-browserstack.js
|
173
174
|
tools/jasmine-phantomjs/jasmine-phantomjs.js
|
174
175
|
tools/jasmine-phantomjs/terminal-reporter.js
|
175
176
|
tools/jasmine/MIT.LICENSE
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: webfontloader
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 31
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 1
|
8
8
|
- 4
|
9
|
-
-
|
10
|
-
version: 1.4.
|
9
|
+
- 12
|
10
|
+
version: 1.4.12
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Ryan Carver
|
@@ -16,7 +16,7 @@ autorequire:
|
|
16
16
|
bindir: bin
|
17
17
|
cert_chain: []
|
18
18
|
|
19
|
-
date: 2013-08-
|
19
|
+
date: 2013-08-21 00:00:00 Z
|
20
20
|
dependencies:
|
21
21
|
- !ruby/object:Gem::Dependency
|
22
22
|
name: rake
|
@@ -102,6 +102,7 @@ files:
|
|
102
102
|
- README.md
|
103
103
|
- Rakefile
|
104
104
|
- bin/webfontloader-demos
|
105
|
+
- browsers.json
|
105
106
|
- lib/webfontloader.rb
|
106
107
|
- lib/webfontloader/demo/public/basic.css
|
107
108
|
- lib/webfontloader/demo/public/blank.html
|
@@ -171,7 +172,6 @@ files:
|
|
171
172
|
- spec/modules/google/googlefontapi_spec.js
|
172
173
|
- spec/modules/monotype_spec.js
|
173
174
|
- spec/modules/typekit_spec.js
|
174
|
-
- src/async_load.js
|
175
175
|
- src/closure.js
|
176
176
|
- src/core/browserinfo.js
|
177
177
|
- src/core/cssclassname.js
|
@@ -198,6 +198,7 @@ files:
|
|
198
198
|
- src/modules/typekit.js
|
199
199
|
- tools/compiler/base.js
|
200
200
|
- tools/compiler/compiler.jar
|
201
|
+
- tools/jasmine-browserstack/jasmine-browserstack.js
|
201
202
|
- tools/jasmine-phantomjs/jasmine-phantomjs.js
|
202
203
|
- tools/jasmine-phantomjs/terminal-reporter.js
|
203
204
|
- tools/jasmine/MIT.LICENSE
|
data/src/async_load.js
DELETED