diff --git a/src/canvas.js b/src/canvas.js index b457eb4ff..0913b582a 100644 --- a/src/canvas.js +++ b/src/canvas.js @@ -575,7 +575,7 @@ var CanvasGraphics = (function canvasGraphics() { ctx.scale(1, -1); ctx.translate(current.x, -1 * current.y); ctx.transform.apply(ctx, fontMatrix); - ctx.scale(1 / textHScale, 1); + ctx.scale(textHScale, 1); }, getTextGeometry: function canvasGetTextGeometry() { var geometry = {}; @@ -651,7 +651,7 @@ var CanvasGraphics = (function canvasGraphics() { ctx.transform.apply(ctx, current.textMatrix); ctx.translate(current.x, current.y); - ctx.scale(1 / textHScale, 1); + ctx.scale(textHScale, 1); for (var i = 0; i < glyphsLength; ++i) { var glyph = glyphs[i]; diff --git a/src/fonts.js b/src/fonts.js index 2e95a7c94..672739ea4 100644 --- a/src/fonts.js +++ b/src/fonts.js @@ -1705,10 +1705,18 @@ var Font = (function Font() { var cidToGidMap = properties.cidToGidMap || []; var gidToCidMap = [0]; - for (var j = cidToGidMap.length - 1; j >= 0; j--) { - var gid = cidToGidMap[j]; - if (gid) - gidToCidMap[gid] = j; + if (cidToGidMap.length > 0) { + for (var j = cidToGidMap.length - 1; j >= 0; j--) { + var gid = cidToGidMap[j]; + if (gid) + gidToCidMap[gid] = j; + } + // filling the gaps using CID above the CIDs currently used in font + var nextCid = cidToGidMap.length; + for (var i = 1; i < numGlyphs; i++) { + if (!gidToCidMap[i]) + gidToCidMap[i] = nextCid++; + } } var glyphs = [], ids = []; diff --git a/test/pdfs/.gitignore b/test/pdfs/.gitignore index a757acf34..325987de6 100644 --- a/test/pdfs/.gitignore +++ b/test/pdfs/.gitignore @@ -16,3 +16,4 @@ !alphatrans.pdf !devicen.pdf !cmykjpeg.pdf +!issue840.pdf diff --git a/test/pdfs/issue840.pdf b/test/pdfs/issue840.pdf new file mode 100644 index 000000000..6501a8c95 Binary files /dev/null and b/test/pdfs/issue840.pdf differ diff --git a/test/test_manifest.json b/test/test_manifest.json index dd861c9f2..bfa131d9a 100644 --- a/test/test_manifest.json +++ b/test/test_manifest.json @@ -290,5 +290,11 @@ "link": true, "rounds": 1, "type": "eq" + }, + { "id": "issue840", + "file": "pdfs/issue840.pdf", + "md5": "20d88011dd7e3c4fb5274979094dab93", + "rounds": 1, + "type": "eq" } ]