Merge pull request #6651 from yurydelendik/fix-chars-scaling

Fix chars scaling for standard fonts. (redo of #4908)
This commit is contained in:
Brendan Dahl 2015-12-10 14:18:48 -05:00
commit 91b27aae46

View File

@ -1446,16 +1446,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;
var characterScaleX = width / measuredWidth; if (width < measuredWidth && this.isFontSubpixelAAEnabled) {
restoreNeeded = true; var characterScaleX = width / measuredWidth;
ctx.save(); restoreNeeded = true;
ctx.scale(characterScaleX, 1); ctx.save();
scaledX /= characterScaleX; ctx.scale(characterScaleX, 1);
scaledX /= characterScaleX;
} else if (width !== measuredWidth) {
scaledX += (width - measuredWidth) / 2000 *
fontSize / fontSizeScale;
}
} }
if (simpleFillText && !accent) { if (simpleFillText && !accent) {