From 7cfa08aec5eb4769e27394ad1644fabae841be6d Mon Sep 17 00:00:00 2001 From: Danila Poyarkov Date: Sat, 16 May 2026 18:02:10 +0300 Subject: [PATCH] fix(clipboard): normalize glyph advance by fontSize Figma expects derivedTextData glyph advance values normalized to font-size units (advance / fontSize), not absolute pixel values. This caused pasted text to appear horizontally mirrored because Figma multiplied the already-absolute advances by fontSize again. --- packages/core/src/text/derived-text/clipboard.ts | 2 +- tests/e2e/panels/basic.spec.ts | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/packages/core/src/text/derived-text/clipboard.ts b/packages/core/src/text/derived-text/clipboard.ts index 04f95e852..8a7a83887 100644 --- a/packages/core/src/text/derived-text/clipboard.ts +++ b/packages/core/src/text/derived-text/clipboard.ts @@ -72,7 +72,7 @@ export async function buildDerivedTextDataV4( }, fontSize: node.fontSize, firstCharacter: shapedGlyph?.firstCharacter ?? index, - advance: shapedGlyph?.advance ?? fallbackGlyphAdvance, + advance: (shapedGlyph?.advance ?? fallbackGlyphAdvance) / node.fontSize, rotation: 0 } }) diff --git a/tests/e2e/panels/basic.spec.ts b/tests/e2e/panels/basic.spec.ts index 07267e6f5..b715bf715 100644 --- a/tests/e2e/panels/basic.spec.ts +++ b/tests/e2e/panels/basic.spec.ts @@ -1,6 +1,5 @@ import { expect, test, useEditorSetup } from '#tests/e2e/fixtures' import { expectDefined } from '#tests/helpers/assert' -import { CanvasHelper } from '#tests/helpers/canvas' const editor = useEditorSetup()