@superdoc-dev/mcp 0.12.0-next.23 → 0.12.0-next.25

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 (2) hide show
  1. package/dist/index.js +1247 -100
  2. package/package.json +3 -3
package/dist/index.js CHANGED
@@ -52172,7 +52172,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
52172
52172
  emptyOptions2 = {};
52173
52173
  });
52174
52174
 
52175
- // ../../packages/superdoc/dist/chunks/SuperConverter-CLuVUp7o.es.js
52175
+ // ../../packages/superdoc/dist/chunks/SuperConverter-CCgGAnXY.es.js
52176
52176
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
52177
52177
  const fieldValue = extension$1.config[field];
52178
52178
  if (typeof fieldValue === "function")
@@ -87102,11 +87102,13 @@ function getFontRegistryFor(fontSet, FontFaceCtor) {
87102
87102
  }
87103
87103
  return registry2;
87104
87104
  }
87105
- function classifyOffering(policyAction, verdict, physicalFamily, bundled) {
87105
+ function classifyOffering(logicalFamily, policyAction, verdict, physicalFamily, bundled) {
87106
87106
  if (policyAction === "preserve_only")
87107
87107
  return "preserve_only";
87108
87108
  if (policyAction === "customer_supplied" || physicalFamily == null)
87109
87109
  return "customer_supplied";
87110
+ if (bundled && SUPPORTED_ALIAS_FAMILIES.has(logicalFamily))
87111
+ return "supported_alias";
87110
87112
  if (policyAction === "category_fallback")
87111
87113
  return "category_fallback";
87112
87114
  if (!bundled)
@@ -87120,7 +87122,7 @@ function deriveOfferings() {
87120
87122
  logicalFamily: row.logicalFamily,
87121
87123
  physicalFamily: row.physicalFamily,
87122
87124
  generic: row.generic,
87123
- offering: classifyOffering(row.policyAction, row.verdict, row.physicalFamily, bundled),
87125
+ offering: classifyOffering(row.logicalFamily, row.policyAction, row.verdict, row.physicalFamily, bundled),
87124
87126
  bundled,
87125
87127
  verdict: row.verdict,
87126
87128
  evidenceId: row.evidenceId
@@ -114601,7 +114603,7 @@ var isRegExp = (value) => {
114601
114603
  const detail = sources && sources.length ? ` from ${sources.join(", ")}` : "";
114602
114604
  console.warn(`[superdoc] font asset failed to load for "${family$1}"${detail}. Check fonts.assetBaseUrl / fonts.resolveAssetUrl so the bundled .woff2 are served.`);
114603
114605
  }
114604
- }, registriesByFontSet, domlessRegistry = null, BUNDLED_FAMILIES, ADVERTISED_BUILT_IN_TOOLBAR_FAMILIES, FONT_OFFERINGS, prepareCommentParaIds = (comment) => {
114606
+ }, registriesByFontSet, domlessRegistry = null, BUNDLED_FAMILIES, SUPPORTED_ALIAS_FAMILIES, ADVERTISED_BUILT_IN_TOOLBAR_FAMILIES, FONT_OFFERINGS, prepareCommentParaIds = (comment) => {
114605
114607
  return {
114606
114608
  ...comment,
114607
114609
  commentParaId: generateDocxRandomId()
@@ -118756,7 +118758,7 @@ var isRegExp = (value) => {
118756
118758
  state.kern = kernNode.attributes["w:val"];
118757
118759
  }
118758
118760
  }, SuperConverter;
118759
- var init_SuperConverter_CLuVUp7o_es = __esm(() => {
118761
+ var init_SuperConverter_CCgGAnXY_es = __esm(() => {
118760
118762
  init_rolldown_runtime_Bg48TavK_es();
118761
118763
  init_jszip_C49i9kUs_es();
118762
118764
  init_xml_js_CqGKpaft_es();
@@ -156176,6 +156178,62 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
156176
156178
  },
156177
156179
  candidateLicense: "OFL-1.1"
156178
156180
  },
156181
+ {
156182
+ evidenceId: "arial-mt",
156183
+ generic: "sans-serif",
156184
+ logicalFamily: "Arial MT",
156185
+ physicalFamily: "Liberation Sans",
156186
+ verdict: "metric_safe",
156187
+ faces: {
156188
+ regular: true,
156189
+ bold: true,
156190
+ italic: true,
156191
+ boldItalic: true
156192
+ },
156193
+ gates: {
156194
+ static: "pass",
156195
+ metric: "pass",
156196
+ layout: "not_run",
156197
+ ship: "pass"
156198
+ },
156199
+ policyAction: "substitute",
156200
+ measurementRefs: [
156201
+ "arial-mt_regular__liberation-sans#regular#w400#analytic_advance#2026-06-10",
156202
+ "arial-mt_bold__liberation-sans#bold#w700#analytic_advance#2026-06-10",
156203
+ "arial-mt_italic__liberation-sans#italic#w400#analytic_advance#2026-06-10",
156204
+ "arial-mt_boldItalic__liberation-sans#boldItalic#w700#analytic_advance#2026-06-10"
156205
+ ],
156206
+ exportRule: "preserve_original_name",
156207
+ advance: {
156208
+ basis: "latin_text",
156209
+ meanDelta: 0,
156210
+ maxDelta: 0
156211
+ },
156212
+ candidateLicense: "OFL-1.1"
156213
+ },
156214
+ {
156215
+ evidenceId: "arial-unicode-ms",
156216
+ generic: "sans-serif",
156217
+ logicalFamily: "Arial Unicode MS",
156218
+ physicalFamily: null,
156219
+ verdict: "customer_supplied",
156220
+ faces: {
156221
+ regular: false,
156222
+ bold: false,
156223
+ italic: false,
156224
+ boldItalic: false
156225
+ },
156226
+ gates: {
156227
+ static: "not_run",
156228
+ metric: "not_run",
156229
+ layout: "not_run",
156230
+ ship: "not_run"
156231
+ },
156232
+ policyAction: "customer_supplied",
156233
+ measurementRefs: ["arial-unicode-ms#broad_unicode_no_open_substitute#2026-06-10"],
156234
+ exportRule: "preserve_original_name",
156235
+ candidateLicense: null
156236
+ },
156179
156237
  {
156180
156238
  evidenceId: "times-new-roman",
156181
156239
  generic: "serif",
@@ -156204,6 +156262,51 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
156204
156262
  },
156205
156263
  candidateLicense: "OFL-1.1"
156206
156264
  },
156265
+ {
156266
+ evidenceId: "times",
156267
+ generic: "serif",
156268
+ logicalFamily: "Times",
156269
+ physicalFamily: "Liberation Serif",
156270
+ verdict: "visual_only",
156271
+ faces: {
156272
+ regular: true,
156273
+ bold: true,
156274
+ italic: true,
156275
+ boldItalic: true
156276
+ },
156277
+ gates: {
156278
+ static: "pass",
156279
+ metric: "pass",
156280
+ layout: "not_run",
156281
+ ship: "pass"
156282
+ },
156283
+ policyAction: "substitute",
156284
+ measurementRefs: [
156285
+ "times_regular__liberation-serif#regular#w400#analytic_advance#2026-06-10",
156286
+ "times_bold__liberation-serif#bold#w700#analytic_advance#2026-06-10",
156287
+ "times_italic__liberation-serif#italic#w400#analytic_advance#2026-06-10",
156288
+ "times_boldItalic__liberation-serif#boldItalic#w700#analytic_advance#2026-06-10"
156289
+ ],
156290
+ exportRule: "preserve_original_name",
156291
+ advance: {
156292
+ basis: "latin_text",
156293
+ meanDelta: 0.00098877,
156294
+ maxDelta: 0.1171875
156295
+ },
156296
+ candidateLicense: "OFL-1.1",
156297
+ faceVerdicts: {
156298
+ regular: "metric_safe",
156299
+ bold: "metric_safe",
156300
+ italic: "metric_safe",
156301
+ boldItalic: "visual_only"
156302
+ },
156303
+ glyphExceptions: [{
156304
+ slot: "boldItalic",
156305
+ codepoint: 239,
156306
+ advanceDelta: 0.1172,
156307
+ note: "Times Bold Italic vs Liberation Serif Bold Italic: small i diaeresis (U+00EF) advance differs ~11.7%; lines containing it can reflow. Regular, bold, and italic faces are metric_safe on the text sample."
156308
+ }]
156309
+ },
156207
156310
  {
156208
156311
  evidenceId: "courier-new",
156209
156312
  generic: "monospace",
@@ -156232,6 +156335,66 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
156232
156335
  },
156233
156336
  candidateLicense: "OFL-1.1"
156234
156337
  },
156338
+ {
156339
+ evidenceId: "courier",
156340
+ generic: "monospace",
156341
+ logicalFamily: "Courier",
156342
+ physicalFamily: "Liberation Mono",
156343
+ verdict: "visual_only",
156344
+ faces: {
156345
+ regular: true,
156346
+ bold: true,
156347
+ italic: true,
156348
+ boldItalic: true
156349
+ },
156350
+ gates: {
156351
+ static: "pass",
156352
+ metric: "fail",
156353
+ layout: "not_run",
156354
+ ship: "pass"
156355
+ },
156356
+ policyAction: "category_fallback",
156357
+ measurementRefs: ["courier__liberation-mono#monospace_cell#analytic_advance#2026-06-10"],
156358
+ exportRule: "preserve_original_name",
156359
+ advance: {
156360
+ basis: "monospace_cell",
156361
+ meanDelta: 0.0016,
156362
+ maxDelta: 0.2002
156363
+ },
156364
+ candidateLicense: "OFL-1.1",
156365
+ faceVerdicts: {
156366
+ regular: "visual_only",
156367
+ bold: "visual_only",
156368
+ italic: "visual_only",
156369
+ boldItalic: "visual_only"
156370
+ },
156371
+ glyphExceptions: [
156372
+ {
156373
+ slot: "regular",
156374
+ codepoint: 176,
156375
+ advanceDelta: 0.2002,
156376
+ note: "Courier Regular vs Liberation Mono Regular: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
156377
+ },
156378
+ {
156379
+ slot: "bold",
156380
+ codepoint: 176,
156381
+ advanceDelta: 0.2002,
156382
+ note: "Courier Bold vs Liberation Mono Bold: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
156383
+ },
156384
+ {
156385
+ slot: "italic",
156386
+ codepoint: 176,
156387
+ advanceDelta: 0.2002,
156388
+ note: "Courier Italic vs Liberation Mono Italic: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
156389
+ },
156390
+ {
156391
+ slot: "boldItalic",
156392
+ codepoint: 176,
156393
+ advanceDelta: 0.2002,
156394
+ note: "Courier Bold Italic vs Liberation Mono Bold Italic: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
156395
+ }
156396
+ ]
156397
+ },
156235
156398
  {
156236
156399
  evidenceId: "georgia",
156237
156400
  generic: "serif",
@@ -156537,6 +156700,52 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
156537
156700
  note: "Century Schoolbook Bold vs C059 Bold: macron (U+00AF) advance differs ~16.7%; yen (U+00A5), micro sign (U+00B5), plus-minus (U+00B1), and division sign (U+00F7) also exceed the direct threshold. Body-text Latin sample is metric_safe."
156538
156701
  }]
156539
156702
  },
156703
+ {
156704
+ evidenceId: "century-gothic",
156705
+ generic: "sans-serif",
156706
+ logicalFamily: "Century Gothic",
156707
+ physicalFamily: "URW Gothic",
156708
+ verdict: "visual_only",
156709
+ faces: {
156710
+ regular: true,
156711
+ bold: true,
156712
+ italic: true,
156713
+ boldItalic: true
156714
+ },
156715
+ gates: {
156716
+ static: "pass",
156717
+ metric: "fail",
156718
+ layout: "not_run",
156719
+ ship: "fail"
156720
+ },
156721
+ policyAction: "category_fallback",
156722
+ measurementRefs: [
156723
+ "century-gothic_regular__urw-gothic#regular#w400#analytic_advance#2026-06-10",
156724
+ "century-gothic_bold__urw-gothic#bold#w700#analytic_advance#2026-06-10",
156725
+ "century-gothic_italic__urw-gothic#italic#w400#analytic_advance#2026-06-10",
156726
+ "century-gothic_boldItalic__urw-gothic#boldItalic#w700#analytic_advance#2026-06-10",
156727
+ "century-gothic__urw-gothic#visual_review#2026-06-10"
156728
+ ],
156729
+ exportRule: "preserve_original_name",
156730
+ advance: {
156731
+ basis: "latin_text",
156732
+ meanDelta: 0.0013,
156733
+ maxDelta: 0.1662
156734
+ },
156735
+ candidateLicense: "AGPL-3.0-only WITH PS-or-PDF-font-exception-20170817",
156736
+ faceVerdicts: {
156737
+ regular: "visual_only",
156738
+ bold: "visual_only",
156739
+ italic: "visual_only",
156740
+ boldItalic: "visual_only"
156741
+ },
156742
+ glyphExceptions: [{
156743
+ slot: "regular",
156744
+ codepoint: 35,
156745
+ advanceDelta: 0.1662,
156746
+ note: "Century Gothic Regular vs URW Gothic Book: number sign (U+0023) advance differs ~16.6%; caret (U+005E) and plus-minus (U+00B1) also exceed the direct threshold. Body text is close, but not line-break safe."
156747
+ }]
156748
+ },
156540
156749
  {
156541
156750
  evidenceId: "garamond",
156542
156751
  generic: "serif",
@@ -156655,6 +156864,45 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
156655
156864
  exportRule: "preserve_original_name",
156656
156865
  candidateLicense: "OFL-1.1"
156657
156866
  },
156867
+ {
156868
+ evidenceId: "segoe-ui",
156869
+ generic: "sans-serif",
156870
+ logicalFamily: "Segoe UI",
156871
+ physicalFamily: "Selawik",
156872
+ verdict: "visual_only",
156873
+ faces: {
156874
+ regular: true,
156875
+ bold: true,
156876
+ italic: false,
156877
+ boldItalic: false
156878
+ },
156879
+ faceSources: {
156880
+ italic: {
156881
+ kind: "synthetic",
156882
+ from: "regular"
156883
+ },
156884
+ boldItalic: {
156885
+ kind: "synthetic",
156886
+ from: "bold"
156887
+ }
156888
+ },
156889
+ gates: {
156890
+ static: "pass",
156891
+ metric: "fail",
156892
+ layout: "not_run",
156893
+ ship: "fail"
156894
+ },
156895
+ policyAction: "category_fallback",
156896
+ measurementRefs: ["segoe-ui__selawik#coverage_limited_advance_probe#2026-06-10"],
156897
+ exportRule: "preserve_original_name",
156898
+ candidateLicense: "OFL-1.1",
156899
+ faceVerdicts: {
156900
+ regular: "visual_only",
156901
+ bold: "visual_only",
156902
+ italic: "visual_only",
156903
+ boldItalic: "visual_only"
156904
+ }
156905
+ },
156658
156906
  {
156659
156907
  evidenceId: "trebuchet-ms",
156660
156908
  generic: "sans-serif",
@@ -156867,6 +157115,182 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
156867
157115
  boldItalic: "visual_only"
156868
157116
  }
156869
157117
  },
