From 8200f099a30c128bbe7885ae8ef82a491fdfb4fb Mon Sep 17 00:00:00 2001 From: Yury Delendik Date: Tue, 17 Nov 2015 13:21:27 -0600 Subject: [PATCH] Fix chars scaling for standard fonts. --- src/display/canvas.js | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/src/display/canvas.js b/src/display/canvas.js index ad58f84f1..42cd83c20 100644 --- a/src/display/canvas.js +++ b/src/display/canvas.js @@ -1421,16 +1421,22 @@ var CanvasGraphics = (function CanvasGraphicsClosure() { scaledY = 0; } - if (font.remeasure && width > 0 && this.isFontSubpixelAAEnabled) { - // some standard fonts may not have the exact width, trying to - // rescale per character + if (font.remeasure && width > 0) { + // Some standard fonts may not have the exact width: rescale per + // character if measured width is greater than expected glyph width + // and subpixel-aa is enabled, otherwise just center the glyph. var measuredWidth = ctx.measureText(character).width * 1000 / fontSize * fontSizeScale; - var characterScaleX = width / measuredWidth; - restoreNeeded = true; - ctx.save(); - ctx.scale(characterScaleX, 1); - scaledX /= characterScaleX; + if (width < measuredWidth && this.isFontSubpixelAAEnabled) { + var characterScaleX = width / measuredWidth; + restoreNeeded = true; + ctx.save(); + ctx.scale(characterScaleX, 1); + scaledX /= characterScaleX; + } else if (width !== measuredWidth) { + scaledX += (width - measuredWidth) / 2000 * + fontSize / fontSizeScale; + } } if (simpleFillText && !accent) {