Skip to content

Commit bb6e5c6

Browse files
committed
(mozilla#840) fix font stretching and overlapping characters encoding
1 parent b958fd4 commit bb6e5c6

File tree

2 files changed

+14
-6
lines changed

2 files changed

+14
-6
lines changed

src/canvas.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -575,7 +575,7 @@ var CanvasGraphics = (function canvasGraphics() {
575575
ctx.scale(1, -1);
576576
ctx.translate(current.x, -1 * current.y);
577577
ctx.transform.apply(ctx, fontMatrix);
578-
ctx.scale(1 / textHScale, 1);
578+
ctx.scale(textHScale, 1);
579579
},
580580
getTextGeometry: function canvasGetTextGeometry() {
581581
var geometry = {};
@@ -651,7 +651,7 @@ var CanvasGraphics = (function canvasGraphics() {
651651
ctx.transform.apply(ctx, current.textMatrix);
652652
ctx.translate(current.x, current.y);
653653

654-
ctx.scale(1 / textHScale, 1);
654+
ctx.scale(textHScale, 1);
655655
for (var i = 0; i < glyphsLength; ++i) {
656656

657657
var glyph = glyphs[i];

src/fonts.js

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1705,10 +1705,18 @@ var Font = (function Font() {
17051705

17061706
var cidToGidMap = properties.cidToGidMap || [];
17071707
var gidToCidMap = [0];
1708-
for (var j = cidToGidMap.length - 1; j >= 0; j--) {
1709-
var gid = cidToGidMap[j];
1710-
if (gid)
1711-
gidToCidMap[gid] = j;
1708+
if (cidToGidMap.length > 0) {
1709+
for (var j = cidToGidMap.length - 1; j >= 0; j--) {
1710+
var gid = cidToGidMap[j];
1711+
if (gid)
1712+
gidToCidMap[gid] = j;
1713+
}
1714+
// filling the gaps using CID above the CIDs currently used in font
1715+
var nextCid = cidToGidMap.length;
1716+
for (var i = 1; i < numGlyphs; i++) {
1717+
if (!gidToCidMap[i])
1718+
gidToCidMap[i] = nextCid++;
1719+
}
17121720
}
17131721

17141722
var glyphs = [], ids = [];

0 commit comments

Comments
 (0)