157118
+ {
157119
+ evidenceId: "yu-mincho",
157120
+ generic: "serif",
157121
+ logicalFamily: "Yu Mincho",
157122
+ physicalFamily: "BIZ UDMincho",
157123
+ verdict: "visual_only",
157124
+ faces: {
157125
+ regular: true,
157126
+ bold: true,
157127
+ italic: false,
157128
+ boldItalic: false
157129
+ },
157130
+ faceSources: {
157131
+ italic: {
157132
+ kind: "synthetic",
157133
+ from: "regular"
157134
+ },
157135
+ boldItalic: {
157136
+ kind: "synthetic",
157137
+ from: "bold"
157138
+ }
157139
+ },
157140
+ gates: {
157141
+ static: "pass",
157142
+ metric: "fail",
157143
+ layout: "not_run",
157144
+ ship: "fail"
157145
+ },
157146
+ policyAction: "category_fallback",
157147
+ measurementRefs: ["yu-mincho_regular__biz-udmincho#regular#w400#cjk_jp_text#analytic_advance#2026-06-10"],
157148
+ exportRule: "preserve_original_name",
157149
+ advance: {
157150
+ basis: "cjk_jp_text",
157151
+ meanDelta: 0.0425,
157152
+ maxDelta: 0.4829
157153
+ },
157154
+ candidateLicense: "OFL-1.1",
157155
+ faceVerdicts: {
157156
+ regular: "visual_only",
157157
+ bold: "visual_only",
157158
+ italic: "visual_only",
157159
+ boldItalic: "visual_only"
157160
+ }
157161
+ },
157162
+ {
157163
+ evidenceId: "ms-mincho",
157164
+ generic: "serif",
157165
+ logicalFamily: "MS Mincho",
157166
+ physicalFamily: "BIZ UDMincho",
157167
+ verdict: "visual_only",
157168
+ faces: {
157169
+ regular: true,
157170
+ bold: true,
157171
+ italic: false,
157172
+ boldItalic: false
157173
+ },
157174
+ faceSources: {
157175
+ italic: {
157176
+ kind: "synthetic",
157177
+ from: "regular"
157178
+ },
157179
+ boldItalic: {
157180
+ kind: "synthetic",
157181
+ from: "bold"
157182
+ }
157183
+ },
157184
+ gates: {
157185
+ static: "pass",
157186
+ metric: "pass",
157187
+ layout: "not_run",
157188
+ ship: "fail"
157189
+ },
157190
+ policyAction: "category_fallback",
157191
+ measurementRefs: ["ms-mincho_regular__biz-udmincho#regular#w400#cjk_jp_text#analytic_advance#2026-06-10"],
157192
+ exportRule: "preserve_original_name",
157193
+ advance: {
157194
+ basis: "cjk_jp_text",
157195
+ meanDelta: 0,
157196
+ maxDelta: 0
157197
+ },
157198
+ candidateLicense: "OFL-1.1",
157199
+ faceVerdicts: {
157200
+ regular: "cell_width_only",
157201
+ bold: "visual_only",
157202
+ italic: "visual_only",
157203
+ boldItalic: "visual_only"
157204
+ }
157205
+ },
157206
+ {
157207
+ evidenceId: "ms-gothic",
157208
+ generic: "sans-serif",
157209
+ logicalFamily: "MS Gothic",
157210
+ physicalFamily: "BIZ UDGothic",
157211
+ verdict: "visual_only",
157212
+ faces: {
157213
+ regular: true,
157214
+ bold: true,
157215
+ italic: false,
157216
+ boldItalic: false
157217
+ },
157218
+ faceSources: {
157219
+ italic: {
157220
+ kind: "synthetic",
157221
+ from: "regular"
157222
+ },
157223
+ boldItalic: {
157224
+ kind: "synthetic",
157225
+ from: "bold"
157226
+ }
157227
+ },
157228
+ gates: {
157229
+ static: "pass",
157230
+ metric: "pass",
157231
+ layout: "not_run",
157232
+ ship: "fail"
157233
+ },
157234
+ policyAction: "category_fallback",
157235
+ measurementRefs: ["ms-gothic_regular__biz-udgothic#regular#w400#cjk_jp_text#analytic_advance#2026-06-10"],
157236
+ exportRule: "preserve_original_name",
157237
+ advance: {
157238
+ basis: "cjk_jp_text",
157239
+ meanDelta: 0,
157240
+ maxDelta: 0
157241
+ },
157242
+ candidateLicense: "OFL-1.1",
157243
+ faceVerdicts: {
157244
+ regular: "cell_width_only",
157245
+ bold: "visual_only",
157246
+ italic: "visual_only",
157247
+ boldItalic: "visual_only"
157248
+ }
157249
+ },
157250
+ {
157251
+ evidenceId: "yu-gothic",
157252
+ generic: "sans-serif",
157253
+ logicalFamily: "Yu Gothic",
157254
+ physicalFamily: "BIZ UDGothic",
157255
+ verdict: "visual_only",
157256
+ faces: {
157257
+ regular: true,
157258
+ bold: true,
157259
+ italic: false,
157260
+ boldItalic: false
157261
+ },
157262
+ faceSources: {
157263
+ italic: {
157264
+ kind: "synthetic",
157265
+ from: "regular"
157266
+ },
157267
+ boldItalic: {
157268
+ kind: "synthetic",
157269
+ from: "bold"
157270
+ }
157271
+ },
157272
+ gates: {
157273
+ static: "pass",
157274
+ metric: "fail",
157275
+ layout: "not_run",
157276
+ ship: "fail"
157277
+ },
157278
+ policyAction: "category_fallback",
157279
+ measurementRefs: ["yu-gothic_regular__biz-udgothic#regular#w400#cjk_jp_text#analytic_advance#2026-06-10", "yu-gothic_bold__biz-udgothic#bold#w700#cjk_jp_text#analytic_advance#2026-06-10"],
157280
+ exportRule: "preserve_original_name",
157281
+ advance: {
157282
+ basis: "cjk_jp_text",
157283
+ meanDelta: 0.0415,
157284
+ maxDelta: 0.4521
157285
+ },
157286
+ candidateLicense: "OFL-1.1",
157287
+ faceVerdicts: {
157288
+ regular: "visual_only",
157289
+ bold: "visual_only",
157290
+ italic: "visual_only",
157291
+ boldItalic: "visual_only"
157292
+ }
157293
+ },
156870
157294
  {
156871
157295
  evidenceId: "aptos-display",
156872
157296
  generic: "sans-serif",
@@ -157146,6 +157570,28 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
157146
157570
  file: "C059-BdIta.woff2"
157147
157571
  }
