webfontloader 1.5.6 → 1.5.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 31821caf4efeb4ba4f34b805d4fd76b56bb35c4b
4
- data.tar.gz: 8e759e2ae26ab7a5ff848244591f574f7642a43c
3
+ metadata.gz: d9589210eedec7a4bae571f227f5968a0e9b05c7
4
+ data.tar.gz: d54107d873a216a96075796973fdf8ad091cd46c
5
5
  SHA512:
6
- metadata.gz: b42346ace09821590399f9de42b038a0c852d0c264fdc20311a2ed7c41ea17af04d7407ddd553f254ebb5c672df52b3de55dd7418ec3003394d423b3f44b1931
7
- data.tar.gz: cbfcd9c839eda2b1ebba42514e832bc90d654627c694a9a4bd8fb1e16b1c83471b94aa13553f6a06fa1edade50a9a1b406b724f4a8888a2a87bde021e82351b2
6
+ metadata.gz: 0971500a308575e9b2a8b8058c03c56089019bc800bf3efd618051c1a076e465e262de943a6b4451b1cdf02ea14f38e4a65dd398d92dcc63ad0c8d2fc949da56
7
+ data.tar.gz: 113d98006682af2b0792d58cf08aae4a4fecdcbc1fafcc0f5bf2b7349d87a103ff1e241e0836aedfb5bf17e0be2321875bfe1d1efc4e03174e4a58c1382c9d4d
data/README.md CHANGED
@@ -9,23 +9,23 @@ Web Font Loader gives you added control when using linked fonts via `@font-face`
9
9
  * [Get started](#get-started)
10
10
  * [Configuration](#configuration)
11
11
  * [Events](#events)
12
- * [Timeout](#timeout)
12
+ * [Timeout](#timeouts)
13
13
  * [Iframes](#iframes)
14
14
  * [Modules](#modules)
15
15
  * [Custom](#custom)
16
16
  * [Fontdeck](#fontdeck)
17
- * [Fonts.com](#fonts.com)
17
+ * [Fonts.com](#fontscom)
18
18
  * [Google](#google)
19
19
  * [Typekit](#typekit)
20
20
  * [Browser support](#browser-support)
21
- * [License](#license)
21
+ * [License](#copyright-and-license)
22
22
 
23
23
  ## Get Started
24
24
 
25
25
  To use the Web Font Loader library, just include it in your page and tell it which fonts to load. For example, you could load fonts from [Google Fonts](http://www.google.com/fonts/) using the Web Font Loader hosted on [Google Hosted Libraries](https://developers.google.com/speed/libraries/) using the following code.
26
26
 
27
27
  ```html
28
- <script src="//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js"></script>
28
+ <script src="//ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js"></script>
29
29
  <script>
30
30
  WebFont.load({
31
31
  google: {
@@ -48,7 +48,7 @@ It is also possible to use the Web Font Loader asynchronously. For example, to l
48
48
  (function() {
49
49
  var wf = document.createElement('script');
50
50
  wf.src = ('https:' == document.location.protocol ? 'https' : 'http') +
51
- '://ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js';
51
+ '://ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js';
52
52
  wf.type = 'text/javascript';
53
53
  wf.async = 'true';
54
54
  var s = document.getElementsByTagName('script')[0];
@@ -131,7 +131,7 @@ WebFontConfig = {
131
131
  };
132
132
  ```
133
133
 
134
- The timeout value should be in milliseconds, and defaults to 5000 milliseconds (5 seconds) if not supplied.
134
+ The timeout value should be in milliseconds, and defaults to 3000 milliseconds (3 seconds) if not supplied.
135
135
 
136
136
  ### Iframes
137
137
 
@@ -200,7 +200,7 @@ In this example, the `fonts.css` file might look something like this:
200
200
  If your fonts are already included in another stylesheet you can also leave out the `urls` array and just specify font family names to start font loading. As long as the names match those that are declared in the `families` array, the proper loading classes will be applied to the html element.
201
201
 
202
202
  ```html
203
- <script src="//ajax.googleapis.com/ajax/libs/webfont/1.4.7/webfont.js"></script>
203
+ <script src="//ajax.googleapis.com/ajax/libs/webfont/1.5.6/webfont.js"></script>
204
204
  <script>
205
205
  WebFont.load({
206
206
  custom: {
@@ -271,7 +271,7 @@ WebFontConfig = {
271
271
  };
272
272
  ```
273
273
 
274
- You can also supply the `text` parameter to perform character subsetting:
274
+ Sometimes the font you requested doesn't come in the default variation (e.g. `n4`) and you need to explicitly request the variation you want for font events to work (e.g. `n3`, `n7`, etc.). You can also supply the `text` parameter to perform character subsetting:
275
275
 
276
276
  ```javascript
277
277
  WebFontConfig = {
data/Rakefile CHANGED
@@ -83,6 +83,10 @@ directory "tmp"
83
83
  desc "Compile the JavaScript into target/webfont.js"
84
84
  task :compile, [:modules] => "target/webfont.js"
85
85
 
86
+ file "webfontloader.js" => "target/webfont.js" do
87
+ cp "target/webfont.js", "webfontloader.js"
88
+ end
89
+
86
90
  file "target/webfont.js", [:modules] => SourceJs + ["target"] do |t, args|
87
91
  args.with_defaults(:modules => 'custom google typekit monotype fontdeck')
88
92
 
@@ -205,7 +209,7 @@ end
205
209
  #
206
210
  #############################################################################
207
211
 
208
- task :release => :build do
212
+ task :release => [:build, "webfontloader.js"] do
209
213
  unless `git branch` =~ /^\* master$/
210
214
  puts "You must be on the master branch to release!"
211
215
  exit!
data/lib/webfontloader.rb CHANGED
@@ -3,7 +3,7 @@ require 'yaml'
3
3
  require 'webfontloader/modules'
4
4
 
5
5
  module WebFontLoader
6
- VERSION = '1.5.6'
6
+ VERSION = '1.5.7'
7
7
 
8
8
  ProjectRoot = File.expand_path(File.dirname(__FILE__) + "/..")
9
9
 
@@ -39,6 +39,24 @@ describe('Font', function () {
39
39
  });
40
40
  });
41
41
 
42
+ describe('#toCssString', function () {
43
+ function toCssString(fvd) {
44
+ return new Font('My Family', fvd).toCssString();
45
+ }
46
+
47
+ it('should expand font styles correctly', function () {
48
+ expect(toCssString('n4')).toEqual("normal 400 300px 'My Family'");
49
+ expect(toCssString('i4')).toEqual("italic 400 300px 'My Family'");
50
+ expect(toCssString('o4')).toEqual("oblique 400 300px 'My Family'");
51
+ });
52
+
53
+ it('should expand weights correctly', function () {
54
+ for (var i = 1; i < 10; i += 1) {
55
+ expect(toCssString('n' + i)).toEqual("normal " + (i * 100) + " 300px 'My Family'");
56
+ }
57
+ });
58
+ });
59
+
42
60
  describe('#getCssVariation', function () {
43
61
  function toCss(fvd) {
44
62
  return new Font('My Family', fvd).getCssVariation();
@@ -5,6 +5,7 @@ describe('FontWatcher', function () {
5
5
  UserAgent = webfont.UserAgent,
6
6
  BrowserInfo = webfont.BrowserInfo,
7
7
  DomHelper = webfont.DomHelper,
8
+ Version = webfont.Version,
8
9
  domHelper = new DomHelper(window),
9
10
  eventDispatcher = {},
10
11
  testStrings = null,
@@ -17,7 +18,19 @@ describe('FontWatcher', function () {
17
18
  activeFonts = [];
18
19
 
19
20
  beforeEach(function () {
20
- userAgent = new UserAgent('Firefox', '3.6', 'Gecko', '1.9.3', 'Macintosh', '10.6', undefined, new BrowserInfo(true, false, false));
21
+ userAgent = new UserAgent(
22
+ 'Firefox',
23
+ new Version(3, 6),
24
+ '3.6',
25
+ 'Gecko',
26
+ new Version(1, 9, 3),
27
+ '1.9.3',
28
+ 'Macintosh',
29
+ new Version(10, 6),
30
+ '10.6',
31
+ undefined,
32
+ new BrowserInfo(true, false, false, false)
33
+ );
21
34
  font1 = new Font('font1');
22
35
  font2 = new Font('font2');
23
36
  font3 = new Font('font3');
@@ -0,0 +1,108 @@
1
+ describe('NativeFontWatchRunner', function () {
2
+ var NativeFontWatchRunner = webfont.NativeFontWatchRunner,
3
+ Font = webfont.Font,
4
+ UserAgentParser = webfont.UserAgentParser,
5
+ DomHelper = webfont.DomHelper,
6
+ FontRuler = webfont.FontRuler;
7
+
8
+ var domHelper = null,
9
+ activeCallback = null,
10
+ inactiveCallback = null,
11
+ userAgent = null,
12
+ nullFont = null,
13
+ sourceSansC = null,
14
+ elena = null;
15
+
16
+ beforeEach(function () {
17
+ domHelper = new DomHelper(window);
18
+
19
+ activeCallback = jasmine.createSpy('activeCallback');
20
+ inactiveCallback = jasmine.createSpy('inactiveCallback');
21
+
22
+ var userAgentParser = new UserAgentParser(window.navigator.userAgent, window.document);
23
+
24
+ nullFont = new Font('__webfontloader_test_3__');
25
+ sourceSansC = new Font('SourceSansC');
26
+ elena = new Font('Elena');
27
+
28
+ userAgent = userAgentParser.parse();
29
+ });
30
+
31
+ if (window['FontFace']) {
32
+ it('should fail to load a null font', function () {
33
+ var fontWatchRunner = new NativeFontWatchRunner(activeCallback, inactiveCallback,
34
+ domHelper, nullFont);
35
+
36
+ runs(function () {
37
+ fontWatchRunner.start();
38
+ });
39
+
40
+ waitsFor(function () {
41
+ return activeCallback.wasCalled || inactiveCallback.wasCalled;
42
+ });
43
+
44
+ runs(function () {
45
+ expect(inactiveCallback).toHaveBeenCalledWith(nullFont);
46
+ });
47
+ });
48
+
49
+ it('should load font succesfully', function () {
50
+ var fontWatchRunner = new NativeFontWatchRunner(activeCallback, inactiveCallback,
51
+ domHelper, sourceSansC),
52
+ ruler = new FontRuler(domHelper, 'abcdef'),
53
+ monospace = new Font('monospace'),
54
+ sourceSansCFallback = new Font('SourceSansC, monospace'),
55
+ activeWidth = null,
56
+ originalWidth = null,
57
+ finalCheck = false;
58
+
59
+ runs(function () {
60
+ ruler.insert();
61
+ ruler.setFont(monospace);
62
+ originalWidth = ruler.getWidth();
63
+ ruler.setFont(sourceSansCFallback);
64
+ fontWatchRunner.start();
65
+ });
66
+
67
+ waitsFor(function () {
68
+ return activeCallback.wasCalled || inactiveCallback.wasCalled;
69
+ });
70
+
71
+ runs(function () {
72
+ expect(activeCallback).toHaveBeenCalledWith(sourceSansC);
73
+ activeWidth = ruler.getWidth();
74
+ expect(activeWidth).not.toEqual(originalWidth);
75
+
76
+ window.setTimeout(function () {
77
+ finalCheck = true;
78
+ }, 200);
79
+ });
80
+
81
+ waitsFor(function () {
82
+ return finalCheck;
83
+ });
84
+
85
+ runs(function () {
86
+ expect(ruler.getWidth()).not.toEqual(originalWidth);
87
+ expect(ruler.getWidth()).toEqual(activeWidth);
88
+ });
89
+ });
90
+
91
+ it('should attempt to load a non-existing font', function () {
92
+ var fontWatchRunner = new NativeFontWatchRunner(activeCallback, inactiveCallback,
93
+ domHelper, elena);
94
+
95
+ runs(function () {
96
+ fontWatchRunner.start();
97
+ });
98
+
99
+ waitsFor(function () {
100
+ return activeCallback.wasCalled || inactiveCallback.wasCalled;
101
+ });
102
+
103
+ runs(function () {
104
+ expect(inactiveCallback).toHaveBeenCalledWith(elena);
105
+ });
106
+ });
107
+ }
108
+ });
@@ -3,6 +3,7 @@ describe('WebFont', function () {
3
3
  Font = webfont.Font;
4
4
  UserAgent = webfont.UserAgent,
5
5
  FontWatchRunner = webfont.FontWatchRunner,
6
+ NativeFontWatchRunner = webfont.NativeFontWatchRunner,
6
7
  BrowserInfo = webfont.BrowserInfo,
7
8
  Version = webfont.Version,
8
9
  Font = webfont.Font,
@@ -22,7 +23,7 @@ describe('WebFont', function () {
22
23
  new Version(10, 6),
23
24
  '10.6',
24
25
  undefined,
25
- new BrowserInfo(true, false, false)
26
+ new BrowserInfo(true, false, false, false)
26
27
  );
27
28
  fontModuleLoader = new FontModuleLoader();
28
29
  });
@@ -156,6 +157,14 @@ describe('WebFont', function () {
156
157
  }
157
158
  });
158
159
 
160
+ spyOn(NativeFontWatchRunner.prototype, 'start').andCallFake(function () {
161
+ if (conf.id) {
162
+ active(font);
163
+ } else {
164
+ inactive(font);
165
+ }
166
+ });
167
+
159
168
  testModule.supportUserAgent = function (userAgent, support) {
160
169
  if (conf.id) {
161
170
  // The monotype module only initializes font
data/spec/deps.js CHANGED
@@ -8,9 +8,10 @@ goog.addDependency("../../src/core/font.js", ["webfont.Font"], []);
8
8
  goog.addDependency("../../src/core/fontmodule.js", ["webfont.FontModule"], []);
9
9
  goog.addDependency("../../src/core/fontmoduleloader.js", ["webfont.FontModuleLoader","webfont.FontModuleFactory"], []);
10
10
  goog.addDependency("../../src/core/fontruler.js", ["webfont.FontRuler"], []);
11
- goog.addDependency("../../src/core/fontwatcher.js", ["webfont.FontWatcher"], ["webfont.FontWatchRunner"]);
11
+ goog.addDependency("../../src/core/fontwatcher.js", ["webfont.FontWatcher"], ["webfont.FontWatchRunner","webfont.NativeFontWatchRunner"]);
12
12
  goog.addDependency("../../src/core/fontwatchrunner.js", ["webfont.FontWatchRunner"], ["webfont.Font","webfont.FontRuler"]);
13
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"]);
14
+ goog.addDependency("../../src/core/nativefontwatchrunner.js", ["webfont.NativeFontWatchRunner"], ["webfont.Font"]);
14
15
  goog.addDependency("../../src/core/useragent.js", ["webfont.UserAgent"], []);
15
16
  goog.addDependency("../../src/core/useragentparser.js", ["webfont.UserAgentParser"], ["webfont.BrowserInfo","webfont.UserAgent","webfont.Version"]);
16
17
  goog.addDependency("../../src/core/version.js", ["webfont.Version"], []);
@@ -0,0 +1 @@
1
+ @font-face{font-family:SourceSansC;src:url(sourcesans.eot?#iefix) format('embedded-opentype'),url(sourcesans.woff) format('woff'),url(sourcesans.otf) format('opentype'),url(sourcesans.ttf) format('truetype'),url(sourcesans.svg#source_sans_proregular) format('svg');}
@@ -0,0 +1 @@
1
+ @font-face{font-family:SourceSansD;src:url(sourcesans.eot?#iefix) format('embedded-opentype'),url(sourcesans.woff) format('woff'),url(sourcesans.otf) format('opentype'),url(sourcesans.ttf) format('truetype'),url(sourcesans.svg#source_sans_proregular) format('svg');}
data/spec/index.html CHANGED
@@ -10,6 +10,7 @@
10
10
  <link rel="stylesheet" href="fixtures/fonts/nullfont2.css">
11
11
  <link rel="stylesheet" href="fixtures/fonts/nullfont3.css">
12
12
  <link rel="stylesheet" href="fixtures/fonts/sourcesansa.css">
13
+ <link rel="stylesheet" href="fixtures/fonts/sourcesansc.css">
13
14
  </head>
14
15
  <body>
15
16
  <script>
@@ -34,6 +35,7 @@
34
35
  <script src="../spec/core/font_spec.js"></script>
35
36
  <script src="../spec/core/fontruler_spec.js"></script>
36
37
  <script src="../spec/core/fontwatchrunner_spec.js"></script>
38
+ <script src="../spec/core/nativefontwatchrunner_spec.js"></script>
37
39
  <script src="../spec/core/fontwatcher_spec.js"></script>
38
40
  <script src="../spec/core/webfont_spec.js"></script>
39
41
  <script src="../spec/core/version_spec.js"></script>
@@ -42,7 +42,7 @@ describe('modules.Monotype', function () {
42
42
  new Version(10, 6),
43
43
  '10.6',
44
44
  undefined,
45
- new BrowserInfo(true, false, false)
45
+ new BrowserInfo(true, false, false, false)
46
46
  );
47
47
 
48
48
  monotype = new Monotype(fakeDomHelper, configuration);
@@ -7,10 +7,11 @@ goog.provide('webfont.BrowserInfo');
7
7
  * @param {boolean} webKitFallbackBug
8
8
  * @param {boolean} webKitMetricsBug
9
9
  */
10
- webfont.BrowserInfo = function (webfontSupport, webKitFallbackBug, webKitMetricsBug) {
10
+ webfont.BrowserInfo = function (webfontSupport, webKitFallbackBug, webKitMetricsBug, hasNativeFontLoading) {
11
11
  this.webfontSupport_ = webfontSupport;
12
12
  this.webKitFallbackBug_ = webKitFallbackBug;
13
13
  this.webKitMetricsBug_ = webKitMetricsBug;
14
+ this.hasNativeFontLoading_ = hasNativeFontLoading;
14
15
  };
15
16
 
16
17
  goog.scope(function () {
@@ -70,4 +71,14 @@ goog.scope(function () {
70
71
  BrowserInfo.prototype.hasWebKitMetricsBug = function () {
71
72
  return this.webKitMetricsBug_;
72
73
  };
74
+
75
+ /**
76
+ * @export
77
+ *
78
+ * Returns true if this browser has native font loading as
79
+ * specified in: http://dev.w3.org/csswg/css-font-loading/
80
+ */
81
+ BrowserInfo.prototype.hasNativeFontLoading = function () {
82
+ return this.hasNativeFontLoading_;
83
+ };
73
84
  });
data/src/core/font.js CHANGED
@@ -41,6 +41,16 @@ goog.scope(function () {
41
41
  return this.quote_(this.name_);
42
42
  };
43
43
 
44
+ /**
45
+ * Returns a CSS string representation of the font that
46
+ * can be used as the CSS font property shorthand.
47
+ *
48
+ * @return {string}
49
+ */
50
+ Font.prototype.toCssString = function () {
51
+ return this.getCssStyle() + ' ' + this.getCssWeight() + ' 300px ' + this.getCssName();
52
+ };
53
+
44
54
  /**
45
55
  * @private
46
56
  * @param {string} name
@@ -71,8 +81,21 @@ goog.scope(function () {
71
81
  * @return {string}
72
82
  */
73
83
  Font.prototype.getCssVariation = function () {
74
- var style = 'normal',
75
- weight = this.weight_ + '00';
84
+ return 'font-style:' + this.getCssStyle() + ';font-weight:' + this.getCssWeight() + ';';
85
+ };
86
+
87
+ /**
88
+ * @return {string}
89
+ */
90
+ Font.prototype.getCssWeight = function () {
91
+ return this.weight_ + '00';
92
+ };
93
+
94
+ /**
95
+ * @return {string}
96
+ */
97
+ Font.prototype.getCssStyle = function () {
98
+ var style = 'normal';
76
99
 
77
100
  if (this.style_ === 'o') {
78
101
  style = 'oblique';
@@ -80,7 +103,7 @@ goog.scope(function () {
80
103
  style = 'italic';
81
104
  }
82
105
 
83
- return 'font-style:' + style + ';font-weight:' + weight + ';';
106
+ return style;
84
107
  };
85
108
 
86
109
  /**
@@ -1,7 +1,7 @@
1
1
  goog.provide('webfont.FontWatcher');
2
2
 
3
3
  goog.require('webfont.FontWatchRunner');
4
-
4
+ goog.require('webfont.NativeFontWatchRunner');
5
5
  /**
6
6
  * @constructor
7
7
  * @param {webfont.UserAgent} userAgent
@@ -22,7 +22,8 @@ webfont.FontWatcher = function(userAgent, domHelper, eventDispatcher, opt_timeou
22
22
 
23
23
  goog.scope(function () {
24
24
  var FontWatcher = webfont.FontWatcher,
25
- FontWatchRunner = webfont.FontWatchRunner;
25
+ FontWatchRunner = webfont.FontWatchRunner,
26
+ NativeFontWatchRunner = webfont.NativeFontWatchRunner;
26
27
 
27
28
  /**
28
29
  * Watches a set of font families.
@@ -53,7 +54,19 @@ goog.scope(function () {
53
54
 
54
55
  this.eventDispatcher_.dispatchFontLoading(font);
55
56
 
56
- var fontWatchRunner = new FontWatchRunner(
57
+ var fontWatchRunner = null;
58
+
59
+ if (this.browserInfo_.hasNativeFontLoading()) {
60
+ fontWatchRunner = new NativeFontWatchRunner(
61
+ goog.bind(this.fontActive_, this),
62
+ goog.bind(this.fontInactive_, this),
63
+ this.domHelper_,
64
+ font,
65
+ this.timeout_,
66
+ fontTestString
67
+ );
68
+ } else {
69
+ fontWatchRunner = new FontWatchRunner(
57
70
  goog.bind(this.fontActive_, this),
58
71
  goog.bind(this.fontInactive_, this),
59
72
  this.domHelper_,
@@ -63,6 +76,7 @@ goog.scope(function () {
63
76
  metricCompatibleFonts,
64
77
  fontTestString
65
78
  );
79
+ }
66
80
 
67
81
  fontWatchRunner.start();
68
82
  }
@@ -23,7 +23,7 @@ webfont.FontWatchRunner = function(activeCallback, inactiveCallback, domHelper,
23
23
  this.fontTestString_ = opt_fontTestString || webfont.FontWatchRunner.DEFAULT_TEST_STRING;
24
24
  this.browserInfo_ = browserInfo;
25
25
  this.lastResortWidths_ = {};
26
- this.timeout_ = opt_timeout || 5000;
26
+ this.timeout_ = opt_timeout || 3000;
27
27
 
28
28
  this.metricCompatibleFonts_ = opt_metricCompatibleFonts || null;
29
29
 
@@ -0,0 +1,46 @@
1
+ goog.provide('webfont.NativeFontWatchRunner');
2
+
3
+ goog.require('webfont.Font');
4
+
5
+ goog.scope(function () {
6
+ /**
7
+ * @constructor
8
+ * @param {function(webfont.Font)} activeCallback
9
+ * @param {function(webfont.Font)} inactiveCallback
10
+ * @param {webfont.DomHelper} domHelper
11
+ * @param {webfont.Font} font
12
+ * @param {number=} opt_timeout
13
+ * @param {string=} opt_fontTestString
14
+ */
15
+ webfont.NativeFontWatchRunner = function(activeCallback, inactiveCallback, domHelper, font, opt_timeout, opt_fontTestString) {
16
+ this.activeCallback_ = activeCallback;
17
+ this.inactiveCallback_ = inactiveCallback;
18
+ this.font_ = font;
19
+ this.domHelper_ = domHelper;
20
+ this.timeout_ = opt_timeout || 3000;
21
+ this.fontTestString_ = opt_fontTestString || undefined;
22
+ };
23
+
24
+ var NativeFontWatchRunner = webfont.NativeFontWatchRunner;
25
+
26
+ NativeFontWatchRunner.prototype.start = function () {
27
+ var doc = this.domHelper_.getLoadWindow().document,
28
+ that = this;
29
+
30
+ // We're using Promises here because the font load API
31
+ // uses them, so we can be sure they're available.
32
+ Promise.race([new Promise(function (resolve, reject) {
33
+ goog.global.setTimeout(function () {
34
+ reject(that.font_);
35
+ }, that.timeout_);
36
+ }), doc.fonts.load(this.font_.toCssString(), this.fontTestString_)]).then(function (fonts) {
37
+ if (fonts.length === 1) {
38
+ that.activeCallback_(that.font_);
39
+ } else {
40
+ that.inactiveCallback_(that.font_);
41
+ }
42
+ }, function () {
43
+ that.inactiveCallback_(that.font_);
44
+ });
45
+ };
46
+ });
@@ -44,7 +44,7 @@ webfont.UserAgentParser.UNKNOWN_USER_AGENT = new webfont.UserAgent(
44
44
  new webfont.Version(),
45
45
  webfont.UserAgentParser.UNKNOWN,
46
46
  undefined,
47
- new webfont.BrowserInfo(false, false, false));
47
+ new webfont.BrowserInfo(false, false, false, false));
48
48
 
49
49
 
50
50
  goog.scope(function () {
@@ -191,7 +191,7 @@ goog.scope(function () {
191
191
  platformVersion,
192
192
  platformVersionString,
193
193
  documentMode,
194
- new BrowserInfo(supportWebFont, false, false)
194
+ new BrowserInfo(supportWebFont, false, false, !!this.doc_['fonts'])
195
195
  );
196
196
  };
197
197
 
@@ -246,7 +246,7 @@ goog.scope(function () {
246
246
  platformVersion,
247
247
  platformVersionString,
248
248
  documentMode,
249
- new BrowserInfo(false, false, false)
249
+ new BrowserInfo(false, false, false, !!this.doc_['fonts'])
250
250
  );
251
251
  }
252
252
 
@@ -267,7 +267,7 @@ goog.scope(function () {
267
267
  platformVersion,
268
268
  platformVersionString,
269
269
  documentMode,
270
- new BrowserInfo(browserVersion.major >= 10, false, false)
270
+ new BrowserInfo(browserVersion.major >= 10, false, false, !!this.doc_['fonts'])
271
271
  );
272
272
  }
273
273
  }
@@ -286,7 +286,7 @@ goog.scope(function () {
286
286
  platformVersion,
287
287
  platformVersionString,
288
288
  documentMode,
289
- new BrowserInfo(browserVersion.major >= 10, false, false)
289
+ new BrowserInfo(browserVersion.major >= 10, false, false, !!this.doc_['fonts'])
290
290
  );
291
291
  }
292
292
  return new UserAgent(
@@ -300,7 +300,7 @@ goog.scope(function () {
300
300
  platformVersion,
301
301
  platformVersionString,
302
302
  documentMode,
303
- new BrowserInfo(false, false, false)
303
+ new BrowserInfo(false, false, false, !!this.doc_['fonts'])
304
304
  );
305
305
  };
306
306
 
@@ -386,7 +386,7 @@ goog.scope(function () {
386
386
  platformVersion,
387
387
  platformVersionString,
388
388
  this.getDocumentMode_(this.doc_),
389
- new BrowserInfo(supportWebFont, hasWebKitFallbackBug, hasWebKitMetricsBug)
389
+ new BrowserInfo(supportWebFont, hasWebKitFallbackBug, hasWebKitMetricsBug, !!this.doc_['fonts'])
390
390
  );
391
391
  };
392
392
 
@@ -438,7 +438,7 @@ goog.scope(function () {
438
438
  platformVersion,
439
439
  platformVersionString,
440
440
  this.getDocumentMode_(this.doc_),
441
- new BrowserInfo(supportWebFont, false, false)
441
+ new BrowserInfo(supportWebFont, false, false, !!this.doc_['fonts'])
442
442
  );
443
443
  };
444
444
 
data/src/modules.yml CHANGED
@@ -11,6 +11,7 @@ core:
11
11
  - core/fontmodule.js
12
12
  - core/fontmoduleloader.js
13
13
  - core/fontruler.js
14
+ - core/nativefontwatchrunner.js
14
15
  - core/fontwatchrunner.js
15
16
  - core/fontwatcher.js
16
17
  - core/webfont.js
@@ -1473,65 +1473,6 @@ goog.inherits = function(childCtor, parentCtor) {
1473
1473
  childCtor.prototype.constructor = childCtor;
1474
1474
  };
1475
1475
 
1476
-
1477
- /**
1478
- * Call up to the superclass.
1479
- *
1480
- * If this is called from a constructor, then this calls the superclass
1481
- * contructor with arguments 1-N.
1482
- *
1483
- * If this is called from a prototype method, then you must pass
1484
- * the name of the method as the second argument to this function. If
1485
- * you do not, you will get a runtime error. This calls the superclass'
1486
- * method with arguments 2-N.
1487
- *
1488
- * This function only works if you use goog.inherits to express
1489
- * inheritance relationships between your classes.
1490
- *
1491
- * This function is a compiler primitive. At compile-time, the
1492
- * compiler will do macro expansion to remove a lot of
1493
- * the extra overhead that this function introduces. The compiler
1494
- * will also enforce a lot of the assumptions that this function
1495
- * makes, and treat it as a compiler error if you break them.
1496
- *
1497
- * @param {!Object} me Should always be "this".
1498
- * @param {*=} opt_methodName The method name if calling a super method.
1499
- * @param {...*} var_args The rest of the arguments.
1500
- * @return {*} The return value of the superclass method.
1501
- */
1502
- goog.base = function(me, opt_methodName, var_args) {
1503
- var caller = arguments.callee.caller;
1504
- if (caller.superClass_) {
1505
- // This is a constructor. Call the superclass constructor.
1506
- return caller.superClass_.constructor.apply(
1507
- me, Array.prototype.slice.call(arguments, 1));
1508
- }
1509
-
1510
- var args = Array.prototype.slice.call(arguments, 2);
1511
- var foundCaller = false;
1512
- for (var ctor = me.constructor;
1513
- ctor; ctor = ctor.superClass_ && ctor.superClass_.constructor) {
1514
- if (ctor.prototype[opt_methodName] === caller) {
1515
- foundCaller = true;
1516
- } else if (foundCaller) {
1517
- return ctor.prototype[opt_methodName].apply(me, args);
1518
- }
1519
- }
1520
-
1521
- // If we did not find the caller in the prototype chain,
1522
- // then one of two things happened:
1523
- // 1) The caller is an instance method.
1524
- // 2) This method was not called by the right caller.
1525
- if (me[opt_methodName] === caller) {
1526
- return me.constructor.prototype[opt_methodName].apply(me, args);
1527
- } else {
1528
- throw Error(
1529
- 'goog.base called from a method of one name ' +
1530
- 'to a method of a different name');
1531
- }
1532
- };
1533
-
1534
-
1535
1476
  /**
1536
1477
  * Allow for aliasing within scope functions. This function exists for
1537
1478
  * uncompiled code - in compiled code the calls will be inlined and the
Binary file
@@ -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.5.6'
17
- s.date = '2014-09-03'
16
+ s.version = '1.5.7'
17
+ s.date = '2014-11-17'
18
18
 
19
19
  ## Make sure your summary is short. The description may be as long
20
20
  ## as you like.
@@ -117,6 +117,7 @@ DESC
117
117
  spec/core/fontruler_spec.js
118
118
  spec/core/fontwatcher_spec.js
119
119
  spec/core/fontwatchrunner_spec.js
120
+ spec/core/nativefontwatchrunner_spec.js
120
121
  spec/core/size_spec.js
121
122
  spec/core/useragentparser_spec.js
122
123
  spec/core/version_spec.js
@@ -136,6 +137,8 @@ DESC
136
137
  spec/fixtures/fonts/sourcesans.woff
137
138
  spec/fixtures/fonts/sourcesansa.css
138
139
  spec/fixtures/fonts/sourcesansb.css
140
+ spec/fixtures/fonts/sourcesansc.css
141
+ spec/fixtures/fonts/sourcesansd.css
139
142
  spec/index.html
140
143
  spec/modules/custom_spec.js
141
144
  spec/modules/fontdeck_spec.js
@@ -156,6 +159,7 @@ DESC
156
159
  src/core/fontwatcher.js
157
160
  src/core/fontwatchrunner.js
158
161
  src/core/initialize.js
162
+ src/core/nativefontwatchrunner.js
159
163
  src/core/useragent.js
160
164
  src/core/useragentparser.js
161
165
  src/core/version.js
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: webfontloader
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.5.6
4
+ version: 1.5.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ryan Carver
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2014-09-03 00:00:00.000000000 Z
12
+ date: 2014-11-17 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rake
@@ -126,6 +126,7 @@ files:
126
126
  - spec/core/fontruler_spec.js
127
127
  - spec/core/fontwatcher_spec.js
128
128
  - spec/core/fontwatchrunner_spec.js
129
+ - spec/core/nativefontwatchrunner_spec.js
129
130
  - spec/core/size_spec.js
130
131
  - spec/core/useragentparser_spec.js
131
132
  - spec/core/version_spec.js
@@ -145,6 +146,8 @@ files:
145
146
  - spec/fixtures/fonts/sourcesans.woff
146
147
  - spec/fixtures/fonts/sourcesansa.css
147
148
  - spec/fixtures/fonts/sourcesansb.css
149
+ - spec/fixtures/fonts/sourcesansc.css
150
+ - spec/fixtures/fonts/sourcesansd.css
148
151
  - spec/index.html
149
152
  - spec/modules/custom_spec.js
150
153
  - spec/modules/fontdeck_spec.js
@@ -165,6 +168,7 @@ files:
165
168
  - src/core/fontwatcher.js
166
169
  - src/core/fontwatchrunner.js
167
170
  - src/core/initialize.js
171
+ - src/core/nativefontwatchrunner.js
168
172
  - src/core/useragent.js
169
173
  - src/core/useragentparser.js
170
174
  - src/core/version.js