Skip to content

Commit 5d5862e

Browse files
authored
optimize prepareCanvasFont performance (#2197)
1 parent 7519984 commit 5d5862e

File tree

1 file changed

+12
-3
lines changed

1 file changed

+12
-3
lines changed

src/core/Canvas.js

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ let TEMP_CANVAS = null;
2525

2626
const RADIAN = Math.PI / 180;
2727
const textOffsetY = 1;
28+
const TEXT_BASELINE = 'top';
2829

2930
const Canvas = {
3031
getCanvas2DContext(canvas) {
@@ -48,13 +49,21 @@ const Canvas = {
4849
},
4950

5051
prepareCanvasFont(ctx, style) {
51-
ctx.textBaseline = 'top';
52-
ctx.font = getFont(style);
52+
if (ctx.textBaseline !== TEXT_BASELINE) {
53+
ctx.textBaseline = TEXT_BASELINE;
54+
}
55+
const font = getFont(style);
56+
if (ctx.font !== font) {
57+
ctx.font = font;
58+
}
5359
let fill = style['textFill'];
5460
if (!fill) {
5561
fill = DEFAULT_TEXT_COLOR;
5662
}
57-
ctx.fillStyle = Canvas.getRgba(fill, style['textOpacity']);
63+
const fillStyle = Canvas.getRgba(fill, style['textOpacity']);
64+
if (ctx.fillStyle !== fillStyle) {
65+
ctx.fillStyle = fillStyle;
66+
}
5867
},
5968

6069
/**

0 commit comments

Comments
 (0)