From c370b8a428be472ece58ffff78ad97698f26129b Mon Sep 17 00:00:00 2001 From: Julian Viereck Date: Thu, 8 Sep 2011 18:34:54 -0700 Subject: [PATCH] Ensure things work for default fonts like Arial --- fonts.js | 8 ++++---- pdf.js | 4 ++-- worker.js | 25 ++++++++++++++----------- 3 files changed, 20 insertions(+), 17 deletions(-) diff --git a/fonts.js b/fonts.js index 69bb50590..0ca75e88a 100755 --- a/fonts.js +++ b/fonts.js @@ -173,7 +173,7 @@ var FontLoader = { document.documentElement.removeEventListener( 'pdfjsFontLoad', checkFontsLoaded, false); - callback(); + callback(objs); return true; } @@ -450,6 +450,8 @@ var Font = (function Font() { var constructor = function font_constructor(name, file, properties) { this.name = name; this.encoding = properties.encoding; + this.glyphs = properties.glyphs; + this.loadedName = properties.loadedName; this.sizes = []; var names = name.split('+'); @@ -477,7 +479,6 @@ var Font = (function Font() { // name ArialBlack for example will be replaced by Helvetica. this.black = (name.search(/Black/g) != -1); - this.loadedName = fontName.split('-')[0]; this.loading = false; return; } @@ -514,14 +515,13 @@ var Font = (function Font() { this.type = properties.type; this.textMatrix = properties.textMatrix; this.composite = properties.composite; - this.loadedName = properties.loadedName; // TODO: Remove this once we can be sure nothing got broken to du changes // in this commit. if (!this.loadedName) { throw "There has to be a `loadedName`"; } - + this.loading = true; }; diff --git a/pdf.js b/pdf.js index 941c3c38e..3a2aff3e0 100644 --- a/pdf.js +++ b/pdf.js @@ -3427,9 +3427,9 @@ var Page = (function() { }, ensureFonts: function(fonts, callback) { - var fontObjs = FontLoader.bind( + FontLoader.bind( fonts, - function() { + function(fontObjs) { // Rebuild the FontsMap. This is emulating the behavior of the main // thread. if (fontObjs) { diff --git a/worker.js b/worker.js index c0cf7c29d..23cc9ae14 100644 --- a/worker.js +++ b/worker.js @@ -134,19 +134,22 @@ var WorkerPDFDoc = (function() { for (var i = 0; i < fonts.length; i++) { var font = fonts[i]; - var fontFileDict = new Dict(); - fontFileDict.map = font.file.dict.map; + // Some fonts don't have a file, e.g. the build in ones like Arial. + if (font.file) { + var fontFileDict = new Dict(); + fontFileDict.map = font.file.dict.map; - var fontFile = new Stream(font.file.bytes, font.file.start, - font.file.end - font.file.start, fontFileDict); + var fontFile = new Stream(font.file.bytes, font.file.start, + font.file.end - font.file.start, fontFileDict); - // Check if this is a FlateStream. Otherwise just use the created - // Stream one. This makes complex_ttf_font.pdf work. - var cmf = font.file.bytes[0]; - if ((cmf & 0x0f) == 0x08) { - font.file = new FlateStream(fontFile); - } else { - font.file = fontFile; + // Check if this is a FlateStream. Otherwise just use the created + // Stream one. This makes complex_ttf_font.pdf work. + var cmf = font.file.bytes[0]; + if ((cmf & 0x0f) == 0x08) { + font.file = new FlateStream(fontFile); + } else { + font.file = fontFile; + } } }