From 2ef0a38ef84c5d24922da34131529358a861f4d7 Mon Sep 17 00:00:00 2001 From: xkxx Date: Tue, 19 Sep 2023 01:08:16 +0000 Subject: [PATCH] Address PR comments. --- src/Context.ts | 22 ++++------------------ src/shapes/Text.ts | 9 ++++++--- 2 files changed, 10 insertions(+), 21 deletions(-) diff --git a/src/Context.ts b/src/Context.ts index b0c59e4dc..ba6eeaaaa 100644 --- a/src/Context.ts +++ b/src/Context.ts @@ -78,6 +78,7 @@ var CONTEXT_PROPERTIES = [ 'shadowBlur', 'shadowOffsetX', 'shadowOffsetY', + 'letterSpacing', 'lineCap', 'lineDashOffset', 'lineJoin', @@ -94,8 +95,8 @@ var CONTEXT_PROPERTIES = [ const traceArrMax = 100; -interface CanvasRenderingContext2DFeatureDetection extends CanvasRenderingContext2D { - letterSpacing: string | undefined; +interface ExtendedCanvasRenderingContext2D extends CanvasRenderingContext2D { + letterSpacing: string; } /** @@ -712,21 +713,6 @@ export class Context { translate(x: number, y: number) { this._context.translate(x, y); } - /** - * Set letterSpacing if supported by browser. - * @method - * @name Konva.Context#trySetLetterSpacing - * @returns true if successful, false if not supported. - */ - trySetLetterSpacing(letterSpacing: number): boolean { - var context = this._context as CanvasRenderingContext2DFeatureDetection; - var letterSpacingSupported = 'letterSpacing' in context; - - if (letterSpacingSupported) { - context.letterSpacing = letterSpacing + "px"; - } - return letterSpacingSupported; - } _enableTrace() { var that = this, len = CONTEXT_METHODS.length, @@ -785,7 +771,7 @@ export class Context { // supported context properties type CanvasContextProps = Pick< - CanvasRenderingContext2D, + ExtendedCanvasRenderingContext2D, (typeof CONTEXT_PROPERTIES)[number] >; diff --git a/src/shapes/Text.ts b/src/shapes/Text.ts index f8c7af06a..7f7ec14be 100644 --- a/src/shapes/Text.ts +++ b/src/shapes/Text.ts @@ -207,7 +207,9 @@ export class Text extends Shape { var lineTranslateX = 0; var lineTranslateY = 0; - context.setAttr('direction', direction); + if (direction === RTL) { + context.setAttr('direction', direction); + } context.setAttr('font', this._getContextFont()); @@ -315,13 +317,14 @@ export class Text extends Shape { lineTranslateX += this.measureSize(letter).width + letterSpacing; } } else { - context.trySetLetterSpacing(letterSpacing); + if (letterSpacing !== 0) { + context.setAttr('letterSpacing', `${letterSpacing}px`); + } this._partialTextX = lineTranslateX; this._partialTextY = translateY + lineTranslateY; this._partialText = text; context.fillStrokeShape(this); - context.trySetLetterSpacing(0); } context.restore(); if (textArrLen > 1) {