This commit is contained in:
Chris Jones 2011-07-01 01:23:20 -07:00
commit 7b883a89db
2 changed files with 18 additions and 24 deletions

View File

@ -3,6 +3,8 @@
"use strict"; "use strict";
var isWorker = (typeof window == "undefined");
/** /**
* Maximum file size of the font. * Maximum file size of the font.
*/ */
@ -37,8 +39,11 @@ var kDisableFonts = false;
var Fonts = (function () { var Fonts = (function () {
var kScalePrecision = 40; var kScalePrecision = 40;
var fonts = Object.create(null); var fonts = Object.create(null);
if (!isWorker) {
var ctx = document.createElement("canvas").getContext("2d"); var ctx = document.createElement("canvas").getContext("2d");
ctx.scale(1 / kScalePrecision, 1); ctx.scale(1 / kScalePrecision, 1);
}
function Font(name, data, properties) { function Font(name, data, properties) {
this.name = name; this.name = name;
@ -120,8 +125,6 @@ var Fonts = (function () {
var FontLoader = { var FontLoader = {
bind: function(fonts, callback) { bind: function(fonts, callback) {
var worker = (typeof window == "undefined");
function checkFontsLoaded() { function checkFontsLoaded() {
for (var i = 0; i < fonts.length; i++) { for (var i = 0; i < fonts.length; i++) {
var font = fonts[i]; var font = fonts[i];
@ -149,7 +152,7 @@ var FontLoader = {
for (var j = 0; j < length; j++) for (var j = 0; j < length; j++)
str += String.fromCharCode(data[j]); str += String.fromCharCode(data[j]);
var rule = worker ? obj.bindWorker(str) : obj.bindDOM(str); var rule = isWorker ? obj.bindWorker(str) : obj.bindDOM(str);
if (rule) { if (rule) {
rules.push(rule); rules.push(rule);
names.push(font.name); names.push(font.name);
@ -157,7 +160,7 @@ var FontLoader = {
} }
} }
if (!worker && rules.length) { if (!isWorker && rules.length) {
FontLoader.prepareFontLoadEvent(rules, names); FontLoader.prepareFontLoadEvent(rules, names);
} }

View File

@ -59,14 +59,15 @@ FontWorker.prototype = {
"fonts": function(data) { "fonts": function(data) {
// console.log("got processed fonts from worker", Object.keys(data)); // console.log("got processed fonts from worker", Object.keys(data));
for (name in data) { for (name in data) {
// Update the // Update the encoding property.
Fonts[name].properties = { var font = Fonts.lookup(name);
font.properties = {
encoding: data[name].encoding encoding: data[name].encoding
} }
// Call `Font.prototype.bindDOM` to make the font get loaded on the page. // Call `Font.prototype.bindDOM` to make the font get loaded on the page.
Font.prototype.bindDOM.call( Font.prototype.bindDOM.call(
Fonts[name], font,
data[name].str, data[name].str,
// IsLoadedCallback. // IsLoadedCallback.
this.$handleFontLoadedCallback this.$handleFontLoadedCallback
@ -84,19 +85,9 @@ FontWorker.prototype = {
continue; continue;
} }
// Store only the data on Fonts that is needed later on, such that we // Register the font but don't pass in any real data. The idea is to
// hold track on as lease memory as possible. // store as less data as possible to reduce memory usage.
Fonts[font.name] = { Fonts.registerFont(font.name, Object.create(null), Object.create(null));
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)
};
// Mark this font to be handled later. // Mark this font to be handled later.
notLoaded.push(font); notLoaded.push(font);