From 568690e2f189252a54debfa4e523d99e85dd6905 Mon Sep 17 00:00:00 2001 From: liangxu Date: Thu, 9 Jul 2026 12:26:08 +0800 Subject: [PATCH] =?UTF-8?q?fix(server):=20widen=20letter-spacing=20normali?= =?UTF-8?q?zation=20bounds=20to=20=C2=B1256?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Negative and larger letter spacing values are legitimate for extracted text layers; clamp only outside ±256 instead of rejecting anything below 0 (or above 80 in the extractor). Co-Authored-By: Claude Opus 4.8 (1M context) --- server/internal/application/design_service.go | 2 +- .../internal/infrastructure/textextraction/text_extraction.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/server/internal/application/design_service.go b/server/internal/application/design_service.go index 6279aea..9a2b3f3 100644 --- a/server/internal/application/design_service.go +++ b/server/internal/application/design_service.go @@ -6059,7 +6059,7 @@ func newEditableTextLayers(target design.Node, extraction design.TextExtraction) lineHeight = 1.08 } letterSpacing := layer.LetterSpacing - if letterSpacing < 0 { + if letterSpacing < -256 || letterSpacing > 256 { letterSpacing = 0 } strokeColor := strings.TrimSpace(layer.StrokeColor) diff --git a/server/internal/infrastructure/textextraction/text_extraction.go b/server/internal/infrastructure/textextraction/text_extraction.go index f2944f1..adafd9d 100644 --- a/server/internal/infrastructure/textextraction/text_extraction.go +++ b/server/internal/infrastructure/textextraction/text_extraction.go @@ -353,7 +353,7 @@ func normalizeLineHeight(value float64, fontSize float64) float64 { } func normalizeLetterSpacing(value float64) float64 { - if value < 0 || value > 80 { + if value < -256 || value > 256 { return 0 } return value