summaryrefslogtreecommitdiff
path: root/apps/web/src/lib/text/layout.ts
diff options
context:
space:
mode:
Diffstat (limited to 'apps/web/src/lib/text/layout.ts')
-rw-r--r--apps/web/src/lib/text/layout.ts29
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,