This commit is contained in:
Vivien Nicolas 2011-07-01 03:39:55 +02:00
commit 697aa0f15e
3 changed files with 19 additions and 24 deletions

View File

@ -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;

View File

@ -27,9 +27,9 @@
<select id="scaleSelect">
<option value="50">50%</option>
<option value="75">75%</option>
<option value="100" selected="selected">100%</option>
<option value="100">100%</option>
<option value="125">125%</option>
<option value="150">150%</option>
<option value="150" selected="selected">150%</option>
<option value="200">200%</option>
</select>
<span class="label">Zoom</span>

View File

@ -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);