diff --git a/fonts.js b/fonts.js
index 0c6545f0c..a3cb05a9f 100644
--- a/fonts.js
+++ b/fonts.js
@@ -3,6 +3,8 @@
"use strict";
+var isWorker = (typeof window == "undefined");
+
/**
* Maximum file size of the font.
*/
@@ -36,9 +38,12 @@ var kDisableFonts = false;
var Fonts = (function Fonts() {
var kScalePrecision = 40;
- var fonts = Object.create(null);
- var ctx = document.createElement("canvas").getContext("2d");
- ctx.scale(1 / kScalePrecision, 1);
+ var fonts = Object.create(null);
+
+ if (!isWorker) {
+ var ctx = document.createElement("canvas").getContext("2d");
+ ctx.scale(1 / kScalePrecision, 1);
+ }
function Font(name, data, properties) {
this.name = name;
@@ -120,7 +125,6 @@ var Fonts = (function Fonts() {
var FontLoader = {
bind: function(fonts) {
- var worker = (typeof window == "undefined");
var ready = true;
for (var i = 0; i < fonts.length; i++) {
@@ -140,7 +144,7 @@ var FontLoader = {
for (var j = 0; j < length; j++)
str += String.fromCharCode(data[j]);
- worker ? obj.bindWorker(str) : obj.bindDOM(str);
+ isWorker ? obj.bindWorker(str) : obj.bindDOM(str);
}
return ready;
diff --git a/multi_page_viewer.html b/multi_page_viewer.html
index e90606a23..df71d6690 100644
--- a/multi_page_viewer.html
+++ b/multi_page_viewer.html
@@ -27,9 +27,9 @@
Zoom
diff --git a/worker/client.js b/worker/client.js
index 73fb12f09..fd98b857e 100644
--- a/worker/client.js
+++ b/worker/client.js
@@ -59,14 +59,15 @@ FontWorker.prototype = {
"fonts": function(data) {
// console.log("got processed fonts from worker", Object.keys(data));
for (name in data) {
- // Update the
- Fonts[name].properties = {
+ // Update the encoding property.
+ var font = Fonts.lookup(name);
+ font.properties = {
encoding: data[name].encoding
}
-
+
// Call `Font.prototype.bindDOM` to make the font get loaded on the page.
Font.prototype.bindDOM.call(
- Fonts[name],
+ font,
data[name].str,
// IsLoadedCallback.
this.$handleFontLoadedCallback
@@ -84,19 +85,9 @@ FontWorker.prototype = {
continue;
}
- // Store only the data on Fonts that is needed later on, such that we
- // hold track on as lease memory as possible.
- Fonts[font.name] = {
- name: font.name,
- mimetype: font.mimetype,
- // This is set later on the worker replay. For some fonts, the encoding
- // is calculated during the conversion process happening on the worker
- // and therefore is not available right now.
- // properties: {
- // encoding: font.properties.encoding
- // },
- cache: Object.create(null)
- };
+ // Register the font but don't pass in any real data. The idea is to
+ // store as less data as possible to reduce memory usage.
+ Fonts.registerFont(font.name, Object.create(null), Object.create(null));
// Mark this font to be handled later.
notLoaded.push(font);