pretext-pdf 0.4.5 → 0.5.1
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/CHANGELOG.md +333 -333
- package/README.md +76 -7
- package/dist/assets.d.ts +3 -0
- package/dist/assets.d.ts.map +1 -1
- package/dist/assets.js +111 -21
- package/dist/assets.js.map +1 -1
- package/dist/builder.d.ts +22 -1
- package/dist/builder.d.ts.map +1 -1
- package/dist/builder.js +38 -1
- package/dist/builder.js.map +1 -1
- package/dist/errors.d.ts +1 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js.map +1 -1
- package/dist/fonts.d.ts.map +1 -1
- package/dist/fonts.js +36 -1
- package/dist/fonts.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +76 -34
- package/dist/index.js.map +1 -1
- package/dist/measure-blocks.d.ts +25 -0
- package/dist/measure-blocks.d.ts.map +1 -0
- package/dist/measure-blocks.js +1019 -0
- package/dist/measure-blocks.js.map +1 -0
- package/dist/measure-text.d.ts +53 -0
- package/dist/measure-text.d.ts.map +1 -0
- package/dist/measure-text.js +435 -0
- package/dist/measure-text.js.map +1 -0
- package/dist/measure.d.ts +15 -35
- package/dist/measure.d.ts.map +1 -1
- package/dist/measure.js +42 -1066
- package/dist/measure.js.map +1 -1
- package/dist/paginate.d.ts.map +1 -1
- package/dist/paginate.js +14 -12
- package/dist/paginate.js.map +1 -1
- package/dist/render-blocks.d.ts +24 -0
- package/dist/render-blocks.d.ts.map +1 -0
- package/dist/render-blocks.js +937 -0
- package/dist/render-blocks.js.map +1 -0
- package/dist/render-extras.d.ts +18 -0
- package/dist/render-extras.d.ts.map +1 -0
- package/dist/render-extras.js +325 -0
- package/dist/render-extras.js.map +1 -0
- package/dist/render-utils.d.ts +59 -0
- package/dist/render-utils.d.ts.map +1 -0
- package/dist/render-utils.js +219 -0
- package/dist/render-utils.js.map +1 -0
- package/dist/render.d.ts.map +1 -1
- package/dist/render.js +19 -1375
- package/dist/render.js.map +1 -1
- package/dist/rich-text.d.ts +4 -0
- package/dist/rich-text.d.ts.map +1 -1
- package/dist/rich-text.js +4 -0
- package/dist/rich-text.js.map +1 -1
- package/dist/types.d.ts +108 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/validate.d.ts.map +1 -1
- package/dist/validate.js +195 -15
- package/dist/validate.js.map +1 -1
- package/docs/screenshots/showcase-invoice.png +0 -0
- package/docs/screenshots/showcase-report.png +0 -0
- package/docs/screenshots/showcase-resume.png +0 -0
- package/package.json +130 -128
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure-blocks.js","sourceRoot":"","sources":["../src/measure-blocks.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* measure-text.ts — Low-level text and font measurement primitives
|
|
3
|
+
* No document-element knowledge. Used by all measurement modules.
|
|
4
|
+
*/
|
|
5
|
+
export type HyphenatorOpts = {
|
|
6
|
+
instance: HypherInstance;
|
|
7
|
+
minWordLength: number;
|
|
8
|
+
leftMin: number;
|
|
9
|
+
rightMin: number;
|
|
10
|
+
};
|
|
11
|
+
type HypherInstance = {
|
|
12
|
+
hyphenate(word: string): string[];
|
|
13
|
+
};
|
|
14
|
+
export declare function getPretext(): Promise<typeof import("@chenglou/pretext")>;
|
|
15
|
+
export declare function getHyphenator(language: string): Promise<HypherInstance>;
|
|
16
|
+
/**
|
|
17
|
+
* Detect text direction and apply Unicode Bidi Algorithm (TR9) for visual reordering.
|
|
18
|
+
* Returns the visual-order text ready for measurement and rendering.
|
|
19
|
+
*/
|
|
20
|
+
export declare function detectAndReorderRTL(text: string, dirOverride?: 'ltr' | 'rtl' | 'auto'): Promise<{
|
|
21
|
+
visual: string;
|
|
22
|
+
isRTL: boolean;
|
|
23
|
+
logical: string;
|
|
24
|
+
}>;
|
|
25
|
+
/**
|
|
26
|
+
* Measure a single word's rendered width using pretext at maxWidth=99999.
|
|
27
|
+
*/
|
|
28
|
+
export declare function measureWord(word: string, fontString: string): Promise<number>;
|
|
29
|
+
/**
|
|
30
|
+
* Measure unwrapped (single-line) text width using pretext at large maxWidth.
|
|
31
|
+
* Handles multi-line text by returning the max width across all lines.
|
|
32
|
+
*/
|
|
33
|
+
export declare function measureNaturalTextWidth(text: string, fontSize: number, fontFamily: string, fontWeight: 400 | 700): Promise<number>;
|
|
34
|
+
export declare function getThaiSegmenter(): Intl.Segmenter | null;
|
|
35
|
+
/**
|
|
36
|
+
* Full hyphenation path: intelligently splits text into lines with Liang's algorithm.
|
|
37
|
+
* Handles CJK (character-level breaks), Thai/Lao (Intl.Segmenter), and Latin (space + hyphens).
|
|
38
|
+
* Returns lines with actual hyphens added to hyphenated words.
|
|
39
|
+
*/
|
|
40
|
+
export declare function measureTextWithHyphenation(text: string, fontString: string, maxWidth: number, opts: HyphenatorOpts): Promise<Array<{
|
|
41
|
+
text: string;
|
|
42
|
+
width: number;
|
|
43
|
+
}>>;
|
|
44
|
+
/**
|
|
45
|
+
* Core text measurement: delegates to hyphenation path or direct Pretext layout.
|
|
46
|
+
* If no hyphenator is available, falls back to direct layout (text wraps without hyphens).
|
|
47
|
+
*/
|
|
48
|
+
export declare function measureText(text: string, fontSize: number, fontFamily: string, fontWeight: 400 | 700, maxWidth: number, lineHeight: number, hyphenatorOpts?: HyphenatorOpts): Promise<Array<{
|
|
49
|
+
text: string;
|
|
50
|
+
width: number;
|
|
51
|
+
}>>;
|
|
52
|
+
export {};
|
|
53
|
+
//# sourceMappingURL=measure-text.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure-text.d.ts","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAYH,MAAM,MAAM,cAAc,GAAG;IAAE,QAAQ,EAAE,cAAc,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAA;AAEnH,KAAK,cAAc,GAAG;IAAE,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAAA;CAAE,CAAA;AAK3D,wBAAsB,UAAU,gDAK/B;AAID,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,CAc7E;AAID;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,MAAM,GACnC,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC,CA6C9D;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAOnF;AAID;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,GAAG,GAAG,GACpB,OAAO,CAAC,MAAM,CAAC,CAajB;AAmDD,wBAAgB,gBAAgB,IAAI,IAAI,CAAC,SAAS,GAAG,IAAI,CAWxD;AAqHD;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAkIjD;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,GAAG,GAAG,GAAG,EACrB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,cAAc,CAAC,EAAE,cAAc,GAC9B,OAAO,CAAC,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CA0BjD"}
|
|
@@ -0,0 +1,435 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* measure-text.ts — Low-level text and font measurement primitives
|
|
3
|
+
* No document-element knowledge. Used by all measurement modules.
|
|
4
|
+
*/
|
|
5
|
+
import { PretextPdfError } from './errors.js';
|
|
6
|
+
/** Heading level size multipliers and defaults */
|
|
7
|
+
const HEADING_DEFAULTS = {
|
|
8
|
+
1: { sizeMultiplier: 2.0, fontWeight: 700, spaceAfter: 16, spaceBefore: 28 },
|
|
9
|
+
2: { sizeMultiplier: 1.5, fontWeight: 700, spaceAfter: 12, spaceBefore: 24 },
|
|
10
|
+
3: { sizeMultiplier: 1.25, fontWeight: 700, spaceAfter: 8, spaceBefore: 20 },
|
|
11
|
+
4: { sizeMultiplier: 1.1, fontWeight: 700, spaceAfter: 6, spaceBefore: 16 },
|
|
12
|
+
};
|
|
13
|
+
/** Lazily-loaded Pretext module — must be imported AFTER polyfill is installed */
|
|
14
|
+
let _pretext = null;
|
|
15
|
+
export async function getPretext() {
|
|
16
|
+
if (!_pretext) {
|
|
17
|
+
_pretext = await import('@chenglou/pretext');
|
|
18
|
+
}
|
|
19
|
+
return _pretext;
|
|
20
|
+
}
|
|
21
|
+
// ─── Hyphenation (Liang's algorithm via hypher package) ──────────────────────
|
|
22
|
+
export async function getHyphenator(language) {
|
|
23
|
+
let dict;
|
|
24
|
+
try {
|
|
25
|
+
const mod = await import(`hyphenation.${language}`);
|
|
26
|
+
dict = mod.default ?? mod;
|
|
27
|
+
}
|
|
28
|
+
catch {
|
|
29
|
+
throw new PretextPdfError('UNSUPPORTED_LANGUAGE', `Hyphenation dictionary for "${language}" not found. Install it with: pnpm add hyphenation.${language}`);
|
|
30
|
+
}
|
|
31
|
+
// @ts-ignore hypher has no type definitions available
|
|
32
|
+
const { default: Hypher } = await import('hypher');
|
|
33
|
+
return new Hypher(dict);
|
|
34
|
+
}
|
|
35
|
+
// ─── RTL Text Support (Unicode Bidirectional Algorithm via bidi-js) ────────────
|
|
36
|
+
/**
|
|
37
|
+
* Detect text direction and apply Unicode Bidi Algorithm (TR9) for visual reordering.
|
|
38
|
+
* Returns the visual-order text ready for measurement and rendering.
|
|
39
|
+
*/
|
|
40
|
+
export async function detectAndReorderRTL(text, dirOverride) {
|
|
41
|
+
// Step 1: Explicit override takes priority
|
|
42
|
+
if (dirOverride === 'ltr') {
|
|
43
|
+
return { visual: text, isRTL: false, logical: text };
|
|
44
|
+
}
|
|
45
|
+
if (dirOverride === 'rtl') {
|
|
46
|
+
try {
|
|
47
|
+
// @ts-ignore bidi-js has no type definitions
|
|
48
|
+
const bidiFactory = (await import('bidi-js')).default;
|
|
49
|
+
const bidi = typeof bidiFactory === 'function' ? bidiFactory() : bidiFactory;
|
|
50
|
+
const { getEmbeddingLevels, getReorderedString } = bidi;
|
|
51
|
+
const embedLevelsResult = getEmbeddingLevels(text, 'rtl');
|
|
52
|
+
const visual = getReorderedString(text, embedLevelsResult);
|
|
53
|
+
return { visual, isRTL: true, logical: text };
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
console.error('[pretext-pdf] bidi-js RTL reordering failed — rendering logical order as fallback:', err);
|
|
57
|
+
return { visual: text, isRTL: false, logical: text };
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
// Step 2: Auto-detect dominant direction (full RTL block coverage, UAX #9)
|
|
61
|
+
const rtlRanges = /[\u0590-\u08FF\uFB1D-\uFB4F\uFB50-\uFDFF\uFE70-\uFEFF\u{10800}-\u{10CFF}\u{10D00}-\u{10D3F}\u{10E80}-\u{10EFF}\u{10F30}-\u{10FFF}\u{1E800}-\u{1E95F}\u{1EC70}-\u{1ECBF}\u{1EE00}-\u{1EEFF}]/gu;
|
|
62
|
+
const rtlCount = (text.match(rtlRanges) ?? []).length;
|
|
63
|
+
const ltrCount = (text.match(/[a-zA-Z0-9]/g) ?? []).length;
|
|
64
|
+
const isRTL = rtlCount > 0 && rtlCount >= ltrCount;
|
|
65
|
+
if (!isRTL) {
|
|
66
|
+
return { visual: text, isRTL: false, logical: text };
|
|
67
|
+
}
|
|
68
|
+
// Step 3: Apply bidi algorithm (TR9) to reorder visually
|
|
69
|
+
try {
|
|
70
|
+
// @ts-ignore bidi-js has no type definitions
|
|
71
|
+
const bidiFactory = (await import('bidi-js')).default;
|
|
72
|
+
const bidi = typeof bidiFactory === 'function' ? bidiFactory() : bidiFactory;
|
|
73
|
+
const { getEmbeddingLevels, getReorderedString } = bidi;
|
|
74
|
+
const embedLevelsResult = getEmbeddingLevels(text, 'rtl');
|
|
75
|
+
const visual = getReorderedString(text, embedLevelsResult);
|
|
76
|
+
return { visual, isRTL: true, logical: text };
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
console.warn('bidi-js error during RTL reordering:', err);
|
|
80
|
+
return { visual: text, isRTL: false, logical: text };
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Measure a single word's rendered width using pretext at maxWidth=99999.
|
|
85
|
+
*/
|
|
86
|
+
export async function measureWord(word, fontString) {
|
|
87
|
+
const { prepareWithSegments, layoutWithLines } = await getPretext();
|
|
88
|
+
if (!word)
|
|
89
|
+
return 0;
|
|
90
|
+
const prepared = prepareWithSegments(word, fontString, {});
|
|
91
|
+
const result = layoutWithLines(prepared, 99999, 99999);
|
|
92
|
+
const lines = result.lines ?? [];
|
|
93
|
+
return lines[0]?.width ?? 0;
|
|
94
|
+
}
|
|
95
|
+
// ─── Core Text Measurement ────────────────────────────────────────────────────
|
|
96
|
+
/**
|
|
97
|
+
* Measure unwrapped (single-line) text width using pretext at large maxWidth.
|
|
98
|
+
* Handles multi-line text by returning the max width across all lines.
|
|
99
|
+
*/
|
|
100
|
+
export async function measureNaturalTextWidth(text, fontSize, fontFamily, fontWeight) {
|
|
101
|
+
if (!text || text.trim() === '')
|
|
102
|
+
return 0;
|
|
103
|
+
const { prepareWithSegments, layoutWithLines } = await getPretext();
|
|
104
|
+
const weightPrefix = fontWeight === 700 ? 'bold ' : '';
|
|
105
|
+
const fontString = `${weightPrefix}${fontSize}px ${fontFamily}`;
|
|
106
|
+
const prepared = prepareWithSegments(text, fontString, {});
|
|
107
|
+
const result = layoutWithLines(prepared, 99999, 99999);
|
|
108
|
+
const lines = result.lines ?? [];
|
|
109
|
+
return Math.max(0, ...lines.map(l => l.width));
|
|
110
|
+
}
|
|
111
|
+
// ─── Script-Aware Tokenization ────────────────────────────────────────────────
|
|
112
|
+
/**
|
|
113
|
+
* CJK Unified Ideographs and adjacent blocks that require character-level line breaking.
|
|
114
|
+
* Each CJK character is its own break point — no spaces between them.
|
|
115
|
+
* Covers: CJK Radicals, CJK Symbols, Hiragana, Katakana, Bopomofo, Hangul,
|
|
116
|
+
* CJK Unified Ideographs (4E00–9FFF), Extensions A–G, Compat Ideographs.
|
|
117
|
+
* Unicode source: https://www.unicode.org/faq/han_unification.html
|
|
118
|
+
*/
|
|
119
|
+
const CJK_CHAR_RE = /[\u2E80-\u2FFF\u3000-\u9FFF\uA960-\uA97F\uAC00-\uD7FF\uF900-\uFAFF\uFE10-\uFE1F\uFE30-\uFE4F\uFF01-\uFF60\u{20000}-\u{3FFFD}]/u;
|
|
120
|
+
/** Thai (0E00–0E7F) and Lao (0E80–0EFF) — no spaces between words */
|
|
121
|
+
const THAI_LAO_RE = /[\u0E00-\u0EFF]/;
|
|
122
|
+
/**
|
|
123
|
+
* Kinsoku line-start forbidden characters (JIS X 4051 subset).
|
|
124
|
+
* These must never appear at the start of a line — they are pulled
|
|
125
|
+
* back onto the previous line even if it causes a slight overflow.
|
|
126
|
+
*/
|
|
127
|
+
const KINSOKU_START_FORBIDDEN = new Set([
|
|
128
|
+
'。', '.', '、', ',', '!', '?', // sentence/clause endings
|
|
129
|
+
')', '』', '」', '】', '〕', '〉', '》', // closing brackets
|
|
130
|
+
'・', ':', ';', '…', '‥', // misc
|
|
131
|
+
')', ']', '}', // ASCII closers in CJK context
|
|
132
|
+
'\uFF01', '\uFF09', '\uFF0C', '\uFF0E', // fullwidth ! ) , .
|
|
133
|
+
'\uFF1A', '\uFF1B', '\uFF1F', // fullwidth : ; ?
|
|
134
|
+
'\u30FB', // katakana middle dot
|
|
135
|
+
]);
|
|
136
|
+
/**
|
|
137
|
+
* Lazily-created segmenter for Thai/Lao. Intl.Segmenter is built into Node.js 16+.
|
|
138
|
+
*
|
|
139
|
+
* ICU data availability: Node.js ships with either "full-icu" or "small-icu" data.
|
|
140
|
+
* Small-icu builds (common in CI/Docker) often lack Thai word-boundary data, causing
|
|
141
|
+
* Intl.Segmenter('th') to either throw or produce single-segment output (no breaks).
|
|
142
|
+
*
|
|
143
|
+
* The smoke-test (segment 'สวัสดี' and check length > 1) detects the broken case:
|
|
144
|
+
* - If ICU data is present: the segmenter returns multiple word segments → cached and used.
|
|
145
|
+
* - If ICU data is absent: the segmenter returns one segment (the whole string) → falls back.
|
|
146
|
+
*
|
|
147
|
+
* Fallback behavior: character-level tokenization (one token per Thai codepoint).
|
|
148
|
+
* This is acceptable because Thai has no spaces between words — character-level breaking
|
|
149
|
+
* produces readable text that wraps at each character boundary. It's not linguistically
|
|
150
|
+
* correct but is far better than a single overflowing line.
|
|
151
|
+
*
|
|
152
|
+
* To enable proper Thai segmentation in Node.js, use: node --icu-data-dir=<full-icu-path>
|
|
153
|
+
* or install the `full-icu` npm package and set NODE_ICU_DATA.
|
|
154
|
+
*/
|
|
155
|
+
let _thaiSegmenter = null;
|
|
156
|
+
export function getThaiSegmenter() {
|
|
157
|
+
if (_thaiSegmenter !== null)
|
|
158
|
+
return _thaiSegmenter;
|
|
159
|
+
try {
|
|
160
|
+
// Check ICU data availability before caching
|
|
161
|
+
const seg = new Intl.Segmenter('th', { granularity: 'word' });
|
|
162
|
+
// Quick smoke-test — some Node builds lack Thai ICU data
|
|
163
|
+
const test = [...seg.segment('สวัสดี')];
|
|
164
|
+
if (test.length > 1) {
|
|
165
|
+
_thaiSegmenter = seg;
|
|
166
|
+
return seg;
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
catch { /* fall through */ }
|
|
170
|
+
_thaiSegmenter = null; // mark permanently unavailable so we don't retry
|
|
171
|
+
return null;
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Insert zero-width spaces (U+200B) at Thai/Lao word boundaries so that
|
|
175
|
+
* canvas/Skia can break lines at those points. Used by the non-hyphenation path.
|
|
176
|
+
*/
|
|
177
|
+
function insertThaiBreaks(text) {
|
|
178
|
+
const seg = getThaiSegmenter();
|
|
179
|
+
if (!seg)
|
|
180
|
+
return text; // no ICU data — return unchanged; lines may overflow
|
|
181
|
+
const result = [];
|
|
182
|
+
let inThaiRun = false;
|
|
183
|
+
// Process character by character, only segmenting Thai/Lao runs
|
|
184
|
+
const parts = text.split(/([\u0E00-\u0EFF]+)/);
|
|
185
|
+
for (const part of parts) {
|
|
186
|
+
if (THAI_LAO_RE.test(part)) {
|
|
187
|
+
const words = [];
|
|
188
|
+
for (const { segment, isWordLike } of seg.segment(part)) {
|
|
189
|
+
if (isWordLike !== false && segment.trim())
|
|
190
|
+
words.push(segment);
|
|
191
|
+
else
|
|
192
|
+
words.push(segment);
|
|
193
|
+
}
|
|
194
|
+
result.push(words.join('\u200B'));
|
|
195
|
+
}
|
|
196
|
+
else {
|
|
197
|
+
result.push(part);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
return result.join('');
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Tokenize a paragraph into wrapping units:
|
|
204
|
+
* - CJK ideographs: one character per token, no space before consecutive CJK
|
|
205
|
+
* - Thai/Lao: split by Intl.Segmenter word boundaries (falls back to char-level)
|
|
206
|
+
* - Latin / other scripts: split on whitespace (standard behaviour)
|
|
207
|
+
*
|
|
208
|
+
* Preserves the original space intent: a token with spaceBefore=true contributes
|
|
209
|
+
* one spaceWidth to the line width and one ' ' to the line text.
|
|
210
|
+
*/
|
|
211
|
+
function tokenizeParagraph(para) {
|
|
212
|
+
const tokens = [];
|
|
213
|
+
// Use spread to get proper Unicode scalar values (handles surrogate pairs)
|
|
214
|
+
const chars = [...para];
|
|
215
|
+
let i = 0;
|
|
216
|
+
let pendingSpace = false; // whether the next non-space token has a space before it
|
|
217
|
+
let lastWasCJK = false;
|
|
218
|
+
while (i < chars.length) {
|
|
219
|
+
const ch = chars[i];
|
|
220
|
+
if (ch === ' ' || ch === '\t') {
|
|
221
|
+
pendingSpace = true;
|
|
222
|
+
lastWasCJK = false;
|
|
223
|
+
i++;
|
|
224
|
+
continue;
|
|
225
|
+
}
|
|
226
|
+
if (CJK_CHAR_RE.test(ch)) {
|
|
227
|
+
// Between consecutive CJK chars there is no space — only honour a real
|
|
228
|
+
// whitespace character that appeared between them in the source text.
|
|
229
|
+
tokens.push({ text: ch, spaceBefore: pendingSpace && !lastWasCJK ? true : (pendingSpace && tokens.length > 0) });
|
|
230
|
+
pendingSpace = false;
|
|
231
|
+
lastWasCJK = true;
|
|
232
|
+
i++;
|
|
233
|
+
continue;
|
|
234
|
+
}
|
|
235
|
+
if (THAI_LAO_RE.test(ch)) {
|
|
236
|
+
// Collect the contiguous Thai/Lao run, then segment it into words
|
|
237
|
+
let run = '';
|
|
238
|
+
while (i < chars.length && THAI_LAO_RE.test(chars[i])) {
|
|
239
|
+
run += chars[i];
|
|
240
|
+
i++;
|
|
241
|
+
}
|
|
242
|
+
const seg = getThaiSegmenter();
|
|
243
|
+
let first = true;
|
|
244
|
+
if (seg) {
|
|
245
|
+
for (const { segment, isWordLike } of seg.segment(run)) {
|
|
246
|
+
if (segment.trim() === '')
|
|
247
|
+
continue;
|
|
248
|
+
if (isWordLike === false)
|
|
249
|
+
continue; // skip punctuation segments
|
|
250
|
+
tokens.push({ text: segment, spaceBefore: first ? pendingSpace : false });
|
|
251
|
+
first = false;
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
else {
|
|
255
|
+
// ICU not available: fall back to character-level (safe but not ideal)
|
|
256
|
+
for (const c of [...run]) {
|
|
257
|
+
tokens.push({ text: c, spaceBefore: first ? pendingSpace : false });
|
|
258
|
+
first = false;
|
|
259
|
+
}
|
|
260
|
+
}
|
|
261
|
+
pendingSpace = false;
|
|
262
|
+
lastWasCJK = false;
|
|
263
|
+
continue;
|
|
264
|
+
}
|
|
265
|
+
// Latin / other: collect until whitespace, CJK, or Thai/Lao
|
|
266
|
+
let word = '';
|
|
267
|
+
while (i < chars.length &&
|
|
268
|
+
chars[i] !== ' ' && chars[i] !== '\t' &&
|
|
269
|
+
!CJK_CHAR_RE.test(chars[i]) &&
|
|
270
|
+
!THAI_LAO_RE.test(chars[i])) {
|
|
271
|
+
word += chars[i];
|
|
272
|
+
i++;
|
|
273
|
+
}
|
|
274
|
+
if (word) {
|
|
275
|
+
tokens.push({ text: word, spaceBefore: pendingSpace && tokens.length > 0 });
|
|
276
|
+
pendingSpace = false;
|
|
277
|
+
lastWasCJK = false;
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
return tokens;
|
|
281
|
+
}
|
|
282
|
+
// ─── Hyphenation + Script-Aware Line-Breaking ─────────────────────────────────
|
|
283
|
+
/**
|
|
284
|
+
* Full hyphenation path: intelligently splits text into lines with Liang's algorithm.
|
|
285
|
+
* Handles CJK (character-level breaks), Thai/Lao (Intl.Segmenter), and Latin (space + hyphens).
|
|
286
|
+
* Returns lines with actual hyphens added to hyphenated words.
|
|
287
|
+
*/
|
|
288
|
+
export async function measureTextWithHyphenation(text, fontString, maxWidth, opts) {
|
|
289
|
+
const { instance: hypher, minWordLength, leftMin, rightMin } = opts;
|
|
290
|
+
const widthCache = new Map();
|
|
291
|
+
const measure = async (w) => {
|
|
292
|
+
if (widthCache.has(w))
|
|
293
|
+
return widthCache.get(w);
|
|
294
|
+
const width = await measureWord(w, fontString);
|
|
295
|
+
widthCache.set(w, width);
|
|
296
|
+
return width;
|
|
297
|
+
};
|
|
298
|
+
let spaceWidth = await measure(' ');
|
|
299
|
+
if (spaceWidth === 0) {
|
|
300
|
+
const aWidth = await measure('a');
|
|
301
|
+
const aaWidth = await measure('a a');
|
|
302
|
+
spaceWidth = aaWidth - 2 * aWidth;
|
|
303
|
+
if (spaceWidth <= 0)
|
|
304
|
+
spaceWidth = Math.max(1, aWidth * 0.3);
|
|
305
|
+
}
|
|
306
|
+
const allLines = [];
|
|
307
|
+
for (const para of text.split('\n')) {
|
|
308
|
+
if (!para.trim()) {
|
|
309
|
+
allLines.push({ text: '', width: 0 });
|
|
310
|
+
continue;
|
|
311
|
+
}
|
|
312
|
+
const tokens = tokenizeParagraph(para);
|
|
313
|
+
// Pre-measure all unique token texts in parallel
|
|
314
|
+
const unique = [...new Set(tokens.map(t => t.text))];
|
|
315
|
+
await Promise.all(unique.map(w => measure(w)));
|
|
316
|
+
const lines = [];
|
|
317
|
+
let currentTokens = [];
|
|
318
|
+
let currentWidth = 0;
|
|
319
|
+
const flush = () => {
|
|
320
|
+
if (currentTokens.length === 0)
|
|
321
|
+
return;
|
|
322
|
+
let lineText = '';
|
|
323
|
+
for (const { text, spaceBefore } of currentTokens) {
|
|
324
|
+
if (lineText.length > 0 && spaceBefore)
|
|
325
|
+
lineText += ' ';
|
|
326
|
+
lineText += text;
|
|
327
|
+
}
|
|
328
|
+
const allCJK = currentTokens.every(t => CJK_CHAR_RE.test(t.text[0] ?? ''));
|
|
329
|
+
const lineObj = { text: lineText, width: currentWidth };
|
|
330
|
+
if (allCJK) {
|
|
331
|
+
// @ts-ignore hint for renderer: CJK-only lines should not be stretched for justification
|
|
332
|
+
lineObj.hasCJK = true;
|
|
333
|
+
}
|
|
334
|
+
lines.push(lineObj);
|
|
335
|
+
currentTokens = [];
|
|
336
|
+
currentWidth = 0;
|
|
337
|
+
};
|
|
338
|
+
for (const token of tokens) {
|
|
339
|
+
const ww = widthCache.get(token.text);
|
|
340
|
+
const gap = (token.spaceBefore && currentTokens.length > 0) ? spaceWidth : 0;
|
|
341
|
+
const addW = gap + ww;
|
|
342
|
+
if (currentWidth + addW <= maxWidth || currentTokens.length === 0) {
|
|
343
|
+
currentTokens.push(token);
|
|
344
|
+
currentWidth += addW;
|
|
345
|
+
continue;
|
|
346
|
+
}
|
|
347
|
+
// CJK/Thai tokens never hyphenate — just break immediately
|
|
348
|
+
const isCJKLike = CJK_CHAR_RE.test(token.text[0] ?? '') || THAI_LAO_RE.test(token.text[0] ?? '');
|
|
349
|
+
if (isCJKLike || token.text.length < minWordLength) {
|
|
350
|
+
// Kinsoku: if this token is start-forbidden, pull it onto the current line
|
|
351
|
+
// (accept slight overflow) rather than letting it begin the next line.
|
|
352
|
+
if (KINSOKU_START_FORBIDDEN.has(token.text)) {
|
|
353
|
+
currentTokens.push({ text: token.text, spaceBefore: false });
|
|
354
|
+
currentWidth += ww;
|
|
355
|
+
flush();
|
|
356
|
+
}
|
|
357
|
+
else {
|
|
358
|
+
flush();
|
|
359
|
+
currentTokens.push({ text: token.text, spaceBefore: false });
|
|
360
|
+
currentWidth = ww;
|
|
361
|
+
}
|
|
362
|
+
continue;
|
|
363
|
+
}
|
|
364
|
+
// Latin word — try hyphenation
|
|
365
|
+
let hyphenated = false;
|
|
366
|
+
const sylls = hypher.hyphenate(token.text);
|
|
367
|
+
for (let split = sylls.length - 1; split >= 1; split--) {
|
|
368
|
+
const prefix = sylls.slice(0, split).join('');
|
|
369
|
+
const suffix = sylls.slice(split).join('');
|
|
370
|
+
if (prefix.length < leftMin || suffix.length < rightMin)
|
|
371
|
+
continue;
|
|
372
|
+
const hyphenPart = prefix + '-';
|
|
373
|
+
const hw = await measure(hyphenPart);
|
|
374
|
+
const addHW = (token.spaceBefore && currentTokens.length > 0 ? spaceWidth : 0) + hw;
|
|
375
|
+
if (currentWidth + addHW <= maxWidth) {
|
|
376
|
+
currentTokens.push({ text: hyphenPart, spaceBefore: token.spaceBefore });
|
|
377
|
+
currentWidth += addHW;
|
|
378
|
+
flush();
|
|
379
|
+
await measure(suffix);
|
|
380
|
+
currentTokens = [{ text: suffix, spaceBefore: false }];
|
|
381
|
+
currentWidth = widthCache.get(suffix);
|
|
382
|
+
hyphenated = true;
|
|
383
|
+
break;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
if (!hyphenated) {
|
|
387
|
+
// Kinsoku: if this token is start-forbidden, pull it onto the current line
|
|
388
|
+
// (accept slight overflow) rather than letting it begin the next line.
|
|
389
|
+
if (KINSOKU_START_FORBIDDEN.has(token.text)) {
|
|
390
|
+
currentTokens.push({ text: token.text, spaceBefore: false });
|
|
391
|
+
currentWidth += ww;
|
|
392
|
+
flush();
|
|
393
|
+
currentTokens = [];
|
|
394
|
+
currentWidth = 0;
|
|
395
|
+
}
|
|
396
|
+
else {
|
|
397
|
+
flush();
|
|
398
|
+
currentTokens = [{ text: token.text, spaceBefore: false }];
|
|
399
|
+
currentWidth = ww;
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
}
|
|
403
|
+
flush();
|
|
404
|
+
allLines.push(...lines);
|
|
405
|
+
}
|
|
406
|
+
return allLines;
|
|
407
|
+
}
|
|
408
|
+
/**
|
|
409
|
+
* Core text measurement: delegates to hyphenation path or direct Pretext layout.
|
|
410
|
+
* If no hyphenator is available, falls back to direct layout (text wraps without hyphens).
|
|
411
|
+
*/
|
|
412
|
+
export async function measureText(text, fontSize, fontFamily, fontWeight, maxWidth, lineHeight, hyphenatorOpts) {
|
|
413
|
+
if (!text || text.trim() === '')
|
|
414
|
+
return [];
|
|
415
|
+
const { prepareWithSegments, layoutWithLines } = await getPretext();
|
|
416
|
+
const weightPrefix = fontWeight === 700 ? 'bold ' : '';
|
|
417
|
+
const fontString = `${weightPrefix}${fontSize}px ${fontFamily}`;
|
|
418
|
+
// If hyphenator is available and text is long, use hyphenation
|
|
419
|
+
if (hyphenatorOpts && text.length > hyphenatorOpts.minWordLength) {
|
|
420
|
+
return await measureTextWithHyphenation(text, fontString, maxWidth, hyphenatorOpts);
|
|
421
|
+
}
|
|
422
|
+
// Thai/Lao: Skia/canvas doesn't segment Thai — insert zero-width spaces at word
|
|
423
|
+
// boundaries so pretext's line-breaker can split correctly.
|
|
424
|
+
const needsThaiSeg = THAI_LAO_RE.test(text);
|
|
425
|
+
const layoutText = needsThaiSeg ? insertThaiBreaks(text) : text;
|
|
426
|
+
// No hyphenation: use direct pretext layout (handles CJK character-level breaks natively)
|
|
427
|
+
const prepared = prepareWithSegments(layoutText, fontString, {});
|
|
428
|
+
const result = layoutWithLines(prepared, maxWidth, 99999);
|
|
429
|
+
// Strip zero-width spaces from output line texts (they're layout hints, not content)
|
|
430
|
+
return (result.lines ?? []).map((l) => ({
|
|
431
|
+
text: l.text.replace(/\u200B/g, ''),
|
|
432
|
+
width: l.width,
|
|
433
|
+
}));
|
|
434
|
+
}
|
|
435
|
+
//# sourceMappingURL=measure-text.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"measure-text.js","sourceRoot":"","sources":["../src/measure-text.ts"],"names":[],"mappings":"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"}
|