@mlightcad/cad-pdf-plugin 1.8.0-preview.3 → 1.8.0-preview.4

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.
Files changed (189) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +280 -186
  3. package/dist/cad-pdf-plugin-register.js +29 -11
  4. package/dist/cad-pdf-plugin-register.umd.cjs +1 -1
  5. package/dist/cad-pdf-plugin.js +17568 -8428
  6. package/dist/cad-pdf-plugin.umd.cjs +847 -13
  7. package/lib/AcApConvertToPdfCmd.d.ts.map +1 -1
  8. package/lib/AcApConvertToPdfCmd.js +14 -3
  9. package/lib/AcApConvertToPdfCmd.js.map +1 -1
  10. package/lib/AcApImportPdfCmd.d.ts +5 -3
  11. package/lib/AcApImportPdfCmd.d.ts.map +1 -1
  12. package/lib/AcApImportPdfCmd.js +5 -3
  13. package/lib/AcApImportPdfCmd.js.map +1 -1
  14. package/lib/AcApImportPdfPromptCmd.d.ts +16 -0
  15. package/lib/AcApImportPdfPromptCmd.d.ts.map +1 -0
  16. package/lib/AcApImportPdfPromptCmd.js +89 -0
  17. package/lib/AcApImportPdfPromptCmd.js.map +1 -0
  18. package/lib/AcApPdfBlockCmd.d.ts +15 -0
  19. package/lib/AcApPdfBlockCmd.d.ts.map +1 -0
  20. package/lib/AcApPdfBlockCmd.js +75 -0
  21. package/lib/AcApPdfBlockCmd.js.map +1 -0
  22. package/lib/AcApPdfDimCmd.d.ts +20 -0
  23. package/lib/AcApPdfDimCmd.d.ts.map +1 -0
  24. package/lib/AcApPdfDimCmd.js +413 -0
  25. package/lib/AcApPdfDimCmd.js.map +1 -0
  26. package/lib/AcApPdfDimSession.d.ts +82 -0
  27. package/lib/AcApPdfDimSession.d.ts.map +1 -0
  28. package/lib/AcApPdfDimSession.js +252 -0
  29. package/lib/AcApPdfDimSession.js.map +1 -0
  30. package/lib/AcApPdfFontResolver.d.ts.map +1 -1
  31. package/lib/AcApPdfFontResolver.js +2 -5
  32. package/lib/AcApPdfFontResolver.js.map +1 -1
  33. package/lib/AcApPdfHatchCmd.d.ts +33 -0
  34. package/lib/AcApPdfHatchCmd.d.ts.map +1 -0
  35. package/lib/AcApPdfHatchCmd.js +411 -0
  36. package/lib/AcApPdfHatchCmd.js.map +1 -0
  37. package/lib/AcApPdfHatchSession.d.ts +122 -0
  38. package/lib/AcApPdfHatchSession.d.ts.map +1 -0
  39. package/lib/AcApPdfHatchSession.js +357 -0
  40. package/lib/AcApPdfHatchSession.js.map +1 -0
  41. package/lib/AcApPdfImportConvertor.d.ts +47 -5
  42. package/lib/AcApPdfImportConvertor.d.ts.map +1 -1
  43. package/lib/AcApPdfImportConvertor.js +999 -108
  44. package/lib/AcApPdfImportConvertor.js.map +1 -1
  45. package/lib/AcApPdfImportOptions.d.ts +116 -0
  46. package/lib/AcApPdfImportOptions.d.ts.map +1 -0
  47. package/lib/AcApPdfImportOptions.js +31 -0
  48. package/lib/AcApPdfImportOptions.js.map +1 -0
  49. package/lib/AcApPdfImportResources.d.ts +41 -0
  50. package/lib/AcApPdfImportResources.d.ts.map +1 -0
  51. package/lib/AcApPdfImportResources.js +52 -0
  52. package/lib/AcApPdfImportResources.js.map +1 -0
  53. package/lib/AcApPdfPlugin.d.ts +3 -3
  54. package/lib/AcApPdfPlugin.d.ts.map +1 -1
  55. package/lib/AcApPdfPlugin.js +23 -5
  56. package/lib/AcApPdfPlugin.js.map +1 -1
  57. package/lib/AcApPdfScaleCmd.d.ts +22 -0
  58. package/lib/AcApPdfScaleCmd.d.ts.map +1 -0
  59. package/lib/AcApPdfScaleCmd.js +185 -0
  60. package/lib/AcApPdfScaleCmd.js.map +1 -0
  61. package/lib/AcApPdfTextCmd.d.ts +73 -0
  62. package/lib/AcApPdfTextCmd.d.ts.map +1 -0
  63. package/lib/AcApPdfTextCmd.js +777 -0
  64. package/lib/AcApPdfTextCmd.js.map +1 -0
  65. package/lib/AcApPdfTextSession.d.ts +232 -0
  66. package/lib/AcApPdfTextSession.d.ts.map +1 -0
  67. package/lib/AcApPdfTextSession.js +826 -0
  68. package/lib/AcApPdfTextSession.js.map +1 -0
  69. package/lib/acapPdfI18n.d.ts +11 -0
  70. package/lib/acapPdfI18n.d.ts.map +1 -0
  71. package/lib/acapPdfI18n.js +57 -0
  72. package/lib/acapPdfI18n.js.map +1 -0
  73. package/lib/acapPdfPrompts.d.ts +12 -0
  74. package/lib/acapPdfPrompts.d.ts.map +1 -0
  75. package/lib/acapPdfPrompts.js +100 -0
  76. package/lib/acapPdfPrompts.js.map +1 -0
  77. package/lib/index.d.ts +28 -0
  78. package/lib/index.d.ts.map +1 -1
  79. package/lib/index.js +28 -0
  80. package/lib/index.js.map +1 -1
  81. package/lib/pdfDeprecatedMatching.d.ts +27 -0
  82. package/lib/pdfDeprecatedMatching.d.ts.map +1 -0
  83. package/lib/pdfDeprecatedMatching.js +20 -0
  84. package/lib/pdfDeprecatedMatching.js.map +1 -0
  85. package/lib/pdfDimStrokeTexts.d.ts +55 -0
  86. package/lib/pdfDimStrokeTexts.d.ts.map +1 -0
  87. package/lib/pdfDimStrokeTexts.js +274 -0
  88. package/lib/pdfDimStrokeTexts.js.map +1 -0
  89. package/lib/pdfDimensionConvert.d.ts +80 -0
  90. package/lib/pdfDimensionConvert.d.ts.map +1 -0
  91. package/lib/pdfDimensionConvert.js +566 -0
  92. package/lib/pdfDimensionConvert.js.map +1 -0
  93. package/lib/pdfEntityStrokes.d.ts +13 -0
  94. package/lib/pdfEntityStrokes.d.ts.map +1 -0
  95. package/lib/pdfEntityStrokes.js +86 -0
  96. package/lib/pdfEntityStrokes.js.map +1 -0
  97. package/lib/pdfHatchRecover.d.ts +57 -0
  98. package/lib/pdfHatchRecover.d.ts.map +1 -0
  99. package/lib/pdfHatchRecover.js +315 -0
  100. package/lib/pdfHatchRecover.js.map +1 -0
  101. package/lib/pdfImportAppend.d.ts +24 -0
  102. package/lib/pdfImportAppend.d.ts.map +1 -0
  103. package/lib/pdfImportAppend.js +35 -0
  104. package/lib/pdfImportAppend.js.map +1 -0
  105. package/lib/pdfImportEntities.d.ts +63 -0
  106. package/lib/pdfImportEntities.d.ts.map +1 -0
  107. package/lib/pdfImportEntities.js +307 -0
  108. package/lib/pdfImportEntities.js.map +1 -0
  109. package/lib/pdfImportImages.d.ts +90 -0
  110. package/lib/pdfImportImages.d.ts.map +1 -0
  111. package/lib/pdfImportImages.js +294 -0
  112. package/lib/pdfImportImages.js.map +1 -0
  113. package/lib/pdfImportShapes.d.ts +63 -0
  114. package/lib/pdfImportShapes.d.ts.map +1 -0
  115. package/lib/pdfImportShapes.js +248 -0
  116. package/lib/pdfImportShapes.js.map +1 -0
  117. package/lib/pdfVectorImport.d.ts +218 -5
  118. package/lib/pdfVectorImport.d.ts.map +1 -1
  119. package/lib/pdfVectorImport.js +566 -98
  120. package/lib/pdfVectorImport.js.map +1 -1
  121. package/lib/recognition/pdfCurveRecognition.d.ts +91 -0
  122. package/lib/recognition/pdfCurveRecognition.d.ts.map +1 -0
  123. package/lib/recognition/pdfCurveRecognition.js +506 -0
  124. package/lib/recognition/pdfCurveRecognition.js.map +1 -0
  125. package/lib/recognition/pdfDimDigitRecognition.d.ts +18 -0
  126. package/lib/recognition/pdfDimDigitRecognition.d.ts.map +1 -0
  127. package/lib/recognition/pdfDimDigitRecognition.js +520 -0
  128. package/lib/recognition/pdfDimDigitRecognition.js.map +1 -0
  129. package/lib/recognition/pdfDimensionPattern.d.ts +173 -0
  130. package/lib/recognition/pdfDimensionPattern.d.ts.map +1 -0
  131. package/lib/recognition/pdfDimensionPattern.js +1023 -0
  132. package/lib/recognition/pdfDimensionPattern.js.map +1 -0
  133. package/lib/recognition/pdfFormBlocks.d.ts +58 -0
  134. package/lib/recognition/pdfFormBlocks.d.ts.map +1 -0
  135. package/lib/recognition/pdfFormBlocks.js +260 -0
  136. package/lib/recognition/pdfFormBlocks.js.map +1 -0
  137. package/lib/recognition/pdfGlyphClustering.d.ts +81 -0
  138. package/lib/recognition/pdfGlyphClustering.d.ts.map +1 -0
  139. package/lib/recognition/pdfGlyphClustering.js +1005 -0
  140. package/lib/recognition/pdfGlyphClustering.js.map +1 -0
  141. package/lib/recognition/pdfGlyphDictionary.d.ts +49 -0
  142. package/lib/recognition/pdfGlyphDictionary.d.ts.map +1 -0
  143. package/lib/recognition/pdfGlyphDictionary.js +188 -0
  144. package/lib/recognition/pdfGlyphDictionary.js.map +1 -0
  145. package/lib/recognition/pdfHatchFaces.d.ts +84 -0
  146. package/lib/recognition/pdfHatchFaces.d.ts.map +1 -0
  147. package/lib/recognition/pdfHatchFaces.js +1285 -0
  148. package/lib/recognition/pdfHatchFaces.js.map +1 -0
  149. package/lib/recognition/pdfHatchRecognition.d.ts +222 -0
  150. package/lib/recognition/pdfHatchRecognition.d.ts.map +1 -0
  151. package/lib/recognition/pdfHatchRecognition.js +3781 -0
  152. package/lib/recognition/pdfHatchRecognition.js.map +1 -0
  153. package/lib/recognition/pdfRecGeometry.d.ts +67 -0
  154. package/lib/recognition/pdfRecGeometry.d.ts.map +1 -0
  155. package/lib/recognition/pdfRecGeometry.js +365 -0
  156. package/lib/recognition/pdfRecGeometry.js.map +1 -0
  157. package/lib/recognition/pdfTextFontKind.d.ts +16 -0
  158. package/lib/recognition/pdfTextFontKind.d.ts.map +1 -0
  159. package/lib/recognition/pdfTextFontKind.js +51 -0
  160. package/lib/recognition/pdfTextFontKind.js.map +1 -0
  161. package/lib/recognition/pdfTextMerge.d.ts +71 -0
  162. package/lib/recognition/pdfTextMerge.d.ts.map +1 -0
  163. package/lib/recognition/pdfTextMerge.js +382 -0
  164. package/lib/recognition/pdfTextMerge.js.map +1 -0
  165. package/lib/recognition/pdfTextRunMerge.d.ts +28 -0
  166. package/lib/recognition/pdfTextRunMerge.d.ts.map +1 -0
  167. package/lib/recognition/pdfTextRunMerge.js +90 -0
  168. package/lib/recognition/pdfTextRunMerge.js.map +1 -0
  169. package/lib/register.d.ts +8 -2
  170. package/lib/register.d.ts.map +1 -1
  171. package/lib/register.js +29 -4
  172. package/lib/register.js.map +1 -1
  173. package/lib/ui/AcUiPdfDimPanel.d.ts +55 -0
  174. package/lib/ui/AcUiPdfDimPanel.d.ts.map +1 -0
  175. package/lib/ui/AcUiPdfDimPanel.js +347 -0
  176. package/lib/ui/AcUiPdfDimPanel.js.map +1 -0
  177. package/lib/ui/AcUiPdfHatchPanel.d.ts +57 -0
  178. package/lib/ui/AcUiPdfHatchPanel.d.ts.map +1 -0
  179. package/lib/ui/AcUiPdfHatchPanel.js +420 -0
  180. package/lib/ui/AcUiPdfHatchPanel.js.map +1 -0
  181. package/lib/ui/AcUiPdfImportDialog.d.ts +120 -0
  182. package/lib/ui/AcUiPdfImportDialog.d.ts.map +1 -0
  183. package/lib/ui/AcUiPdfImportDialog.js +673 -0
  184. package/lib/ui/AcUiPdfImportDialog.js.map +1 -0
  185. package/lib/ui/AcUiPdfTextPanel.d.ts +95 -0
  186. package/lib/ui/AcUiPdfTextPanel.d.ts.map +1 -0
  187. package/lib/ui/AcUiPdfTextPanel.js +775 -0
  188. package/lib/ui/AcUiPdfTextPanel.js.map +1 -0
  189. package/package.json +11 -11
