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) {
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 + ");";
// 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)
};
}.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();
}