ugcinc-render 1.3.9 → 1.3.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +5 -0
- package/dist/index.d.ts +5 -0
- package/dist/index.js +6 -3
- package/dist/index.mjs +6 -3
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -276,6 +276,8 @@ interface ImageEditorElement {
|
|
|
276
276
|
lineHeight?: number;
|
|
277
277
|
/** Letter spacing in pixels */
|
|
278
278
|
letterSpacing?: number;
|
|
279
|
+
/** Enable font kerning for proper letter pair spacing (default: true) */
|
|
280
|
+
kerning?: boolean;
|
|
279
281
|
/** Horizontal text alignment */
|
|
280
282
|
textAlign?: TextAlignment;
|
|
281
283
|
/** Vertical text alignment within bounds */
|
|
@@ -578,6 +580,8 @@ interface TextSegment extends VisualSegment {
|
|
|
578
580
|
lineHeight?: number;
|
|
579
581
|
/** Letter spacing in pixels (default: 0) */
|
|
580
582
|
letterSpacing?: number;
|
|
583
|
+
/** Enable font kerning for proper letter pair spacing (default: true) */
|
|
584
|
+
kerning?: boolean;
|
|
581
585
|
/** How text wraps to new lines (default: 'word') */
|
|
582
586
|
textWrap?: TextWrap;
|
|
583
587
|
/** How words break across lines (default: 'normal') */
|
|
@@ -989,6 +993,7 @@ declare const TEXT_DEFAULTS: {
|
|
|
989
993
|
backgroundOpacity: number;
|
|
990
994
|
autoWidth: boolean;
|
|
991
995
|
boxAlign: "left";
|
|
996
|
+
kerning: boolean;
|
|
992
997
|
};
|
|
993
998
|
/**
|
|
994
999
|
* Default values for image segments
|
package/dist/index.d.ts
CHANGED
|
@@ -276,6 +276,8 @@ interface ImageEditorElement {
|
|
|
276
276
|
lineHeight?: number;
|
|
277
277
|
/** Letter spacing in pixels */
|
|
278
278
|
letterSpacing?: number;
|
|
279
|
+
/** Enable font kerning for proper letter pair spacing (default: true) */
|
|
280
|
+
kerning?: boolean;
|
|
279
281
|
/** Horizontal text alignment */
|
|
280
282
|
textAlign?: TextAlignment;
|
|
281
283
|
/** Vertical text alignment within bounds */
|
|
@@ -578,6 +580,8 @@ interface TextSegment extends VisualSegment {
|
|
|
578
580
|
lineHeight?: number;
|
|
579
581
|
/** Letter spacing in pixels (default: 0) */
|
|
580
582
|
letterSpacing?: number;
|
|
583
|
+
/** Enable font kerning for proper letter pair spacing (default: true) */
|
|
584
|
+
kerning?: boolean;
|
|
581
585
|
/** How text wraps to new lines (default: 'word') */
|
|
582
586
|
textWrap?: TextWrap;
|
|
583
587
|
/** How words break across lines (default: 'normal') */
|
|
@@ -989,6 +993,7 @@ declare const TEXT_DEFAULTS: {
|
|
|
989
993
|
backgroundOpacity: number;
|
|
990
994
|
autoWidth: boolean;
|
|
991
995
|
boxAlign: "left";
|
|
996
|
+
kerning: boolean;
|
|
992
997
|
};
|
|
993
998
|
/**
|
|
994
999
|
* Default values for image segments
|
package/dist/index.js
CHANGED
|
@@ -96,7 +96,8 @@ var TEXT_DEFAULTS = {
|
|
|
96
96
|
strokeWidth: 0,
|
|
97
97
|
backgroundOpacity: 100,
|
|
98
98
|
autoWidth: false,
|
|
99
|
-
boxAlign: "left"
|
|
99
|
+
boxAlign: "left",
|
|
100
|
+
kerning: true
|
|
100
101
|
};
|
|
101
102
|
var IMAGE_DEFAULTS = {
|
|
102
103
|
fit: "cover",
|
|
@@ -290,6 +291,7 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
290
291
|
const verticalAlign = segment.verticalAlign ?? TEXT_DEFAULTS.verticalAlign;
|
|
291
292
|
const lineHeight = segment.lineHeight ?? TEXT_DEFAULTS.lineHeight;
|
|
292
293
|
const letterSpacing = (segment.letterSpacing ?? TEXT_DEFAULTS.letterSpacing) * scale;
|
|
294
|
+
const kerning = segment.kerning ?? TEXT_DEFAULTS.kerning;
|
|
293
295
|
const strokeColor = segment.strokeColor;
|
|
294
296
|
const strokeWidth = (segment.strokeWidth ?? TEXT_DEFAULTS.strokeWidth) * scale;
|
|
295
297
|
const uniformPadding = (segment.padding ?? TEXT_DEFAULTS.padding) * scale;
|
|
@@ -354,8 +356,8 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
354
356
|
color,
|
|
355
357
|
lineHeight,
|
|
356
358
|
letterSpacing,
|
|
357
|
-
//
|
|
358
|
-
fontKerning: "normal",
|
|
359
|
+
// Font kerning for proper letter pair spacing (can be toggled)
|
|
360
|
+
fontKerning: kerning ? "normal" : "none",
|
|
359
361
|
// textAlign works for multi-line text within the (possibly auto-width) box
|
|
360
362
|
textAlign: alignment === "justify" ? "justify" : alignment,
|
|
361
363
|
padding: `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`,
|
|
@@ -392,6 +394,7 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
392
394
|
color,
|
|
393
395
|
lineHeight,
|
|
394
396
|
letterSpacing,
|
|
397
|
+
kerning,
|
|
395
398
|
alignment,
|
|
396
399
|
paddingTop,
|
|
397
400
|
paddingRight,
|
package/dist/index.mjs
CHANGED
|
@@ -35,7 +35,8 @@ var TEXT_DEFAULTS = {
|
|
|
35
35
|
strokeWidth: 0,
|
|
36
36
|
backgroundOpacity: 100,
|
|
37
37
|
autoWidth: false,
|
|
38
|
-
boxAlign: "left"
|
|
38
|
+
boxAlign: "left",
|
|
39
|
+
kerning: true
|
|
39
40
|
};
|
|
40
41
|
var IMAGE_DEFAULTS = {
|
|
41
42
|
fit: "cover",
|
|
@@ -229,6 +230,7 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
229
230
|
const verticalAlign = segment.verticalAlign ?? TEXT_DEFAULTS.verticalAlign;
|
|
230
231
|
const lineHeight = segment.lineHeight ?? TEXT_DEFAULTS.lineHeight;
|
|
231
232
|
const letterSpacing = (segment.letterSpacing ?? TEXT_DEFAULTS.letterSpacing) * scale;
|
|
233
|
+
const kerning = segment.kerning ?? TEXT_DEFAULTS.kerning;
|
|
232
234
|
const strokeColor = segment.strokeColor;
|
|
233
235
|
const strokeWidth = (segment.strokeWidth ?? TEXT_DEFAULTS.strokeWidth) * scale;
|
|
234
236
|
const uniformPadding = (segment.padding ?? TEXT_DEFAULTS.padding) * scale;
|
|
@@ -293,8 +295,8 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
293
295
|
color,
|
|
294
296
|
lineHeight,
|
|
295
297
|
letterSpacing,
|
|
296
|
-
//
|
|
297
|
-
fontKerning: "normal",
|
|
298
|
+
// Font kerning for proper letter pair spacing (can be toggled)
|
|
299
|
+
fontKerning: kerning ? "normal" : "none",
|
|
298
300
|
// textAlign works for multi-line text within the (possibly auto-width) box
|
|
299
301
|
textAlign: alignment === "justify" ? "justify" : alignment,
|
|
300
302
|
padding: `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`,
|
|
@@ -331,6 +333,7 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
331
333
|
color,
|
|
332
334
|
lineHeight,
|
|
333
335
|
letterSpacing,
|
|
336
|
+
kerning,
|
|
334
337
|
alignment,
|
|
335
338
|
paddingTop,
|
|
336
339
|
paddingRight,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugcinc-render",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.10",
|
|
4
4
|
"description": "Unified rendering package for UGC Inc - shared types, components, and compositions for pixel-perfect client/server rendering",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"module": "dist/index.mjs",
|