From cdefe1f68cb2d8fa42b453f96aba960235b89a94 Mon Sep 17 00:00:00 2001 From: Roman Chaley Date: Sun, 4 Aug 2024 16:11:37 +0200 Subject: [PATCH] Apply stroke letter by letter if there is custom letter spacing --- src/gameobjects/text/Text.js | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/src/gameobjects/text/Text.js b/src/gameobjects/text/Text.js index 85cb142d7..6c1d9dad4 100644 --- a/src/gameobjects/text/Text.js +++ b/src/gameobjects/text/Text.js @@ -1391,7 +1391,11 @@ var Text = new Class({ linePositionY = Math.round(linePositionY); } - if (style.strokeThickness) + var letterSpacing = this.letterSpacing; + + // Apply stroke to the whole line only if there's no custom letter spacing + + if (style.strokeThickness && letterSpacing === 0) { style.syncShadow(context, style.shadowStroke); @@ -1404,8 +1408,6 @@ var Text = new Class({ // Looping fillText could be an expensive operation, we should ignore it if it is not needed - var letterSpacing = this.letterSpacing; - if (letterSpacing !== 0) { var charPositionX = 0; @@ -1415,6 +1417,15 @@ var Text = new Class({ // Draw text letter by letter for (var l = 0; l < line.length; l++) { + if (style.strokeThickness) + { + style.syncShadow(context, style.shadowStroke); + + context.strokeText(line[l], linePositionX + charPositionX, linePositionY); + + style.syncShadow(context, style.shadowFill); + } + context.fillText(line[l], linePositionX + charPositionX, linePositionY); charPositionX += context.measureText(line[l]).width + letterSpacing;