157148
157572
  ]),
157573
+ familyWithFaces("URW Gothic", "AGPL-3.0-only WITH PS-or-PDF-font-exception-20170817", [
157574
+ {
157575
+ weight: "normal",
157576
+ style: "normal",
157577
+ file: "URWGothic-Book.woff2"
157578
+ },
157579
+ {
157580
+ weight: "bold",
157581
+ style: "normal",
157582
+ file: "URWGothic-Demi.woff2"
157583
+ },
157584
+ {
157585
+ weight: "normal",
157586
+ style: "italic",
157587
+ file: "URWGothic-BookOblique.woff2"
157588
+ },
157589
+ {
157590
+ weight: "bold",
157591
+ style: "italic",
157592
+ file: "URWGothic-DemiOblique.woff2"
157593
+ }
157594
+ ]),
157149
157595
  familyWithFaces("Bacasime Antique", "OFL-1.1", [{
157150
157596
  weight: "normal",
157151
157597
  style: "normal",
@@ -157184,6 +157630,15 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
157184
157630
  file: "ComicRelief-Bold.woff2"
157185
157631
  }]),
157186
157632
  family("Noto Sans", "NotoSans", "OFL-1.1"),
157633
+ familyWithFaces("Selawik", "OFL-1.1", [{
157634
+ weight: "normal",
157635
+ style: "normal",
157636
+ file: "Selawik-Regular.woff2"
157637
+ }, {
157638
+ weight: "bold",
157639
+ style: "normal",
157640
+ file: "Selawik-Bold.woff2"
157641
+ }]),
157187
157642
  familyWithFaces("Noto Sans Mono", "OFL-1.1", [{
157188
157643
  weight: "normal",
157189
157644
  style: "normal",
@@ -157228,6 +157683,11 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
157228
157683
  OS2_MIN_LENGTH = OS2_FSSELECTION + 2;
157229
157684
  registriesByFontSet = /* @__PURE__ */ new WeakMap;
157230
157685
  BUNDLED_FAMILIES = new Set(BUNDLED_MANIFEST.map((f2) => f2.family));
157686
+ SUPPORTED_ALIAS_FAMILIES = new Set([
157687
+ "Arial MT",
157688
+ "Courier",
157689
+ "Times"
157690
+ ]);
157231
157691
  ADVERTISED_BUILT_IN_TOOLBAR_FAMILIES = new Set([
157232
157692
  "Arial Black",
157233
157693
  "Arial Narrow",
@@ -157235,12 +157695,14 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
157235
157695
  "Bookman Old Style",
157236
157696
  "Brush Script MT",
157237
157697
  "Century",
157698
+ "Century Gothic",
157238
157699
  "Cooper Black",
157239
157700
  "Comic Sans MS",
157240
157701
  "Garamond",
157241
157702
  "Georgia",
157242
157703
  "Gill Sans MT Condensed",
157243
157704
  "Lucida Console",
157705
+ "Segoe UI",
157244
157706
  "Tahoma",
157245
157707
  "Trebuchet MS",
157246
157708
  "Verdana"
@@ -159040,7 +159502,7 @@ var init_SuperConverter_CLuVUp7o_es = __esm(() => {
159040
159502
  };
159041
159503
  });
159042
159504
 
159043
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-Dga1mSBS.es.js
159505
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-BvrKiWf0.es.js
159044
159506
  function parseSizeUnit(val = "0") {
159045
159507
  const length = val.toString() || "0";
159046
159508
  const value = Number.parseFloat(length);
@@ -169435,8 +169897,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, normalizeActorId = (value) => {
169435
169897
  }
169436
169898
  };
169437
169899
  };
169438
- var init_create_headless_toolbar_Dga1mSBS_es = __esm(() => {
169439
- init_SuperConverter_CLuVUp7o_es();
169900
+ var init_create_headless_toolbar_BvrKiWf0_es = __esm(() => {
169901
+ init_SuperConverter_CCgGAnXY_es();
169440
169902
  init_uuid_B2wVPhPi_es();
169441
169903
  init_constants_D9qj59G2_es();
169442
169904
  init_dist_B8HfvhaK_es();
@@ -224126,7 +224588,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
224126
224588
  init_remark_gfm_BhnWr3yf_es();
224127
224589
  });
224128
224590
 
224129
- // ../../packages/superdoc/dist/chunks/src-DhR654Bl.es.js
224591
+ // ../../packages/superdoc/dist/chunks/src-BB0n1coY.es.js
224130
224592
  function deleteProps(obj, propOrProps) {
224131
224593
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
224132
224594
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -275079,10 +275541,10 @@ function clickToPositionGeometry(layout, blocks2, measures, containerPoint, opti
275079
275541
  lineIndex
275080
275542
  };
275081
275543
  }
275082
- const firstRun = cellBlock.runs?.[0];
275083
- if (firstRun && firstRun.pmStart != null)
275544
+ const fallbackPos = cellBlock.runs?.[0]?.pmStart ?? blockPmRangeFromAttrs(cellBlock).pmStart;
275545
+ if (fallbackPos != null)
275084
275546
  return {
275085
- pos: firstRun.pmStart,
275547
+ pos: fallbackPos,
275086
275548
  layoutEpoch,
275087
275549
  blockId: tableHit.fragment.blockId,
275088
275550
  pageIndex,
@@ -275143,6 +275605,15 @@ function percentile(sortedValues, p$12) {
275143
275605
  const weight = index2 - lower;
275144
275606
  return sortedValues[lower] * (1 - weight) + sortedValues[upper] * weight;
275145
275607
  }
275608
+ function pushEmptyLineSelectionBand(rects, opts) {
275609
+ rects.push({
275610
+ x: opts.x,
275611
+ y: opts.y,
275612
+ width: Math.max(1, opts.width),
275613
+ height: opts.height,
275614
+ pageIndex: opts.pageIndex
275615
+ });
275616
+ }
275146
275617
  function selectionToRects(layout, blocks2, measures, from$1, to, geometryHelper) {
275147
275618
  if (from$1 === to)
275148
275619
  return [];
@@ -275169,8 +275640,17 @@ function selectionToRects(layout, blocks2, measures, from$1, to, geometryHelper)
275169
275640
  return;
275170
275641
  const sliceFrom = Math.max(range.pmStart, from$1);
275171
275642
  const sliceTo = Math.min(range.pmEnd, to);
275172
- if (sliceFrom >= sliceTo)
275643
+ if (sliceFrom >= sliceTo) {
275644
+ const emptyLineOffset = lineHeightBeforeIndex$1(measure, index2) - lineHeightBeforeIndex$1(measure, fragment.fromLine);
275645
+ pushEmptyLineSelectionBand(rects, {
275646
+ x: fragment.x,
275647
+ y: fragment.y + emptyLineOffset + pageTopY,
275648
+ width: fragment.width,
275649
+ height: line.lineHeight,
275650
+ pageIndex
275651
+ });
275173
275652
  return;
275653
+ }
275174
275654
  pmPosToCharOffset(block, line, sliceFrom);
275175
275655
  pmPosToCharOffset(block, line, sliceTo);
275176
275656
  const visualCharOffsetFrom = pmPosToVisualCharOffset(block, line, sliceFrom);
@@ -275348,8 +275828,17 @@ function selectionToRects(layout, blocks2, measures, from$1, to, geometryHelper)
275348
275828
  return;
275349
275829
  const sliceFrom = Math.max(range.pmStart, from$1);
275350
275830
  const sliceTo = Math.min(range.pmEnd, to);
275351
- if (sliceFrom >= sliceTo)
275831
+ if (sliceFrom >= sliceTo) {
275832
+ const emptyLineOffset = lineHeightBeforeIndex$1(info.measure, index2) - lineHeightBeforeIndex$1(info.measure, info.startLine);
275833
+ pushEmptyLineSelectionBand(rects, {
275834
+ x: fragment.x + contentOffsetX + cellX + padding.left,
275835
+ y: fragment.y + contentOffsetY + rowOffset + blockTopCursor + effectiveSpacingBeforePx + emptyLineOffset + pageTopY,
275836
+ width: cellMeasure.width - padding.left - padding.right,
275837
+ height: line.lineHeight,
275838
+ pageIndex
275839
+ });
275352
275840
  return;
275841
+ }
275353
275842
  pmPosToCharOffset(info.block, line, sliceFrom);
275354
275843
  pmPosToCharOffset(info.block, line, sliceTo);
275355
275844
  const visualCharOffsetFrom = pmPosToVisualCharOffset(info.block, line, sliceFrom);
@@ -275678,6 +276167,57 @@ function calculateExtendedSelection(blocks2, anchor, head, mode) {
275678
276167
  selHead: head
275679
276168
  };
275680
276169
  }
276170
+ function selectionCollapsesAcrossTableCells(doc$12, anchor, head) {
276171
+ if (anchor === head)
276172
+ return false;
276173
+ try {
276174
+ const size$1 = doc$12.content.size;
276175
+ if (anchor < 0 || head < 0 || anchor > size$1 || head > size$1)
276176
+ return false;
276177
+ const $from = doc$12.resolve(Math.min(anchor, head));
276178
+ const $to = doc$12.resolve(Math.max(anchor, head));
276179
+ const cellAncestor = (pos) => {
276180
+ for (let depth = pos.depth;depth > 0; depth--) {
276181
+ const role = pos.node(depth).type.spec.tableRole;
276182
+ if (role === "cell" || role === "header_cell")
276183
+ return pos.node(depth);
276184
+ }
276185
+ return null;
276186
+ };
276187
+ return cellAncestor($from) !== cellAncestor($to) && $to.parentOffset === 0;
276188
+ } catch {
276189
+ return false;
276190
+ }
276191
+ }
276192
+ function stabilizeTextSelectionAcrossTableCells(doc$12, anchor, head) {
276193
+ if (!selectionCollapsesAcrossTableCells(doc$12, anchor, head))
276194
+ return {
276195
+ selAnchor: anchor,
276196
+ selHead: head
276197
+ };
276198
+ try {
276199
+ const anchorIsUpper = anchor > head;
276200
+ const upperPos = anchorIsUpper ? anchor : head;
276201
+ if (upperPos < 0 || upperPos >= doc$12.content.size)
276202
+ return null;
276203
+ const $upper = doc$12.resolve(upperPos);
276204
+ if (!$upper.parent.inlineContent || $upper.parent.content.size !== 0)
276205
+ return null;
276206
+ const stabilizedUpperPos = upperPos + 1;
276207
+ if (stabilizedUpperPos > doc$12.content.size)
276208
+ return null;
276209
+ const selAnchor = anchorIsUpper ? stabilizedUpperPos : anchor;
276210
+ const selHead = anchorIsUpper ? head : stabilizedUpperPos;
276211
+ if (selectionCollapsesAcrossTableCells(doc$12, selAnchor, selHead))
276212
+ return null;
276213
+ return {
276214
+ selAnchor,
276215
+ selHead
276216
+ };
276217
+ } catch {
276218
+ return null;
276219
+ }
276220
+ }
275681
276221
  function registerPointerClick(event, previous3, options) {
275682
276222
  const time3 = event.timeStamp ?? performance.now();
275683
276223
  const withinTime = time3 - previous3.lastClickTime <= options.timeThresholdMs;
@@ -276093,14 +276633,16 @@ function computeSelectionRectsFromDom(options, from$1, to) {
276093
276633
  missingEntries.push(entry);
276094
276634
  }
276095
276635
  } catch {}
276096
- if (missingEntries && missingEntries.length > 0) {
276636
+ const spansMultipleLines = countDistinctLines(pageEntries) > 1;
276637
+ if (spansMultipleLines || missingEntries && missingEntries.length > 0) {
276097
276638
  if (isVerbose)
276098
- debugLog("verbose", `DOM selection rects: range missing entries ${JSON.stringify({
276639
+ debugLog("verbose", `DOM selection rects: switching to per-line rects ${JSON.stringify({
276099
276640
  pageIndex,
276100
276641
  sliceFrom,
276101
276642
  sliceTo,
276102
- missingCount: missingEntries.length,
276103
- missingPreview: missingEntries.slice(0, 20).map(entryDebugInfo)
276643
+ spansMultipleLines,
276644
+ missingCount: missingEntries?.length ?? 0,
276645
+ missingPreview: (missingEntries ?? []).slice(0, 20).map(entryDebugInfo)
276104
276646
  })}`);
276105
276647
  rawRects = collectClientRectsByLine(doc$12, pageEntries, sliceFrom, sliceTo);
276106
276648
  if (dumpRects)
@@ -276170,10 +276712,17 @@ function collectClientRectsByLine(doc$12, entries, sliceFrom, sliceTo) {
276170
276712
  else
276171
276713
  lineMap.set(lineEl, [entry]);
276172
276714
  }
276173
- for (const [, lineEntries] of lineMap) {
276715
+ for (const [lineEl, lineEntries] of lineMap) {
276174
276716
  lineEntries.sort((a2, b$1) => a2.pmStart - b$1.pmStart !== 0 ? a2.pmStart - b$1.pmStart : a2.pmEnd - b$1.pmEnd);
276175
276717
  const linePmStart = lineEntries[0]?.pmStart ?? Infinity;
276176
276718
  const linePmEnd = lineEntries[lineEntries.length - 1]?.pmEnd ?? -Infinity;
276719
+ if (sliceFrom < linePmStart && linePmEnd < sliceTo && lineEl.isConnected) {
276720
+ const boxRect = lineEl.getBoundingClientRect();
276721
+ if (boxRect.width > 0 && boxRect.height > 0) {
276722
+ rects.push(boxRect);
276723
+ continue;
276724
+ }
276725
+ }
276177
276726
  if (!Number.isFinite(linePmStart) || !Number.isFinite(linePmEnd) || linePmEnd <= linePmStart)
276178
276727
  continue;
276179
276728
  const lineFrom = Math.max(sliceFrom, linePmStart);
@@ -276211,6 +276760,18 @@ function collectClientRectsByLine(doc$12, entries, sliceFrom, sliceTo) {
276211
276760
  }
276212
276761
  return rects;
276213
276762
  }
276763
+ function countDistinctLines(entries) {
276764
+ const lines = /* @__PURE__ */ new Set;
276765
+ let hasLoose = false;
276766
+ for (const entry of entries) {
276767
+ const lineEl = entry.el.closest(".superdoc-line");
276768
+ if (lineEl)
276769
+ lines.add(lineEl);
276770
+ else
276771
+ hasLoose = true;
276772
+ }
276773
+ return lines.size + (hasLoose ? 1 : 0);
276774
+ }
276214
276775
  function setDomRangeStart(range, entry, pos) {
276215
276776
  const el = entry.el;
276216
276777
  const pmStart = entry.pmStart;
@@ -277546,6 +278107,94 @@ function resolvePointerPositionHit(options) {
277546
278107
  }
277547
278108
  return clickToPositionGeometry(layout, blocks2, measures, containerPoint, { geometryHelper });
277548
278109
  }
278110
+ function getTableBlocks(blocks2) {
278111
+ return blocks2.filter((block) => block.kind === "table");
278112
+ }
278113
+ function getTopLevelTablePosByIndex(doc$12, targetTableIndex) {
278114
+ if (!Number.isInteger(targetTableIndex) || targetTableIndex < 0)
278115
+ return null;
278116
+ let tablePos = null;
278117
+ let currentTableIndex = 0;
278118
+ doc$12.descendants((node2, pos) => {
278119
+ if (tablePos !== null)
278120
+ return false;
278121
+ if (node2.type.name !== "table")
278122
+ return true;
278123
+ if (currentTableIndex === targetTableIndex)
278124
+ tablePos = pos;
278125
+ currentTableIndex += 1;
278126
+ return false;
278127
+ });
278128
+ return tablePos;
278129
+ }
278130
+ function getTopLevelTableIndexAtPos(doc$12, targetTablePos) {
278131
+ if (!Number.isFinite(targetTablePos) || targetTablePos < 0 || targetTablePos > doc$12.content.size)
278132
+ return null;
278133
+ let tableIndex = null;
278134
+ let currentTableIndex = 0;
278135
+ doc$12.descendants((node2, pos) => {
278136
+ if (tableIndex !== null)
278137
+ return false;
278138
+ if (node2.type.name !== "table")
278139
+ return true;
278140
+ if (pos === targetTablePos)
278141
+ tableIndex = currentTableIndex;
278142
+ currentTableIndex += 1;
278143
+ return false;
278144
+ });
278145
+ return tableIndex;
278146
+ }
278147
+ function getCellCoordinatesFromCellPos(doc$12, tablePos, cellPos) {
278148
+ const tableNode = doc$12.nodeAt(tablePos);
278149
+ if (!tableNode || tableNode.type.name !== "table")
278150
+ return null;
278151
+ let rowPos = tablePos + 1;
278152
+ for (let rowIndex = 0;rowIndex < tableNode.childCount; rowIndex += 1) {
278153
+ const rowNode = tableNode.child(rowIndex);
278154
+ let currentCellPos = rowPos + 1;
278155
+ for (let cellColIndex = 0;cellColIndex < rowNode.childCount; cellColIndex += 1) {
278156
+ if (currentCellPos === cellPos)
278157
+ return {
278158
+ rowIndex,
278159
+ cellColIndex
278160
+ };
278161
+ currentCellPos += rowNode.child(cellColIndex).nodeSize;
278162
+ }
278163
+ rowPos += rowNode.nodeSize;
278164
+ }
278165
+ return null;
278166
+ }
278167
+ function getTopLevelTableBlockAtPos(doc$12, blocks2, tablePos) {
278168
+ if (!doc$12)
278169
+ return null;
278170
+ const tableIndex = getTopLevelTableIndexAtPos(doc$12, tablePos);
278171
+ if (tableIndex === null)
278172
+ return null;
278173
+ return getTableBlocks(blocks2)[tableIndex] ?? null;
278174
+ }
278175
+ function resolveCellAnchorStateFromCellPos(doc$12, blocks2, cellPos) {
278176
+ if (!doc$12 || !Number.isFinite(cellPos) || cellPos < 0 || cellPos > doc$12.content.size)
278177
+ return null;
278178
+ const tableRole = doc$12.nodeAt(cellPos)?.type.spec.tableRole;
278179
+ if (tableRole !== "cell" && tableRole !== "header_cell")
278180
+ return null;
278181
+ const context = resolveCellContext(doc$12, Math.min(cellPos + 1, doc$12.content.size));
278182
+ if (!context || context.cellPos !== cellPos)
278183
+ return null;
278184
+ const tableBlock = getTopLevelTableBlockAtPos(doc$12, blocks2, context.tablePos);
278185
+ if (!tableBlock)
278186
+ return null;
278187
+ const cellCoordinates = getCellCoordinatesFromCellPos(doc$12, context.tablePos, cellPos);
278188
+ if (!cellCoordinates)
278189
+ return null;
278190
+ return {
278191
+ tablePos: context.tablePos,
278192
+ cellPos,
278193
+ tableBlockId: tableBlock.id,
278194
+ cellRowIndex: cellCoordinates.rowIndex,
278195
+ cellColIndex: cellCoordinates.cellColIndex
278196
+ };
278197
+ }
277549
278198
  function getCellPosFromTableHit(tableHit, doc$12, blocks2) {
277550
278199
  if (!tableHit || !tableHit.block || typeof tableHit.block.id !== "string") {
277551
278200
  console.warn("[getCellPosFromTableHit] Invalid tableHit input:", tableHit);
@@ -277560,22 +278209,12 @@ function getCellPosFromTableHit(tableHit, doc$12, blocks2) {
277560
278209
  }
277561
278210
  if (!doc$12)
277562
278211
  return null;
277563
- const targetTableIndex = blocks2.filter((b$1) => b$1.kind === "table").findIndex((b$1) => b$1.id === tableHit.block.id);
278212
+ const targetTableIndex = getTableBlocks(blocks2).findIndex((b$1) => b$1.id === tableHit.block.id);
277564
278213
  if (targetTableIndex === -1)
277565
278214
  return null;
277566
278215
  let tablePos = null;
277567
- let currentTableIndex = 0;
277568
278216
  try {
277569
- doc$12.descendants((node2, pos) => {
277570
- if (node2.type.name === "table") {
277571
- if (currentTableIndex === targetTableIndex) {
277572
- tablePos = pos;
277573
- return false;
277574
- }
277575
- currentTableIndex++;
277576
- }
277577
- return true;
277578
- });
278217
+ tablePos = getTopLevelTablePosByIndex(doc$12, targetTableIndex);
277579
278218
  } catch (error48) {
277580
278219
  console.error("[getCellPosFromTableHit] Error during document traversal:", error48);
277581
278220
  return null;
@@ -277623,22 +278262,51 @@ function getCellPosFromTableHit(tableHit, doc$12, blocks2) {
277623
278262
  function getTablePosFromHit(tableHit, doc$12, blocks2) {
277624
278263
  if (!doc$12)
277625
278264
  return null;
277626
- const targetTableIndex = blocks2.filter((b$1) => b$1.kind === "table").findIndex((b$1) => b$1.id === tableHit.block.id);
278265
+ const targetTableIndex = getTableBlocks(blocks2).findIndex((b$1) => b$1.id === tableHit.block.id);
277627
278266
  if (targetTableIndex === -1)
277628
278267
  return null;
277629
- let tablePos = null;
277630
- let currentTableIndex = 0;
277631
- doc$12.descendants((node2, pos) => {
277632
- if (node2.type.name === "table") {
277633
- if (currentTableIndex === targetTableIndex) {
277634
- tablePos = pos;
277635
- return false;
277636
- }
277637
- currentTableIndex++;
278268
+ return getTopLevelTablePosByIndex(doc$12, targetTableIndex);
278269
+ }
278270
+ function resolveCellContext(doc$12, pos) {
278271
+ if (!doc$12 || !Number.isFinite(pos) || pos < 0 || pos > doc$12.content.size)
278272
+ return null;
278273
+ let $pos;
278274
+ try {
278275
+ $pos = doc$12.resolve(pos);
278276
+ } catch {
278277
+ return null;
278278
+ }
278279
+ let cellDepth = -1;
278280
+ let tableDepth = -1;
278281
+ for (let depth = $pos.depth;depth > 0; depth--) {
278282
+ const role = $pos.node(depth).type.spec.tableRole;
278283
+ if (cellDepth === -1 && (role === "cell" || role === "header_cell"))
278284
+ cellDepth = depth;
278285
+ if (cellDepth !== -1 && role === "table") {
278286
+ tableDepth = depth;
278287
+ break;
277638
278288
  }
277639
- return true;
277640
- });
277641
- return tablePos;
278289
+ }
278290
+ if (cellDepth === -1 || tableDepth === -1)
278291
+ return null;
278292
+ return {
278293
+ cellPos: $pos.before(cellDepth),
278294
+ tablePos: $pos.before(tableDepth)
278295
+ };
278296
+ }
278297
+ function resolveCrossCellSelection(doc$12, anchorPos, headPos) {
278298
+ const anchor = resolveCellContext(doc$12, anchorPos);
278299
+ const head = resolveCellContext(doc$12, headPos);
278300
+ if (!anchor || !head)
278301
+ return null;
278302
+ if (anchor.tablePos !== head.tablePos)
278303
+ return null;
278304
+ if (anchor.cellPos === head.cellPos)
278305
+ return null;
278306
+ return {
278307
+ anchorCellPos: anchor.cellPos,
278308
+ headCellPos: head.cellPos
278309
+ };
277642
278310
  }
277643
278311
  function shouldUseCellSelection(currentTableHit, cellAnchor, cellDragMode) {
277644
278312
  if (!cellAnchor)
@@ -278101,15 +278769,8 @@ function renderCellSelectionOverlay({ selection, layout, localSelectionLayer, bl
278101
278769
  let tableBlock;
278102
278770
  if (cellAnchorTableBlockId)
278103
278771
  tableBlock = blocks2.find((block) => block.kind === "table" && block.id === cellAnchorTableBlockId);
278104
- if (!tableBlock) {
278105
- const expectedBlockId = `${tableStart}-table`;
278106
- tableBlock = blocks2.find((block) => block.kind === "table" && block.id === expectedBlockId);
278107
- }
278108
- if (!tableBlock) {
278109
- const tableBlocks = blocks2.filter((block) => block.kind === "table");
278110
- if (tableBlocks.length === 1)
278111
- tableBlock = tableBlocks[0];
278112
- }
278772
+ if (!tableBlock)
278773
+ tableBlock = getTopLevelTableBlockAtPos($anchorCell.node(0), blocks2, tableStart) ?? undefined;
278113
278774
  if (!tableBlock)
278114
278775
  return;
278115
278776
  const tableFragments = [];
@@ -316915,18 +317576,45 @@ menclose::after {
316915
317576
  const layoutState = this.#deps?.getLayoutState();
316916
317577
  return getTablePosFromHit(tableHit, editor?.state?.doc ?? null, layoutState?.blocks ?? []);
316917
317578
  }
317579
+ #setCellAnchorState(cellAnchor, mode = "pending") {
317580
+ this.#cellAnchor = cellAnchor;
317581
+ this.#cellDragMode = mode;
317582
+ }
316918
317583
  #setCellAnchor(tableHit, tablePos) {
316919
317584
  const cellPos = this.#getCellPosFromTableHit(tableHit);
316920
317585
  if (cellPos === null)
316921
317586
  return;
316922
- this.#cellAnchor = {
317587
+ this.#setCellAnchorState({
316923
317588
  tablePos,
316924
317589
  cellPos,
316925
317590
  cellRowIndex: tableHit.cellRowIndex,
316926
317591
  cellColIndex: tableHit.cellColIndex,
316927
317592
  tableBlockId: tableHit.block.id
316928
- };
316929
- this.#cellDragMode = "pending";
317593
+ }, "pending");
317594
+ }
317595
+ #setCellAnchorFromCellPos(cellPos, mode = "pending") {
317596
+ const editor = this.#deps?.getEditor();
317597
+ const layoutState = this.#deps?.getLayoutState();
317598
+ const cellAnchor = resolveCellAnchorStateFromCellPos(editor?.state?.doc ?? null, layoutState?.blocks ?? [], cellPos);
317599
+ if (!cellAnchor)
317600
+ return false;
317601
+ this.#setCellAnchorState(cellAnchor, mode);
317602
+ return true;
317603
+ }
317604
+ #dispatchExtendedTextSelection(editor, anchor, head) {
317605
+ const { selAnchor, selHead } = this.#calculateExtendedSelection(anchor, head, this.#dragExtensionMode);
317606
+ const stabilized = stabilizeTextSelectionAcrossTableCells(editor.state.doc, selAnchor, selHead);
317607
+ if (!stabilized)
317608
+ return false;
317609
+ try {
317610
+ const tr = editor.state.tr.setSelection(TextSelection.create(editor.state.doc, stabilized.selAnchor, stabilized.selHead));
317611
+ editor.view?.dispatch(tr);
317612
+ this.#callbacks.scheduleSelectionUpdate?.();
317613
+ return true;
317614
+ } catch (error48) {
317615
+ console.warn("[SELECTION] Failed to extend text selection:", error48);
317616
+ return false;
317617
+ }
316930
317618
  }
316931
317619
  #hitTestTable(x, y$1) {
316932
317620
  return this.#callbacks.hitTestTable?.(x, y$1) ?? null;
@@ -317528,6 +318216,8 @@ menclose::after {
317528
318216
  this.#pendingMarginClick = null;
317529
318217
  const dragAnchor = this.#dragAnchor;
317530
318218
  const dragMode = this.#dragExtensionMode;
318219
+ if ((!pendingMarginClick || pendingMarginClick.pointerId !== event.pointerId) && dragAnchor != null && this.#dragThresholdExceeded)
318220
+ this.#handleDragSelectionAt(event.clientX, event.clientY);
317531
318221
  const dragUsedFallback = this.#dragUsedPageNotMountedFallback;
317532
318222
  const dragPointer = this.#dragLastPointer;
317533
318223
  this.#isDragging = false;
@@ -318010,14 +318700,7 @@ menclose::after {
318010
318700
  if (!editor)
318011
318701
  return;
318012
318702
  const anchor = editor.state.selection.anchor;
318013
- const { selAnchor, selHead } = this.#calculateExtendedSelection(anchor, headPos, this.#dragExtensionMode);
318014
- try {
318015
- const tr = editor.state.tr.setSelection(TextSelection.create(editor.state.doc, selAnchor, selHead));
318016
- editor.view?.dispatch(tr);
318017
- this.#callbacks.scheduleSelectionUpdate?.();
318018
- } catch (error48) {
318019
- console.warn("[SELECTION] Failed to extend selection on shift+click:", error48);
318020
- }
318703
+ this.#dispatchExtendedTextSelection(editor, anchor, headPos);
318021
318704
  this.#focusEditor();
318022
318705
  }
318023
318706
  #handleDragSelectionAt(clientX, clientY) {
@@ -318078,17 +318761,28 @@ menclose::after {
318078
318761
  }
318079
318762
  const anchor = this.#dragAnchor;
318080
318763
  const head = hit.pos;
318081
- const { selAnchor, selHead } = this.#calculateExtendedSelection(anchor, head, this.#dragExtensionMode);
318082
- try {
318083
- const tr = editor.state.tr.setSelection(TextSelection.create(editor.state.doc, selAnchor, selHead));
318084
- editor.view?.dispatch(tr);
318085
- this.#callbacks.scheduleSelectionUpdate?.();
318086
- } catch (error48) {
318087
- console.warn("[SELECTION] Failed to extend selection during drag:", error48);
318764
+ if (!useActiveSurfaceHitTest) {
318765
+ const crossCell = resolveCrossCellSelection(editor.state.doc, anchor, head);
318766
+ if (crossCell)
318767
+ try {
318768
+ const tr = editor.state.tr.setSelection(CellSelection.create(editor.state.doc, crossCell.anchorCellPos, crossCell.headCellPos));
318769
+ editor.view?.dispatch(tr);
318770
+ if (!this.#setCellAnchorFromCellPos(crossCell.anchorCellPos, "active"))
318771
+ console.warn("[CELL-SELECTION] Failed to cache anchor state for cross-cell drag selection.");
318772
+ this.#callbacks.scheduleSelectionUpdate?.();
318773
+ return;
318774
+ } catch (error48) {
318775
+ console.warn("[SELECTION] Failed to create cross-cell CellSelection during drag:", error48);
318776
+ }
318088
318777
  }
318778
+ this.#dispatchExtendedTextSelection(editor, anchor, head);
318089
318779
  }
318090
318780
  #handleCellDragSelection(currentTableHit, hit) {
318091
- const headCellPos = currentTableHit ? this.#getCellPosFromTableHit(currentTableHit) : null;
318781
+ if (!this.#cellAnchor)
318782
+ return;
318783
+ if (!currentTableHit || currentTableHit.block.id !== this.#cellAnchor.tableBlockId)
318784
+ return;
318785
+ const headCellPos = this.#getCellPosFromTableHit(currentTableHit);
318092
318786
  if (headCellPos === null)
318093
318787
  return;
318094
318788
  if (this.#cellDragMode !== "active")
@@ -318108,13 +318802,7 @@ menclose::after {
318108
318802
  } catch (error48) {
318109
318803
  console.warn("[CELL-SELECTION] Failed to create CellSelection, falling back to TextSelection:", error48);
318110
318804
  const anchor = this.#dragAnchor;
318111
- const head = hit.pos;
318112
- const { selAnchor, selHead } = this.#calculateExtendedSelection(anchor, head, this.#dragExtensionMode);
318113
- try {
318114
- const tr = editor.state.tr.setSelection(TextSelection.create(editor.state.doc, selAnchor, selHead));
318115
- editor.view?.dispatch(tr);
318116
- this.#callbacks.scheduleSelectionUpdate?.();
318117
- } catch {}
318805
+ this.#dispatchExtendedTextSelection(editor, anchor, hit.pos);
318118
318806
  }
318119
318807
  }
318120
318808
  #handleHover(normalized) {
@@ -321999,13 +322687,13 @@ menclose::after {
321999
322687
  return;
322000
322688
  console.log(...args$1);
322001
322689
  }, HEADER_FOOTER_INIT_BUDGET_MS = 200, MAX_ZOOM_WARNING_THRESHOLD = 10, MAX_SELECTION_RECTS_PER_USER = 100, SEMANTIC_RESIZE_DEBOUNCE_MS = 120, MIN_SEMANTIC_CONTENT_WIDTH_PX = 1, GLOBAL_PERFORMANCE, PresentationEditor, ICONS, TEXTS, tableActionsOptions, TRACKED_MARK_NAMES;
322002
- var init_src_DhR654Bl_es = __esm(() => {
322690
+ var init_src_BB0n1coY_es = __esm(() => {
322003
322691
  init_rolldown_runtime_Bg48TavK_es();
322004
- init_SuperConverter_CLuVUp7o_es();
322692
+ init_SuperConverter_CCgGAnXY_es();
322005
322693
  init_jszip_C49i9kUs_es();
322006
322694
  init_xml_js_CqGKpaft_es();
322007
322695
  init_uuid_B2wVPhPi_es();
322008
- init_create_headless_toolbar_Dga1mSBS_es();
322696
+ init_create_headless_toolbar_BvrKiWf0_es();
322009
322697
  init_constants_D9qj59G2_es();
322010
322698
  init_dist_B8HfvhaK_es();
322011
322699
  init_unified_Dsuw2be5_es();
@@ -356414,14 +357102,17 @@ function print() { __p += __j.call(arguments, '') }
356414
357102
  return;
356415
357103
  }
356416
357104
  const head = Math.max(0, Math.min(mappedHead.pos, doc$12.content.size));
356417
- const { selAnchor, selHead } = this.#calculateExtendedSelection(anchor, head, mode);
357105
+ const extended = this.#calculateExtendedSelection(anchor, head, mode);
357106
+ const stabilized = stabilizeTextSelectionAcrossTableCells(doc$12, extended.selAnchor, extended.selHead);
357107
+ if (!stabilized)
357108
+ return;
356418
357109
  const current = this.#editor.state.selection;
356419
- const desiredFrom = Math.min(selAnchor, selHead);
356420
- const desiredTo = Math.max(selAnchor, selHead);
357110
+ const desiredFrom = Math.min(stabilized.selAnchor, stabilized.selHead);
357111
+ const desiredTo = Math.max(stabilized.selAnchor, stabilized.selHead);
356421
357112
  if (current.from === desiredFrom && current.to === desiredTo)
356422
357113
  return;
356423
357114
  try {
356424
- const tr = this.#editor.state.tr.setSelection(TextSelection.create(this.#editor.state.doc, selAnchor, selHead));
357115
+ const tr = this.#editor.state.tr.setSelection(TextSelection.create(this.#editor.state.doc, stabilized.selAnchor, stabilized.selHead));
356425
357116
  this.#editor.view?.dispatch(tr);
356426
357117
  this.#scheduleSelectionUpdate();
356427
357118
  } catch {}
@@ -357787,11 +358478,11 @@ function print() { __p += __j.call(arguments, '') }
357787
358478
  ]);
357788
358479
  });
357789
358480
 
357790
- // ../../packages/superdoc/dist/chunks/create-super-doc-ui-DEBNcUWy.es.js
358481
+ // ../../packages/superdoc/dist/chunks/create-super-doc-ui-C_J_pCF0.es.js
357791
358482
  var DEFAULT_TEXT_ALIGN_OPTIONS, DEFAULT_LINE_HEIGHT_OPTIONS, DEFAULT_ZOOM_OPTIONS, DEFAULT_DOCUMENT_MODE_OPTIONS, DEFAULT_FONT_SIZE_OPTIONS, headlessToolbarConstants, MOD_ALIASES, ALT_ALIASES, CTRL_ALIASES, SHIFT_ALIASES, BUILTIN_CONTEXT_MENU_GROUPS, BUILTIN_GROUP_ORDER, RESERVED_PROXY_PROPERTY_NAMES, ALL_TOOLBAR_COMMAND_IDS, EMPTY_ACTIVE_IDS, FONT_SIZE_OPTIONS;
357792
- var init_create_super_doc_ui_DEBNcUWy_es = __esm(() => {
357793
- init_SuperConverter_CLuVUp7o_es();
357794
- init_create_headless_toolbar_Dga1mSBS_es();
358483
+ var init_create_super_doc_ui_C_J_pCF0_es = __esm(() => {
358484
+ init_SuperConverter_CCgGAnXY_es();
358485
+ init_create_headless_toolbar_BvrKiWf0_es();
357795
358486
  DEFAULT_TEXT_ALIGN_OPTIONS = [
357796
358487
  {
357797
358488
  label: "Left",
@@ -358082,16 +358773,16 @@ var init_zipper_yaJVJ4z9_es = __esm(() => {
358082
358773
 
358083
358774
  // ../../packages/superdoc/dist/super-editor.es.js
358084
358775
  var init_super_editor_es = __esm(() => {
358085
- init_src_DhR654Bl_es();
358086
- init_SuperConverter_CLuVUp7o_es();
358776
+ init_src_BB0n1coY_es();
358777
+ init_SuperConverter_CCgGAnXY_es();
358087
358778
  init_jszip_C49i9kUs_es();
358088
358779
  init_xml_js_CqGKpaft_es();
358089
- init_create_headless_toolbar_Dga1mSBS_es();
358780
+ init_create_headless_toolbar_BvrKiWf0_es();
358090
358781
  init_constants_D9qj59G2_es();
358091
358782
  init_dist_B8HfvhaK_es();
358092
358783
  init_unified_Dsuw2be5_es();
358093
358784
  init_DocxZipper_FUsfThjV_es();
358094
- init_create_super_doc_ui_DEBNcUWy_es();
358785
+ init_create_super_doc_ui_C_J_pCF0_es();
358095
358786
  init_ui_C5PAS9hY_es();
358096
358787
  init_eventemitter3_BnGqBE_Q_es();
358097
358788
  init_errors_CNaD6vcg_es();
@@ -459775,7 +460466,7 @@ var init_exporter = __esm(() => {
459775
460466
  // ../../shared/font-system/src/types.ts
459776
460467
  var init_types8 = () => {};
459777
460468
 
459778
- // ../../node_modules/.pnpm/@docfonts+fallbacks@0.15.0/node_modules/@docfonts/fallbacks/dist/data.js
460469
+ // ../../node_modules/.pnpm/@docfonts+fallbacks@0.16.0/node_modules/@docfonts/fallbacks/dist/data.js
459779
460470
  var SUBSTITUTION_EVIDENCE2;
459780
460471
  var init_data = __esm(() => {
459781
460472
  SUBSTITUTION_EVIDENCE2 = [
@@ -459887,6 +460578,64 @@ var init_data = __esm(() => {
459887
460578
  },
459888
460579
  candidateLicense: "OFL-1.1"
459889
460580
  },
460581
+ {
460582
+ evidenceId: "arial-mt",
460583
+ generic: "sans-serif",
460584
+ logicalFamily: "Arial MT",
460585
+ physicalFamily: "Liberation Sans",
460586
+ verdict: "metric_safe",
460587
+ faces: {
460588
+ regular: true,
460589
+ bold: true,
460590
+ italic: true,
460591
+ boldItalic: true
460592
+ },
460593
+ gates: {
460594
+ static: "pass",
460595
+ metric: "pass",
460596
+ layout: "not_run",
460597
+ ship: "pass"
460598
+ },
460599
+ policyAction: "substitute",
460600
+ measurementRefs: [
460601
+ "arial-mt_regular__liberation-sans#regular#w400#analytic_advance#2026-06-10",
460602
+ "arial-mt_bold__liberation-sans#bold#w700#analytic_advance#2026-06-10",
460603
+ "arial-mt_italic__liberation-sans#italic#w400#analytic_advance#2026-06-10",
460604
+ "arial-mt_boldItalic__liberation-sans#boldItalic#w700#analytic_advance#2026-06-10"
460605
+ ],
460606
+ exportRule: "preserve_original_name",
460607
+ advance: {
460608
+ basis: "latin_text",
460609
+ meanDelta: 0,
460610
+ maxDelta: 0
460611
+ },
460612
+ candidateLicense: "OFL-1.1"
460613
+ },
460614
+ {
460615
+ evidenceId: "arial-unicode-ms",
460616
+ generic: "sans-serif",
460617
+ logicalFamily: "Arial Unicode MS",
460618
+ physicalFamily: null,
460619
+ verdict: "customer_supplied",
460620
+ faces: {
460621
+ regular: false,
460622
+ bold: false,
460623
+ italic: false,
460624
+ boldItalic: false
460625
+ },
460626
+ gates: {
460627
+ static: "not_run",
460628
+ metric: "not_run",
460629
+ layout: "not_run",
460630
+ ship: "not_run"
460631
+ },
460632
+ policyAction: "customer_supplied",
460633
+ measurementRefs: [
460634
+ "arial-unicode-ms#broad_unicode_no_open_substitute#2026-06-10"
460635
+ ],
460636
+ exportRule: "preserve_original_name",
460637
+ candidateLicense: null
460638
+ },
459890
460639
  {
459891
460640
  evidenceId: "times-new-roman",
459892
460641
  generic: "serif",
@@ -459917,6 +460666,53 @@ var init_data = __esm(() => {
459917
460666
  },
459918
460667
  candidateLicense: "OFL-1.1"
459919
460668
  },
460669
+ {
460670
+ evidenceId: "times",
460671
+ generic: "serif",
460672
+ logicalFamily: "Times",
460673
+ physicalFamily: "Liberation Serif",
460674
+ verdict: "visual_only",
460675
+ faces: {
460676
+ regular: true,
460677
+ bold: true,
460678
+ italic: true,
460679
+ boldItalic: true
460680
+ },
460681
+ gates: {
460682
+ static: "pass",
460683
+ metric: "pass",
460684
+ layout: "not_run",
460685
+ ship: "pass"
460686
+ },
460687
+ policyAction: "substitute",
460688
+ measurementRefs: [
460689
+ "times_regular__liberation-serif#regular#w400#analytic_advance#2026-06-10",
460690
+ "times_bold__liberation-serif#bold#w700#analytic_advance#2026-06-10",
460691
+ "times_italic__liberation-serif#italic#w400#analytic_advance#2026-06-10",
460692
+ "times_boldItalic__liberation-serif#boldItalic#w700#analytic_advance#2026-06-10"
460693
+ ],
460694
+ exportRule: "preserve_original_name",
460695
+ advance: {
460696
+ basis: "latin_text",
460697
+ meanDelta: 0.00098877,
460698
+ maxDelta: 0.1171875
460699
+ },
460700
+ candidateLicense: "OFL-1.1",
460701
+ faceVerdicts: {
460702
+ regular: "metric_safe",
460703
+ bold: "metric_safe",
460704
+ italic: "metric_safe",
460705
+ boldItalic: "visual_only"
460706
+ },
460707
+ glyphExceptions: [
460708
+ {
460709
+ slot: "boldItalic",
460710
+ codepoint: 239,
460711
+ advanceDelta: 0.1172,
460712
+ note: "Times Bold Italic vs Liberation Serif Bold Italic: small i diaeresis (U+00EF) advance differs ~11.7%; lines containing it can reflow. Regular, bold, and italic faces are metric_safe on the text sample."
460713
+ }
460714
+ ]
460715
+ },
459920
460716
  {
459921
460717
  evidenceId: "courier-new",
459922
460718
  generic: "monospace",
@@ -459947,6 +460743,68 @@ var init_data = __esm(() => {
459947
460743
  },
459948
460744
  candidateLicense: "OFL-1.1"
459949
460745
  },
460746
+ {
460747
+ evidenceId: "courier",
460748
+ generic: "monospace",
460749
+ logicalFamily: "Courier",
460750
+ physicalFamily: "Liberation Mono",
460751
+ verdict: "visual_only",
460752
+ faces: {
460753
+ regular: true,
460754
+ bold: true,
460755
+ italic: true,
460756
+ boldItalic: true
460757
+ },
460758
+ gates: {
460759
+ static: "pass",
460760
+ metric: "fail",
460761
+ layout: "not_run",
460762
+ ship: "pass"
460763
+ },
460764
+ policyAction: "category_fallback",
460765
+ measurementRefs: [
460766
+ "courier__liberation-mono#monospace_cell#analytic_advance#2026-06-10"
460767
+ ],
460768
+ exportRule: "preserve_original_name",
460769
+ advance: {
460770
+ basis: "monospace_cell",
460771
+ meanDelta: 0.0016,
460772
+ maxDelta: 0.2002
460773
+ },
460774
+ candidateLicense: "OFL-1.1",
460775
+ faceVerdicts: {
460776
+ regular: "visual_only",
460777
+ bold: "visual_only",
460778
+ italic: "visual_only",
460779
+ boldItalic: "visual_only"
460780
+ },
460781
+ glyphExceptions: [
460782
+ {
460783
+ slot: "regular",
460784
+ codepoint: 176,
460785
+ advanceDelta: 0.2002,
460786
+ note: "Courier Regular vs Liberation Mono Regular: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
460787
+ },
460788
+ {
460789
+ slot: "bold",
460790
+ codepoint: 176,
460791
+ advanceDelta: 0.2002,
460792
+ note: "Courier Bold vs Liberation Mono Bold: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
460793
+ },
460794
+ {
460795
+ slot: "italic",
460796
+ codepoint: 176,
460797
+ advanceDelta: 0.2002,
460798
+ note: "Courier Italic vs Liberation Mono Italic: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
460799
+ },
460800
+ {
460801
+ slot: "boldItalic",
460802
+ codepoint: 176,
460803
+ advanceDelta: 0.2002,
460804
+ note: "Courier Bold Italic vs Liberation Mono Bold Italic: degree sign (U+00B0) advance differs ~20%; plus-minus (U+00B1) and division sign (U+00F7) also exceed the direct threshold."
460805
+ }
460806
+ ]
460807
+ },
459950
460808
  {
459951
460809
  evidenceId: "georgia",
459952
460810
  generic: "serif",
@@ -460281,6 +461139,54 @@ var init_data = __esm(() => {
460281
461139
  }
460282
461140
  ]
460283
461141
  },
461142
+ {
461143
+ evidenceId: "century-gothic",
461144
+ generic: "sans-serif",
461145
+ logicalFamily: "Century Gothic",
461146
+ physicalFamily: "URW Gothic",
461147
+ verdict: "visual_only",
461148
+ faces: {
461149
+ regular: true,
461150
+ bold: true,
461151
+ italic: true,
461152
+ boldItalic: true
461153
+ },
461154
+ gates: {
461155
+ static: "pass",
461156
+ metric: "fail",
461157
+ layout: "not_run",
461158
+ ship: "fail"
461159
+ },
461160
+ policyAction: "category_fallback",
461161
+ measurementRefs: [
461162
+ "century-gothic_regular__urw-gothic#regular#w400#analytic_advance#2026-06-10",
461163
+ "century-gothic_bold__urw-gothic#bold#w700#analytic_advance#2026-06-10",
461164
+ "century-gothic_italic__urw-gothic#italic#w400#analytic_advance#2026-06-10",
461165
+ "century-gothic_boldItalic__urw-gothic#boldItalic#w700#analytic_advance#2026-06-10",
461166
+ "century-gothic__urw-gothic#visual_review#2026-06-10"
461167
+ ],
461168
+ exportRule: "preserve_original_name",
461169
+ advance: {
461170
+ basis: "latin_text",
461171
+ meanDelta: 0.0013,
461172
+ maxDelta: 0.1662
461173
+ },
461174
+ candidateLicense: "AGPL-3.0-only WITH PS-or-PDF-font-exception-20170817",
461175
+ faceVerdicts: {
461176
+ regular: "visual_only",
461177
+ bold: "visual_only",
461178
+ italic: "visual_only",
461179
+ boldItalic: "visual_only"
461180
+ },
461181
+ glyphExceptions: [
461182
+ {
461183
+ slot: "regular",
461184
+ codepoint: 35,
461185
+ advanceDelta: 0.1662,
461186
+ note: "Century Gothic Regular vs URW Gothic Book: number sign (U+0023) advance differs ~16.6%; caret (U+005E) and plus-minus (U+00B1) also exceed the direct threshold. Body text is close, but not line-break safe."
461187
+ }
461188
+ ]
461189
+ },
460284
461190
  {
460285
461191
  evidenceId: "garamond",
460286
461192
  generic: "serif",
@@ -460411,6 +461317,47 @@ var init_data = __esm(() => {
460411
461317
  exportRule: "preserve_original_name",
460412
461318
  candidateLicense: "OFL-1.1"
460413
461319
  },
461320
+ {
461321
+ evidenceId: "segoe-ui",
461322
+ generic: "sans-serif",
461323
+ logicalFamily: "Segoe UI",
461324
+ physicalFamily: "Selawik",
461325
+ verdict: "visual_only",
461326
+ faces: {
461327
+ regular: true,
461328
+ bold: true,
461329
+ italic: false,
461330
+ boldItalic: false
461331
+ },
461332
+ faceSources: {
461333
+ italic: {
461334
+ kind: "synthetic",
461335
+ from: "regular"
461336
+ },
461337
+ boldItalic: {
461338
+ kind: "synthetic",
461339
+ from: "bold"
461340
+ }
461341
+ },
461342
+ gates: {
461343
+ static: "pass",
461344
+ metric: "fail",
461345
+ layout: "not_run",
461346
+ ship: "fail"
461347
+ },
461348
+ policyAction: "category_fallback",
461349
+ measurementRefs: [
461350
+ "segoe-ui__selawik#coverage_limited_advance_probe#2026-06-10"
461351
+ ],
461352
+ exportRule: "preserve_original_name",
461353
+ candidateLicense: "OFL-1.1",
461354
+ faceVerdicts: {
461355
+ regular: "visual_only",
461356
+ bold: "visual_only",
461357
+ italic: "visual_only",
461358
+ boldItalic: "visual_only"
461359
+ }
461360
+ },
460414
461361
  {
460415
461362
  evidenceId: "trebuchet-ms",
460416
461363
  generic: "sans-serif",
@@ -460638,6 +461585,191 @@ var init_data = __esm(() => {
460638
461585
  boldItalic: "visual_only"
460639
461586
  }
460640
461587
  },
461588
+ {
461589
+ evidenceId: "yu-mincho",
461590
+ generic: "serif",
461591
+ logicalFamily: "Yu Mincho",
461592
+ physicalFamily: "BIZ UDMincho",
461593
+ verdict: "visual_only",
461594
+ faces: {
461595
+ regular: true,
461596
+ bold: true,
461597
+ italic: false,
461598
+ boldItalic: false
461599
+ },
461600
+ faceSources: {
461601
+ italic: {
461602
+ kind: "synthetic",
461603
+ from: "regular"
461604
+ },
461605
+ boldItalic: {
461606
+ kind: "synthetic",
461607
+ from: "bold"
461608
+ }
461609
+ },
461610
+ gates: {
461611
+ static: "pass",
461612
+ metric: "fail",
461613
+ layout: "not_run",
461614
+ ship: "fail"
461615
+ },
461616
+ policyAction: "category_fallback",
461617
+ measurementRefs: [
461618
+ "yu-mincho_regular__biz-udmincho#regular#w400#cjk_jp_text#analytic_advance#2026-06-10"
461619
+ ],
461620
+ exportRule: "preserve_original_name",
461621
+ advance: {
461622
+ basis: "cjk_jp_text",
461623
+ meanDelta: 0.0425,
461624
+ maxDelta: 0.4829
461625
+ },
461626
+ candidateLicense: "OFL-1.1",
461627
+ faceVerdicts: {
461628
+ regular: "visual_only",
461629
+ bold: "visual_only",
461630
+ italic: "visual_only",
461631
+ boldItalic: "visual_only"
461632
+ }
461633
+ },
461634
+ {
461635
+ evidenceId: "ms-mincho",
461636
+ generic: "serif",
461637
+ logicalFamily: "MS Mincho",
461638
+ physicalFamily: "BIZ UDMincho",
461639
+ verdict: "visual_only",
461640
+ faces: {
461641
+ regular: true,
461642
+ bold: true,
461643
+ italic: false,
461644
+ boldItalic: false
461645
+ },
461646
+ faceSources: {
461647
+ italic: {
461648
+ kind: "synthetic",
461649
+ from: "regular"
461650
+ },
461651
+ boldItalic: {
461652
+ kind: "synthetic",
461653
+ from: "bold"
461654
+ }
461655
+ },
461656
+ gates: {
461657
+ static: "pass",
461658
+ metric: "pass",
461659
+ layout: "not_run",
461660
+ ship: "fail"
461661
+ },
461662
+ policyAction: "category_fallback",
461663
+ measurementRefs: [
461664
+ "ms-mincho_regular__biz-udmincho#regular#w400#cjk_jp_text#analytic_advance#2026-06-10"
461665
+ ],
461666
+ exportRule: "preserve_original_name",
461667
+ advance: {
461668
+ basis: "cjk_jp_text",
461669
+ meanDelta: 0,
461670
+ maxDelta: 0
461671
+ },
461672
+ candidateLicense: "OFL-1.1",
461673
+ faceVerdicts: {
461674
+ regular: "cell_width_only",
461675
+ bold: "visual_only",
461676
+ italic: "visual_only",
461677
+ boldItalic: "visual_only"
461678
+ }
461679
+ },
461680
+ {
461681
+ evidenceId: "ms-gothic",
461682
+ generic: "sans-serif",
461683
+ logicalFamily: "MS Gothic",
461684
+ physicalFamily: "BIZ UDGothic",
461685
+ verdict: "visual_only",
461686
+ faces: {
461687
+ regular: true,
461688
+ bold: true,
461689
+ italic: false,
461690
+ boldItalic: false
461691
+ },
461692
+ faceSources: {
461693
+ italic: {
461694
+ kind: "synthetic",
461695
+ from: "regular"
461696
+ },
461697
+ boldItalic: {
461698
+ kind: "synthetic",
461699
+ from: "bold"
461700
+ }
461701
+ },
461702
+ gates: {
461703
+ static: "pass",
461704
+ metric: "pass",
461705
+ layout: "not_run",
461706
+ ship: "fail"
461707
+ },
461708
+ policyAction: "category_fallback",
461709
+ measurementRefs: [
461710
+ "ms-gothic_regular__biz-udgothic#regular#w400#cjk_jp_text#analytic_advance#2026-06-10"
461711
+ ],
461712
+ exportRule: "preserve_original_name",
461713
+ advance: {
461714
+ basis: "cjk_jp_text",
461715
+ meanDelta: 0,
461716
+ maxDelta: 0
461717
+ },
461718
+ candidateLicense: "OFL-1.1",
461719
+ faceVerdicts: {
461720
+ regular: "cell_width_only",
461721
+ bold: "visual_only",
461722
+ italic: "visual_only",
461723
+ boldItalic: "visual_only"
461724
+ }
461725
+ },
461726
+ {
461727
+ evidenceId: "yu-gothic",
461728
+ generic: "sans-serif",
461729
+ logicalFamily: "Yu Gothic",
461730
+ physicalFamily: "BIZ UDGothic",
461731
+ verdict: "visual_only",
461732
+ faces: {
461733
+ regular: true,
461734
+ bold: true,
461735
+ italic: false,
461736
+ boldItalic: false
461737
+ },
461738
+ faceSources: {
461739
+ italic: {
461740
+ kind: "synthetic",
461741
+ from: "regular"
461742
+ },
461743
+ boldItalic: {
461744
+ kind: "synthetic",
461745
+ from: "bold"
461746
+ }
461747
+ },
461748
+ gates: {
461749
+ static: "pass",
461750
+ metric: "fail",
461751
+ layout: "not_run",
461752
+ ship: "fail"
461753
+ },
461754
+ policyAction: "category_fallback",
461755
+ measurementRefs: [
461756
+ "yu-gothic_regular__biz-udgothic#regular#w400#cjk_jp_text#analytic_advance#2026-06-10",
461757
+ "yu-gothic_bold__biz-udgothic#bold#w700#cjk_jp_text#analytic_advance#2026-06-10"
461758
+ ],
461759
+ exportRule: "preserve_original_name",
461760
+ advance: {
461761
+ basis: "cjk_jp_text",
461762
+ meanDelta: 0.0415,
461763
+ maxDelta: 0.4521
461764
+ },
461765
+ candidateLicense: "OFL-1.1",
461766
+ faceVerdicts: {
461767
+ regular: "visual_only",
461768
+ bold: "visual_only",
461769
+ italic: "visual_only",
461770
+ boldItalic: "visual_only"
461771
+ }
461772
+ },
460641
461773
  {
460642
461774
  evidenceId: "aptos-display",
460643
461775
  generic: "sans-serif",
@@ -460890,7 +462022,7 @@ var init_data = __esm(() => {
460890
462022
  ];
460891
462023
  });
460892
462024
 
460893
- // ../../node_modules/.pnpm/@docfonts+fallbacks@0.15.0/node_modules/@docfonts/fallbacks/dist/fallbacks.js
462025
+ // ../../node_modules/.pnpm/@docfonts+fallbacks@0.16.0/node_modules/@docfonts/fallbacks/dist/fallbacks.js
460894
462026
  function normalizeFamilyName2(name) {
460895
462027
  return name.trim().replace(/^['"]+|['"]+$/g, "").trim().toLowerCase();
460896
462028
  }
@@ -460984,7 +462116,7 @@ var init_fallbacks = __esm(() => {
460984
462116
  ]));
460985
462117
  });
460986
462118
 
460987
- // ../../node_modules/.pnpm/@docfonts+fallbacks@0.15.0/node_modules/@docfonts/fallbacks/dist/index.js
462119
+ // ../../node_modules/.pnpm/@docfonts+fallbacks@0.16.0/node_modules/@docfonts/fallbacks/dist/index.js
460988
462120
  var init_dist11 = __esm(() => {
460989
462121
  init_data();
460990
462122
  init_fallbacks();
@@ -461024,6 +462156,12 @@ var init_bundled_manifest = __esm(() => {
461024
462156
  { weight: "normal", style: "italic", file: "C059-Italic.woff2" },
461025
462157
  { weight: "bold", style: "italic", file: "C059-BdIta.woff2" }
461026
462158
  ]),
462159
+ familyWithFaces2("URW Gothic", "AGPL-3.0-only WITH PS-or-PDF-font-exception-20170817", [
462160
+ { weight: "normal", style: "normal", file: "URWGothic-Book.woff2" },
462161
+ { weight: "bold", style: "normal", file: "URWGothic-Demi.woff2" },
462162
+ { weight: "normal", style: "italic", file: "URWGothic-BookOblique.woff2" },
462163
+ { weight: "bold", style: "italic", file: "URWGothic-DemiOblique.woff2" }
462164
+ ]),
461027
462165
  familyWithFaces2("Bacasime Antique", "OFL-1.1", [
461028
462166
  { weight: "normal", style: "normal", file: "BacasimeAntique-Regular.woff2" }
461029
462167
  ]),
@@ -461041,6 +462179,10 @@ var init_bundled_manifest = __esm(() => {
461041
462179
  { weight: "bold", style: "normal", file: "ComicRelief-Bold.woff2" }
461042
462180
  ]),
461043
462181
  family2("Noto Sans", "NotoSans", "OFL-1.1"),
462182
+ familyWithFaces2("Selawik", "OFL-1.1", [
462183
+ { weight: "normal", style: "normal", file: "Selawik-Regular.woff2" },
462184
+ { weight: "bold", style: "normal", file: "Selawik-Bold.woff2" }
462185
+ ]),
461044
462186
  familyWithFaces2("Noto Sans Mono", "OFL-1.1", [
461045
462187
  { weight: "normal", style: "normal", file: "NotoSansMono-Regular.woff2" },
461046
462188
  { weight: "bold", style: "normal", file: "NotoSansMono-Bold.woff2" }
@@ -461715,11 +462857,13 @@ var init_registry2 = __esm(() => {
461715
462857
  });
461716
462858
 
461717
462859
  // ../../shared/font-system/src/font-offerings.ts
461718
- function classifyOffering2(policyAction, verdict, physicalFamily, bundled) {
462860
+ function classifyOffering2(logicalFamily, policyAction, verdict, physicalFamily, bundled) {
461719
462861
  if (policyAction === "preserve_only")
461720
462862
  return "preserve_only";
461721
462863
  if (policyAction === "customer_supplied" || physicalFamily == null)
461722
462864
  return "customer_supplied";
462865
+ if (bundled && SUPPORTED_ALIAS_FAMILIES2.has(logicalFamily))
462866
+ return "supported_alias";
461723
462867
  if (policyAction === "category_fallback")
461724
462868
  return "category_fallback";
461725
462869
  if (!bundled)
@@ -461733,7 +462877,7 @@ function deriveOfferings2() {
461733
462877
  logicalFamily: row2.logicalFamily,
461734
462878
  physicalFamily: row2.physicalFamily,
461735
462879
  generic: row2.generic,
461736
- offering: classifyOffering2(row2.policyAction, row2.verdict, row2.physicalFamily, bundled),
462880
+ offering: classifyOffering2(row2.logicalFamily, row2.policyAction, row2.verdict, row2.physicalFamily, bundled),
461737
462881
  bundled,
461738
462882
  verdict: row2.verdict,
461739
462883
  evidenceId: row2.evidenceId
@@ -461741,11 +462885,12 @@ function deriveOfferings2() {
461741
462885
  });
461742
462886
  return Object.freeze(offerings);
461743
462887
  }
461744
- var BUNDLED_FAMILIES2, ADVERTISED_BUILT_IN_TOOLBAR_FAMILIES2, FONT_OFFERINGS2;
462888
+ var BUNDLED_FAMILIES2, SUPPORTED_ALIAS_FAMILIES2, ADVERTISED_BUILT_IN_TOOLBAR_FAMILIES2, FONT_OFFERINGS2;
461745
462889
  var init_font_offerings = __esm(() => {
461746
462890
  init_bundled_manifest();
461747
462891
  init_substitution_evidence();
461748
462892
  BUNDLED_FAMILIES2 = new Set(BUNDLED_MANIFEST2.map((f2) => f2.family));
462893
+ SUPPORTED_ALIAS_FAMILIES2 = new Set(["Arial MT", "Courier", "Times"]);
461749
462894
  ADVERTISED_BUILT_IN_TOOLBAR_FAMILIES2 = new Set([
461750
462895
  "Arial Black",
461751
462896
  "Arial Narrow",
@@ -461753,12 +462898,14 @@ var init_font_offerings = __esm(() => {
461753
462898
  "Bookman Old Style",
461754
462899
  "Brush Script MT",
461755
462900
  "Century",
462901
+ "Century Gothic",
461756
462902
  "Cooper Black",
461757
462903
  "Comic Sans MS",
461758
462904
  "Garamond",
461759
462905
  "Georgia",
461760
462906
  "Gill Sans MT Condensed",
461761
462907
  "Lucida Console",
462908
+ "Segoe UI",
461762
462909
  "Tahoma",
461763
462910
  "Trebuchet MS",
461764
462911
  "Verdana"