@@ -0,0 +1,520 @@
1
+ /**
2
+ * Lightweight recognition of exploded dimension text (digits and a few CAD
3
+ * symbols) from stroke geometry. No OCR model or network: each glyph is
4
+ * rasterized onto a small grid and matched against built-in templates.
5
+ */
6
+ var __read = (this && this.__read) || function (o, n) {
7
+ var m = typeof Symbol === "function" && o[Symbol.iterator];
8
+ if (!m) return o;
9
+ var i = m.call(o), r, ar = [], e;
10
+ try {
11
+ while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
12
+ }
13
+ catch (error) { e = { error: error }; }
14
+ finally {
15
+ try {
16
+ if (r && !r.done && (m = i["return"])) m.call(i);
17
+ }
18
+ finally { if (e) throw e.error; }
19
+ }
20
+ return ar;
21
+ };
22
+ var __values = (this && this.__values) || function(o) {
23
+ var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
24
+ if (m) return m.call(o);
25
+ if (o && typeof o.length === "number") return {
26
+ next: function () {
27
+ if (o && i >= o.length) o = void 0;
28
+ return { value: o && o[i++], done: !o };
29
+ }
30
+ };
31
+ throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
32
+ };
33
+ /** Grid size for one glyph (width × height). */
34
+ var GW = 12;
35
+ var GH = 16;
36
+ /** Gap between glyphs (fraction of height) that inserts a space. */
37
+ var SPACE_GAP = 0.85;
38
+ /** Minimum score to accept a template match (Jaccard). */
39
+ var MIN_SCORE = 0.34;
40
+ /** Winner must beat the runner-up by at least this margin. */
41
+ var MIN_MARGIN = 0.03;
42
+ /** Expected enclosed holes for digits that templates can form. */
43
+ var HOLES = {
44
+ '0': 1,
45
+ '1': 0,
46
+ '2': 0,
47
+ '3': 0,
48
+ '4': 1,
49
+ '5': 0,
50
+ '6': 1,
51
+ '7': 0,
52
+ '8': 2,
53
+ '9': 1,
54
+ '.': 0,
55
+ ',': 0,
56
+ R: 1,
57
+ Ø: 1,
58
+ '°': 1,
59
+ x: 0,
60
+ '-': 0
61
+ };
62
+ /** Stick-font strokes in a unit cell [0,1]×[0,1] (baseline at 0, cap at 1). */
63
+ var STICK = {
64
+ '0': [
65
+ [
66
+ { x: 0.2, y: 0.05 },
67
+ { x: 0.8, y: 0.05 },
68
+ { x: 0.8, y: 0.95 },
69
+ { x: 0.2, y: 0.95 },
70
+ { x: 0.2, y: 0.05 }
71
+ ]
72
+ ],
73
+ '1': [
74
+ [
75
+ { x: 0.35, y: 0.75 },
76
+ { x: 0.55, y: 0.95 }
77
+ ],
78
+ [
79
+ { x: 0.55, y: 0.95 },
80
+ { x: 0.55, y: 0.05 }
81
+ ],
82
+ [
83
+ { x: 0.3, y: 0.05 },
84
+ { x: 0.8, y: 0.05 }
85
+ ]
86
+ ],
87
+ '2': [
88
+ [
89
+ { x: 0.2, y: 0.8 },
90
+ { x: 0.2, y: 0.9 },
91
+ { x: 0.8, y: 0.9 },
92
+ { x: 0.8, y: 0.55 },
93
+ { x: 0.2, y: 0.55 },
94
+ { x: 0.2, y: 0.05 },
95
+ { x: 0.8, y: 0.05 }
96
+ ]
97
+ ],
98
+ '3': [
99
+ [
100
+ { x: 0.2, y: 0.9 },
101
+ { x: 0.8, y: 0.9 },
102
+ { x: 0.8, y: 0.5 },
103
+ { x: 0.35, y: 0.5 }
104
+ ],
105
+ [
106
+ { x: 0.8, y: 0.5 },
107
+ { x: 0.8, y: 0.05 },
108
+ { x: 0.2, y: 0.05 }
109
+ ]
110
+ ],
111
+ '4': [
112
+ [
113
+ { x: 0.7, y: 0.05 },
114
+ { x: 0.7, y: 0.95 }
115
+ ],
116
+ [
117
+ { x: 0.7, y: 0.95 },
118
+ { x: 0.2, y: 0.4 }
119
+ ],
120
+ [
121
+ { x: 0.2, y: 0.4 },
122
+ { x: 0.85, y: 0.4 }
123
+ ]
124
+ ],
125
+ '5': [
126
+ [
127
+ { x: 0.8, y: 0.95 },
128
+ { x: 0.2, y: 0.95 },
129
+ { x: 0.2, y: 0.55 },
130
+ { x: 0.75, y: 0.55 },
131
+ { x: 0.8, y: 0.45 },
132
+ { x: 0.8, y: 0.15 },
133
+ { x: 0.7, y: 0.05 },
134
+ { x: 0.2, y: 0.05 }
135
+ ]
136
+ ],
137
+ '6': [
138
+ [
139
+ { x: 0.75, y: 0.95 },
140
+ { x: 0.25, y: 0.95 },
141
+ { x: 0.2, y: 0.5 },
142
+ { x: 0.2, y: 0.15 },
143
+ { x: 0.35, y: 0.05 },
144
+ { x: 0.75, y: 0.05 },
145
+ { x: 0.8, y: 0.2 },
146
+ { x: 0.8, y: 0.45 },
147
+ { x: 0.25, y: 0.5 }
148
+ ]
149
+ ],
150
+ '7': [
151
+ [
152
+ { x: 0.2, y: 0.95 },
153
+ { x: 0.8, y: 0.95 },
154
+ { x: 0.35, y: 0.05 }
155
+ ]
156
+ ],
157
+ '8': [
158
+ [
159
+ { x: 0.5, y: 0.5 },
160
+ { x: 0.2, y: 0.7 },
161
+ { x: 0.2, y: 0.9 },
162
+ { x: 0.8, y: 0.9 },
163
+ { x: 0.8, y: 0.7 },
164
+ { x: 0.5, y: 0.5 },
165
+ { x: 0.2, y: 0.3 },
166
+ { x: 0.2, y: 0.1 },
167
+ { x: 0.8, y: 0.1 },
168
+ { x: 0.8, y: 0.3 },
169
+ { x: 0.5, y: 0.5 }
170
+ ]
171
+ ],
172
+ '9': [
173
+ [
174
+ { x: 0.25, y: 0.05 },
175
+ { x: 0.75, y: 0.05 },
176
+ { x: 0.8, y: 0.5 },
177
+ { x: 0.8, y: 0.85 },
178
+ { x: 0.65, y: 0.95 },
179
+ { x: 0.25, y: 0.95 },
180
+ { x: 0.2, y: 0.8 },
181
+ { x: 0.2, y: 0.55 },
182
+ { x: 0.75, y: 0.5 }
183
+ ]
184
+ ],
185
+ '.': [
186
+ [
187
+ { x: 0.4, y: 0.05 },
188
+ { x: 0.6, y: 0.05 },
189
+ { x: 0.6, y: 0.2 },
190
+ { x: 0.4, y: 0.2 },
191
+ { x: 0.4, y: 0.05 }
192
+ ]
193
+ ],
194
+ ',': [
195
+ [
196
+ { x: 0.4, y: 0.05 },
197
+ { x: 0.6, y: 0.05 },
198
+ { x: 0.6, y: 0.2 },
199
+ { x: 0.35, y: -0.1 }
200
+ ]
201
+ ],
202
+ R: [
203
+ [
204
+ { x: 0.2, y: 0.05 },
205
+ { x: 0.2, y: 0.95 },
206
+ { x: 0.65, y: 0.95 },
207
+ { x: 0.8, y: 0.8 },
208
+ { x: 0.8, y: 0.6 },
209
+ { x: 0.65, y: 0.5 },
210
+ { x: 0.2, y: 0.5 }
211
+ ],
212
+ [
213
+ { x: 0.5, y: 0.5 },
214
+ { x: 0.8, y: 0.05 }
215
+ ]
216
+ ],
217
+ Ø: [
218
+ [
219
+ { x: 0.5, y: 0.15 },
220
+ { x: 0.75, y: 0.25 },
221
+ { x: 0.85, y: 0.5 },
222
+ { x: 0.75, y: 0.75 },
223
+ { x: 0.5, y: 0.85 },
224
+ { x: 0.25, y: 0.75 },
225
+ { x: 0.15, y: 0.5 },
226
+ { x: 0.25, y: 0.25 },
227
+ { x: 0.5, y: 0.15 }
228
+ ],
229
+ [
230
+ { x: 0.25, y: 0.2 },
231
+ { x: 0.75, y: 0.8 }
232
+ ]
233
+ ],
234
+ '°': [
235
+ [
236
+ { x: 0.5, y: 0.7 },
237
+ { x: 0.65, y: 0.75 },
238
+ { x: 0.7, y: 0.9 },
239
+ { x: 0.55, y: 0.95 },
240
+ { x: 0.4, y: 0.9 },
241
+ { x: 0.35, y: 0.75 },
242
+ { x: 0.5, y: 0.7 }
243
+ ]
244
+ ],
245
+ x: [
246
+ [
247
+ { x: 0.2, y: 0.2 },
248
+ { x: 0.8, y: 0.8 }
249
+ ],
250
+ [
251
+ { x: 0.8, y: 0.2 },
252
+ { x: 0.2, y: 0.8 }
253
+ ]
254
+ ],
255
+ '-': [
256
+ [
257
+ { x: 0.15, y: 0.5 },
258
+ { x: 0.85, y: 0.5 }
259
+ ]
260
+ ]
261
+ };
262
+ /** Also accept these lookalikes as the canonical dimension character. */
263
+ var ALIASES = {
264
+ ø: 'Ø',
265
+ '⌀': 'Ø',
266
+ o: '0',
267
+ O: '0'
268
+ };
269
+ var TEMPLATES = Object.entries(STICK).flatMap(function (_a) {
270
+ var _b = __read(_a, 2), char = _b[0], strokes = _b[1];
271
+ var grid = rasterizeStrokes(strokes);
272
+ return grid ? [{ char: char, grid: grid }] : [];
273
+ });
274
+ /**
275
+ * Reads a clustered stroke text line as a dimension value when every glyph
276
+ * matches a digit or CAD symbol template.
277
+ *
278
+ * @returns The string (e.g. `55`, `Ø12`, `R10`, `45°`), or `undefined`.
279
+ */
280
+ export function recognizePdfDimStrokeText(line) {
281
+ if (line.glyphs.length === 0)
282
+ return undefined;
283
+ var text = '';
284
+ for (var i = 0; i < line.glyphs.length; i++) {
285
+ var glyph = line.glyphs[i];
286
+ var char = recognizePdfDimGlyph(glyph, line);
287
+ if (!char)
288
+ return undefined;
289
+ if (i > 0 &&
290
+ glyph.minU - line.glyphs[i - 1].maxU > SPACE_GAP * line.height) {
291
+ text += ' ';
292
+ }
293
+ text += char;
294
+ }
295
+ // Dimension values rarely need spaces; clustering gaps are noisy.
296
+ var compact = text.replace(/\s+/g, '');
297
+ return compact.length > 0 ? compact : undefined;
298
+ }
299
+ /**
300
+ * Matches one glyph box against the built-in digit / symbol templates.
301
+ */
302
+ export function recognizePdfDimGlyph(glyph, line) {
303
+ var e_1, _a;
304
+ var _b, _c;
305
+ var grid = rasterizeGlyph(glyph, line);
306
+ if (!grid)
307
+ return undefined;
308
+ var holes = countHoles(grid);
309
+ var best;
310
+ var second = 0;
311
+ try {
312
+ for (var TEMPLATES_1 = __values(TEMPLATES), TEMPLATES_1_1 = TEMPLATES_1.next(); !TEMPLATES_1_1.done; TEMPLATES_1_1 = TEMPLATES_1.next()) {
313
+ var template = TEMPLATES_1_1.value;
314
+ // Soft prior: prefer templates whose hole count matches the ink.
315
+ var holePenalty = HOLES[template.char] === undefined
316
+ ? 0
317
+ : HOLES[template.char] === holes
318
+ ? 0
319
+ : 0.12;
320
+ var score = jaccard(grid, template.grid) - holePenalty;
321
+ if (!best || score > best.score) {
322
+ second = (_b = best === null || best === void 0 ? void 0 : best.score) !== null && _b !== void 0 ? _b : 0;
323
+ best = { char: template.char, score: score };
324
+ }
325
+ else if (score > second) {
326
+ second = score;
327
+ }
328
+ }
329
+ }
330
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
331
+ finally {
332
+ try {
333
+ if (TEMPLATES_1_1 && !TEMPLATES_1_1.done && (_a = TEMPLATES_1.return)) _a.call(TEMPLATES_1);
334
+ }
335
+ finally { if (e_1) throw e_1.error; }
336
+ }
337
+ if (!best || best.score < MIN_SCORE || best.score - second < MIN_MARGIN) {
338
+ return undefined;
339
+ }
340
+ return (_c = ALIASES[best.char]) !== null && _c !== void 0 ? _c : best.char;
341
+ }
342
+ /** Rasterizes a glyph's strokes into the unit grid, in line-local UV. */
343
+ function rasterizeGlyph(glyph, line) {
344
+ if (!(line.height > 0))
345
+ return undefined;
346
+ var c = Math.cos(line.rotation);
347
+ var s = Math.sin(line.rotation);
348
+ var strokes = glyph.strokes.map(function (stroke) {
349
+ return stroke.points.map(function (p) { return ({
350
+ x: p.x * c + p.y * s,
351
+ y: -p.x * s + p.y * c
352
+ }); });
353
+ });
354
+ return rasterizeStrokes(strokes);
355
+ }
356
+ /**
357
+ * Fits strokes into the grid by their axis-aligned bbox so template and
358
+ * live glyphs share the same normalization (content fills the cell, thin
359
+ * glyphs such as `1` stay letterboxed).
360
+ */
361
+ function rasterizeStrokes(strokes) {
362
+ var e_2, _a, e_3, _b, e_4, _c;
363
+ var minX = Infinity;
364
+ var minY = Infinity;
365
+ var maxX = -Infinity;
366
+ var maxY = -Infinity;
367
+ try {
368
+ for (var strokes_1 = __values(strokes), strokes_1_1 = strokes_1.next(); !strokes_1_1.done; strokes_1_1 = strokes_1.next()) {
369
+ var stroke = strokes_1_1.value;
370
+ try {
371
+ for (var stroke_1 = (e_3 = void 0, __values(stroke)), stroke_1_1 = stroke_1.next(); !stroke_1_1.done; stroke_1_1 = stroke_1.next()) {
372
+ var p = stroke_1_1.value;
373
+ minX = Math.min(minX, p.x);
374
+ minY = Math.min(minY, p.y);
375
+ maxX = Math.max(maxX, p.x);
376
+ maxY = Math.max(maxY, p.y);
377
+ }
378
+ }
379
+ catch (e_3_1) { e_3 = { error: e_3_1 }; }
380
+ finally {
381
+ try {
382
+ if (stroke_1_1 && !stroke_1_1.done && (_b = stroke_1.return)) _b.call(stroke_1);
383
+ }
384
+ finally { if (e_3) throw e_3.error; }
385
+ }
386
+ }
387
+ }
388
+ catch (e_2_1) { e_2 = { error: e_2_1 }; }
389
+ finally {
390
+ try {
391
+ if (strokes_1_1 && !strokes_1_1.done && (_a = strokes_1.return)) _a.call(strokes_1);
392
+ }
393
+ finally { if (e_2) throw e_2.error; }
394
+ }
395
+ var width = maxX - minX;
396
+ var height = maxY - minY;
397
+ if (!(width > 0 || height > 0))
398
+ return undefined;
399
+ var spanX = Math.max(width, height * 0.35, 1e-9);
400
+ var spanY = Math.max(height, 1e-9);
401
+ var padX = (spanX - width) / 2;
402
+ var grid = new Uint8Array(GW * GH);
403
+ var pen = 0.1;
404
+ try {
405
+ for (var strokes_2 = __values(strokes), strokes_2_1 = strokes_2.next(); !strokes_2_1.done; strokes_2_1 = strokes_2.next()) {
406
+ var stroke = strokes_2_1.value;
407
+ var pts = stroke.map(function (p) { return ({
408
+ x: (p.x - minX + padX) / spanX,
409
+ y: (p.y - minY) / spanY
410
+ }); });
411
+ strokeGrid(grid, pts, pen);
412
+ }
413
+ }
414
+ catch (e_4_1) { e_4 = { error: e_4_1 }; }
415
+ finally {
416
+ try {
417
+ if (strokes_2_1 && !strokes_2_1.done && (_c = strokes_2.return)) _c.call(strokes_2);
418
+ }
419
+ finally { if (e_4) throw e_4.error; }
420
+ }
421
+ var on = 0;
422
+ for (var i = 0; i < grid.length; i++)
423
+ on += grid[i];
424
+ return on >= 2 ? grid : undefined;
425
+ }
426
+ function strokeGrid(grid, points, pen) {
427
+ for (var i = 0; i < points.length - 1; i++) {
428
+ paintSegment(grid, points[i], points[i + 1], pen);
429
+ }
430
+ if (points.length === 1)
431
+ paintDisk(grid, points[0].x, points[0].y, pen);
432
+ }
433
+ function paintSegment(grid, a, b, pen) {
434
+ var steps = Math.max(1, Math.ceil(Math.hypot(b.x - a.x, b.y - a.y) / (pen * 0.45)));
435
+ for (var i = 0; i <= steps; i++) {
436
+ var t = i / steps;
437
+ paintDisk(grid, a.x + (b.x - a.x) * t, a.y + (b.y - a.y) * t, pen);
438
+ }
439
+ }
440
+ function paintDisk(grid, x, y, pen) {
441
+ // y=0 is the bottom of the bbox, y=1 the top → flip for row 0 at top.
442
+ var cx = x * (GW - 1);
443
+ var cy = (1 - y) * (GH - 1);
444
+ var r = pen * Math.max(GW, GH);
445
+ var x0 = Math.max(0, Math.floor(cx - r));
446
+ var x1 = Math.min(GW - 1, Math.ceil(cx + r));
447
+ var y0 = Math.max(0, Math.floor(cy - r));
448
+ var y1 = Math.min(GH - 1, Math.ceil(cy + r));
449
+ var r2 = r * r;
450
+ for (var gy = y0; gy <= y1; gy++) {
451
+ for (var gx = x0; gx <= x1; gx++) {
452
+ var dx = gx - cx;
453
+ var dy = gy - cy;
454
+ if (dx * dx + dy * dy <= r2)
455
+ grid[gy * GW + gx] = 1;
456
+ }
457
+ }
458
+ }
459
+ function jaccard(a, b) {
460
+ var inter = 0;
461
+ var union = 0;
462
+ for (var i = 0; i < a.length; i++) {
463
+ var av = a[i];
464
+ var bv = b[i];
465
+ inter += av & bv;
466
+ union += av | bv;
467
+ }
468
+ return union > 0 ? inter / union : 0;
469
+ }
470
+ /**
471
+ * Counts background components not connected to the grid border (holes
472
+ * inside digit ink). Used to separate 0/4/6/9/Ø (1) from 8 (2) and 1/2/3/5/7 (0).
473
+ */
474
+ function countHoles(grid) {
475
+ var seen = new Uint8Array(grid.length);
476
+ var flood = function (start) {
477
+ var stack = [start];
478
+ seen[start] = 1;
479
+ while (stack.length > 0) {
480
+ var i = stack.pop();
481
+ var x = i % GW;
482
+ var y = (i / GW) | 0;
483
+ var push = function (nx, ny) {
484
+ if (nx < 0 || ny < 0 || nx >= GW || ny >= GH)
485
+ return;
486
+ var j = ny * GW + nx;
487
+ if (seen[j] || grid[j])
488
+ return;
489
+ seen[j] = 1;
490
+ stack.push(j);
491
+ };
492
+ push(x - 1, y);
493
+ push(x + 1, y);
494
+ push(x, y - 1);
495
+ push(x, y + 1);
496
+ }
497
+ };
498
+ // Exterior: every empty cell on the border.
499
+ for (var x = 0; x < GW; x++) {
500
+ if (!grid[x])
501
+ flood(x);
502
+ if (!grid[(GH - 1) * GW + x])
503
+ flood((GH - 1) * GW + x);
504
+ }
505
+ for (var y = 0; y < GH; y++) {
506
+ if (!grid[y * GW])
507
+ flood(y * GW);
508
+ if (!grid[y * GW + GW - 1])
509
+ flood(y * GW + GW - 1);
510
+ }
511
+ var holes = 0;
512
+ for (var i = 0; i < grid.length; i++) {
513
+ if (grid[i] || seen[i])
514
+ continue;
515
+ holes++;
516
+ flood(i);
517
+ }
518
+ return holes;
519
+ }
520
+ //# sourceMappingURL=pdfDimDigitRecognition.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pdfDimDigitRecognition.js","sourceRoot":"","sources":["../../src/recognition/pdfDimDigitRecognition.ts"],"names":[],"mappings":"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"}