webfontloader 1.4.11 → 1.4.12
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 +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