From bb6e5c6e00d2fc94fc02e23de91182b0271ac0d9 Mon Sep 17 00:00:00 2001 From: notmasteryet Date: Thu, 1 Dec 2011 20:56:26 -0600 Subject: [PATCH] (#840) fix font stretching and overlapping characters encoding --- src/canvas.js | 4 ++-- src/fonts.js | 16 ++++++++++++---- 2 files changed, 14 insertions(+), 6 deletions(-) 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 = [];