ugcinc-render 1.3.9 → 1.3.11
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 +10 -3
- package/dist/index.mjs +10 -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,12 @@ 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",
|
|
361
|
+
// Enable OpenType font features for kerning
|
|
362
|
+
fontFeatureSettings: kerning ? '"kern" 1' : '"kern" 0',
|
|
363
|
+
// Text rendering optimization for better kerning
|
|
364
|
+
textRendering: kerning ? "optimizeLegibility" : "auto",
|
|
359
365
|
// textAlign works for multi-line text within the (possibly auto-width) box
|
|
360
366
|
textAlign: alignment === "justify" ? "justify" : alignment,
|
|
361
367
|
padding: `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`,
|
|
@@ -392,6 +398,7 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
392
398
|
color,
|
|
393
399
|
lineHeight,
|
|
394
400
|
letterSpacing,
|
|
401
|
+
kerning,
|
|
395
402
|
alignment,
|
|
396
403
|
paddingTop,
|
|
397
404
|
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,12 @@ 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",
|
|
300
|
+
// Enable OpenType font features for kerning
|
|
301
|
+
fontFeatureSettings: kerning ? '"kern" 1' : '"kern" 0',
|
|
302
|
+
// Text rendering optimization for better kerning
|
|
303
|
+
textRendering: kerning ? "optimizeLegibility" : "auto",
|
|
298
304
|
// textAlign works for multi-line text within the (possibly auto-width) box
|
|
299
305
|
textAlign: alignment === "justify" ? "justify" : alignment,
|
|
300
306
|
padding: `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px`,
|
|
@@ -331,6 +337,7 @@ function TextElement({ segment, scale = 1 }) {
|
|
|
331
337
|
color,
|
|
332
338
|
lineHeight,
|
|
333
339
|
letterSpacing,
|
|
340
|
+
kerning,
|
|
334
341
|
alignment,
|
|
335
342
|
paddingTop,
|
|
336
343
|
paddingRight,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "ugcinc-render",
|
|
3
|
-
"version": "1.3.
|
|
3
|
+
"version": "1.3.11",
|
|
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",
|