Make all fonts render. Use encoding from FontWorker. Render canvas if id!=0 although fonts haven't arrived yet.

Conflicts:

	worker/pdf.js
This commit is contained in:
Julian Viereck 2011-06-26 20:58:22 +02:00
parent c1834c1bb5
commit 23e9064f17
2 changed files with 23 additions and 14 deletions

View File

@ -64,15 +64,8 @@ var Fonts = {
var unicode = encoding[charcode];
// Check if the glyph has already been converted
// if (unicode instanceof Name)
try {
if (!IsNum(unicode))
// if ("name" in unicode)
if (!IsNum(unicode))
unicode = encoding[unicode] = GlyphsUnicode[unicode.name];
} catch(e) {
console.log("FAIL");
}
// Handle surrogate pairs
if (unicode > 0xFFFF) {

View File

@ -37,10 +37,18 @@ function FontWorker() {
FontWorker.prototype = {
actionHandler: {
"log": function(data) {
console.log.apply(console, data);
},
"fonts": function(data) {
// console.log("got processed fonts from worker", Object.keys(data));
for (name in data) {
var base64 = window.btoa(data[name]);
// Update the
Fonts[name].properties = {
encoding: data[name].encoding
}
var base64 = window.btoa(data[name].str);
// Add the @font-face rule to the document
var url = "url(data:font/opentype;base64," + base64 + ");";
@ -90,9 +98,12 @@ FontWorker.prototype = {
// 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] = {
properties: {
encoding: font.properties.encoding
},
// 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)
};
@ -348,8 +359,13 @@ function WorkerPDFDoc(canvas) {
}.bind(this);
if (this.waitingForFonts) {
console.log("want to render, but not all fonts are there", id);
this.waitingForFontsCallback.push(renderData);
if (id == 0) {
console.log("want to render, but not all fonts are there", id);
this.waitingForFontsCallback.push(renderData);
} else {
// console.log("assume canvas doesn't have fonts", id);
renderData();
}
} else {
renderData();
}