diff options
| author | Maze Winther <mazewinther@gmail.com> | 2026-03-25 16:47:22 +0100 |
|---|---|---|
| committer | Maze Winther <mazewinther@gmail.com> | 2026-03-29 15:48:22 +0200 |
| commit | 8db3bead13441a5882d8689dfc6a9f09c82375d9 (patch) | |
| tree | e9d0cafa93904ffcbec3188c37961bcc16c6422d /apps/web/src/lib/text/layout.ts | |
| parent | 39ea298a9ccba3104c549c0ca079c231981811f5 (diff) | |
| download | opencut-8db3bead13441a5882d8689dfc6a9f09c82375d9.tar.gz | |
feat: masks, properties refactor, shaders, storage migrations, and more
Diffstat (limited to 'apps/web/src/lib/text/layout.ts')
| -rw-r--r-- | apps/web/src/lib/text/layout.ts | 29 |
1 files changed, 23 insertions, 6 deletions
diff --git a/apps/web/src/lib/text/layout.ts b/apps/web/src/lib/text/layout.ts index 3eadcec2..32d0d80e 100644 --- a/apps/web/src/lib/text/layout.ts +++ b/apps/web/src/lib/text/layout.ts @@ -1,5 +1,5 @@ -import { DEFAULT_TEXT_BACKGROUND } from "@/constants/text-constants"; -import type { TextBackground, TextElement } from "@/types/timeline"; +import type { TextBackground, TextElement } from "@/lib/timeline"; +import { DEFAULTS } from "@/lib/timeline/defaults"; type TextRect = { left: number; @@ -14,6 +14,23 @@ export interface TextBlockMeasurement { maxWidth: number; } +type CanvasContext = + | CanvasRenderingContext2D + | OffscreenCanvasRenderingContext2D; + +export function setCanvasLetterSpacing({ + ctx, + letterSpacingPx, +}: { + ctx: CanvasContext; + letterSpacingPx: number; +}): void { + if ("letterSpacing" in ctx) { + (ctx as CanvasRenderingContext2D & { letterSpacing: string }).letterSpacing = + `${letterSpacingPx}px`; + } +} + export function getMetricAscent({ metrics, fallbackFontSize, @@ -118,11 +135,11 @@ export function getTextBackgroundRect({ const textRect = getTextRect({ textAlign, block }); const paddingX = - (background.paddingX ?? DEFAULT_TEXT_BACKGROUND.paddingX) * fontSizeRatio; + (background.paddingX ?? DEFAULTS.text.background.paddingX) * fontSizeRatio; const paddingY = - (background.paddingY ?? DEFAULT_TEXT_BACKGROUND.paddingY) * fontSizeRatio; - const offsetX = background.offsetX ?? DEFAULT_TEXT_BACKGROUND.offsetX; - const offsetY = background.offsetY ?? DEFAULT_TEXT_BACKGROUND.offsetY; + (background.paddingY ?? DEFAULTS.text.background.paddingY) * fontSizeRatio; + const offsetX = background.offsetX ?? DEFAULTS.text.background.offsetX; + const offsetY = background.offsetY ?? DEFAULTS.text.background.offsetY; return { left: textRect.left - paddingX + offsetX, |
