Fix chars scaling for standard fonts.

This commit is contained in:
Yury Delendik 2015-11-17 13:21:27 -06:00
parent 2f1a626d6a
commit 8200f099a3

View File

@ -1421,16 +1421,22 @@ var CanvasGraphics = (function CanvasGraphicsClosure() {
scaledY = 0; scaledY = 0;
} }
if (font.remeasure && width > 0 && this.isFontSubpixelAAEnabled) { if (font.remeasure && width > 0) {
// some standard fonts may not have the exact width, trying to // Some standard fonts may not have the exact width: rescale per
// rescale per character // 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 / var measuredWidth = ctx.measureText(character).width * 1000 /
fontSize * fontSizeScale; fontSize * fontSizeScale;
if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
var characterScaleX = width / measuredWidth; var characterScaleX = width / measuredWidth;
restoreNeeded = true; restoreNeeded = true;
ctx.save(); ctx.save();
ctx.scale(characterScaleX, 1); ctx.scale(characterScaleX, 1);
scaledX /= characterScaleX; scaledX /= characterScaleX;
} else if (width !== measuredWidth) {
scaledX += (width - measuredWidth) / 2000 *
fontSize / fontSizeScale;
}
} }
if (simpleFillText && !accent) { if (simpleFillText && !accent) {