@superdoc-dev/cli 0.17.0-next.8 → 0.17.0-next.9

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 +384 -79
  2. package/package.json +8 -8
package/dist/index.js CHANGED
@@ -68327,7 +68327,7 @@ var init_remark_gfm_BhnWr3yf_es = __esm(() => {
68327
68327
  emptyOptions2 = {};
68328
68328
  });
68329
68329
 
68330
- // ../../packages/superdoc/dist/chunks/SuperConverter-e4tY-2EB.es.js
68330
+ // ../../packages/superdoc/dist/chunks/SuperConverter-BtvpSnE5.es.js
68331
68331
  function getExtensionConfigField(extension$1, field, context = { name: "" }) {
68332
68332
  const fieldValue = extension$1.config[field];
68333
68333
  if (typeof fieldValue === "function")
@@ -102470,7 +102470,7 @@ function isSettled(status) {
102470
102470
  function normalizeFamilyName(name) {
102471
102471
  return name.trim().replace(/^['"]+|['"]+$/g, "").trim().toLowerCase();
102472
102472
  }
102473
- function buildFallback(row, physicalFamily, verdict, faceSlot) {
102473
+ function buildFallback(row, physicalFamily, verdict, faceSlot, faceSource) {
102474
102474
  const glyphExceptions = faceSlot ? row.glyphExceptions?.filter((g2) => g2.slot === faceSlot) : row.glyphExceptions ? [...row.glyphExceptions] : undefined;
102475
102475
  return {
102476
102476
  substituteFamily: physicalFamily,
@@ -102480,6 +102480,7 @@ function buildFallback(row, physicalFamily, verdict, faceSlot) {
102480
102480
  faces: row.faces,
102481
102481
  evidenceId: row.evidenceId,
102482
102482
  generic: row.generic,
102483
+ ...faceSource ? { faceSource: { ...faceSource } } : {},
102483
102484
  ...glyphExceptions && glyphExceptions.length > 0 ? { glyphExceptions } : {}
102484
102485
  };
102485
102486
  }
@@ -102520,11 +102521,18 @@ function isFaceScoped(row) {
102520
102521
  const f2 = row.faces;
102521
102522
  return f2.regular || f2.bold || f2.italic || f2.boldItalic;
102522
102523
  }
102524
+ function faceSourceFor(row, face) {
102525
+ const explicit = row.faceSources?.[face];
102526
+ if (explicit)
102527
+ return explicit;
102528
+ return isFaceScoped(row) && row.faces[face] ? { kind: "real" } : undefined;
102529
+ }
102523
102530
  function decideRowForFace(row, face, canRenderFamily$1) {
102524
102531
  const base$1 = decideRow(row, canRenderFamily$1);
102525
102532
  if (base$1.kind !== "fallback")
102526
102533
  return base$1;
102527
- if (isFaceScoped(row) && !row.faces[face])
102534
+ const faceSource = faceSourceFor(row, face);
102535
+ if (isFaceScoped(row) && !faceSource)
102528
102536
  return {
102529
102537
  kind: "face_missing",
102530
102538
  substituteFamily: base$1.fallback.substituteFamily,
@@ -102532,9 +102540,10 @@ function decideRowForFace(row, face, canRenderFamily$1) {
102532
102540
  generic: row.generic
102533
102541
  };
102534
102542
  const faceVerdict = row.faceVerdicts?.[face] ?? row.verdict;
102543
+ const projectedFaceSource = faceSource?.kind === "synthetic" ? faceSource : undefined;
102535
102544
  return {
102536
102545
  kind: "fallback",
102537
- fallback: buildFallback(row, base$1.fallback.substituteFamily, faceVerdict, face)
102546
+ fallback: buildFallback(row, base$1.fallback.substituteFamily, faceVerdict, face, projectedFaceSource)
102538
102547
  };
102539
102548
  }
102540
102549
  function getFallbackDecision(family$1, options = {}) {
@@ -102584,12 +102593,87 @@ function family(name, filePrefix, license) {
102584
102593
  faces: fourFaces(filePrefix)
102585
102594
  };
102586
102595
  }
102596
+ function familyWithFaces(name, license, faces) {
102597
+ return {
102598
+ family: name,
102599
+ license,
102600
+ faces
102601
+ };
102602
+ }
102587
102603
  function normalizeFamilyKey$1(family$1) {
102588
102604
  return family$1.trim().replace(/^["']|["']$/g, "").toLowerCase();
102589
102605
  }
102590
102606
  function sortPairs(pairs) {
102591
102607
  return pairs.sort(([a], [b]) => a < b ? -1 : a > b ? 1 : 0);
102592
102608
  }
102609
+ function faceSlotFor$1({ weight, style }) {
102610
+ const bold2 = weight === "700";
102611
+ const italic = style === "italic";
102612
+ if (bold2 && italic)
102613
+ return "boldItalic";
102614
+ if (bold2)
102615
+ return "bold";
102616
+ if (italic)
102617
+ return "italic";
102618
+ return "regular";
102619
+ }
102620
+ function faceKeyForSlot(slot) {
102621
+ switch (slot) {
102622
+ case "bold":
102623
+ return {
102624
+ weight: "700",
102625
+ style: "normal"
102626
+ };
102627
+ case "italic":
102628
+ return {
102629
+ weight: "400",
102630
+ style: "italic"
102631
+ };
102632
+ case "boldItalic":
102633
+ return {
102634
+ weight: "700",
102635
+ style: "italic"
102636
+ };
102637
+ case "regular":
102638
+ return {
102639
+ weight: "400",
102640
+ style: "normal"
102641
+ };
102642
+ }
102643
+ }
102644
+ function reasonForFallback(policyAction) {
102645
+ return policyAction === "category_fallback" ? "category_fallback" : "bundled_substitute";
102646
+ }
102647
+ function resolveDocfontsFace(primary, face, hasFace) {
102648
+ const decision = getFallbackDecisionForFace(primary, faceSlotFor$1(face), { canRenderFamily });
102649
+ if (decision.kind === "face_missing")
102650
+ return {
102651
+ physical: primary,
102652
+ reason: "fallback_face_absent"
102653
+ };
102654
+ if (decision.kind !== "fallback")
102655
+ return null;
102656
+ const fallback = decision.fallback;
102657
+ if (fallback.policyAction !== "substitute" && fallback.policyAction !== "category_fallback")
102658
+ return null;
102659
+ if (hasFace(fallback.substituteFamily, face.weight, face.style))
102660
+ return {
102661
+ physical: fallback.substituteFamily,
102662
+ reason: reasonForFallback(fallback.policyAction)
102663
+ };
102664
+ const sourceFace = fallback.faceSource?.kind === "synthetic" ? faceKeyForSlot(fallback.faceSource.from) : face;
102665
+ if (!hasFace(fallback.substituteFamily, sourceFace.weight, sourceFace.style))
102666
+ return fallback.policyAction === "substitute" ? {
102667
+ physical: primary,
102668
+ reason: "fallback_face_absent"
102669
+ } : null;
102670
+ const sourceDiffers = sourceFace.weight !== face.weight || sourceFace.style !== face.style;
102671
+ return {
102672
+ physical: fallback.substituteFamily,
102673
+ reason: reasonForFallback(fallback.policyAction),
102674
+ ...sourceDiffers ? { sourceFace } : {}
102675
+ };
102676
+ }
102593
102677
  function deriveBundledSubstitutes() {
102594
102678
  const substitutes = {};
102595
102679
  for (const row of SUBSTITUTION_EVIDENCE) {
@@ -102731,11 +102815,13 @@ function buildFaceReport(usedFaces, registry, resolver$1) {
102731
102815
  weight,
102732
102816
  style
102733
102817
  };
102734
- const { physicalFamily, reason } = resolver$1 ? resolver$1.resolveFace(logicalFamily, face, hasFace) : resolveFace(logicalFamily, face, hasFace);
102818
+ const resolution = resolver$1 ? resolver$1.resolveFace(logicalFamily, face, hasFace) : resolveFace(logicalFamily, face, hasFace);
102819
+ const { physicalFamily, reason } = resolution;
102820
+ const statusFace = resolution.sourceFace ?? face;
102735
102821
  const loadStatus = registry.getFaceStatus({
102736
102822
  family: physicalFamily,
102737
- weight,
102738
- style
102823
+ weight: statusFace.weight,
102824
+ style: statusFace.style
102739
102825
  });
102740
102826
  const missing = reason === "fallback_face_absent" || reason === "category_fallback" || isSettled(loadStatus) && loadStatus !== "loaded";
102741
102827
  const evidence = isRenderedSubstitute(reason) ? toEvidence(getRenderableFallbackForFace(logicalFamily, faceSlotFor(face), RENDER_ALL)) : undefined;
@@ -102862,8 +102948,8 @@ function deriveOfferings() {
102862
102948
  function compareLogicalFamily(a, b) {
102863
102949
  return a.logicalFamily.localeCompare(b.logicalFamily, "en", { sensitivity: "base" });
102864
102950
  }
102865
- function getDefaultFontOfferings() {
102866
- return FONT_OFFERINGS.filter((o) => o.offering === "default").sort(compareLogicalFamily);
102951
+ function getBuiltInToolbarFontOfferings() {
102952
+ return FONT_OFFERINGS.filter((o) => o.offering === "default" || o.offering === "qualified" && ADVERTISED_QUALIFIED_TOOLBAR_FAMILIES.has(o.logicalFamily)).sort(compareLogicalFamily);
102867
102953
  }
102868
102954
  function fontOfferingStack(offering) {
102869
102955
  return `${offering.logicalFamily}, ${offering.generic}`;
@@ -102872,7 +102958,7 @@ function fontOfferingRenderStack(offering) {
102872
102958
  return offering.physicalFamily ? `${offering.physicalFamily}, ${offering.generic}` : fontOfferingStack(offering);
102873
102959
  }
102874
102960
  function getDefaultFontFamilyOptions() {
102875
- return getDefaultFontOfferings().map((offering) => ({
102961
+ return getBuiltInToolbarFontOfferings().map((offering) => ({
102876
102962
  label: offering.logicalFamily,
102877
102963
  value: fontOfferingStack(offering)
102878
102964
  }));
@@ -129805,18 +129891,10 @@ var isRegExp = (value) => {
129805
129891
  physical: primary,
129806
129892
  reason: "registered_face"
129807
129893
  };
129894
+ const docfonts = resolveDocfontsFace(primary, face, hasFace);
129895
+ if (docfonts)
129896
+ return docfonts;
129808
129897
  const bundled = BUNDLED_SUBSTITUTES[key];
129809
- if (bundled && hasFace(bundled, face.weight, face.style))
129810
- return {
129811
- physical: bundled,
129812
- reason: "bundled_substitute"
129813
- };
129814
- const category = CATEGORY_FALLBACKS[key];
129815
- if (category && hasFace(category, face.weight, face.style))
129816
- return {
129817
- physical: category,
129818
- reason: "category_fallback"
129819
- };
129820
129898
  if (override || bundled)
129821
129899
  return {
129822
129900
  physical: primary,
@@ -129849,11 +129927,12 @@ var isRegExp = (value) => {
129849
129927
  }
129850
129928
  resolveFace(logicalFamily, face, hasFace) {
129851
129929
  const primary = splitStack(logicalFamily)[0] ?? logicalFamily;
129852
- const { physical, reason } = this.#resolveFaceLadder(primary, face, hasFace);
129930
+ const { physical, reason, sourceFace } = this.#resolveFaceLadder(primary, face, hasFace);
129853
129931
  return {
129854
129932
  logicalFamily,
129855
129933
  physicalFamily: stripFamilyQuotes(physical),
129856
- reason
129934
+ reason,
129935
+ ...sourceFace ? { sourceFace } : {}
129857
129936
  };
129858
129937
  }
129859
129938
  resolvePhysicalFamilyForFace(cssFontFamily, face, hasFace) {
@@ -130229,7 +130308,7 @@ var isRegExp = (value) => {
130229
130308
  const detail = sources && sources.length ? ` from ${sources.join(", ")}` : "";
130230
130309
  console.warn(`[superdoc] font asset failed to load for "${family$1}"${detail}. Check fonts.assetBaseUrl / fonts.resolveAssetUrl so the bundled .woff2 are served.`);
130231
130310
  }
130232
- }, registriesByFontSet, domlessRegistry = null, BUNDLED_FAMILIES, FONT_OFFERINGS, prepareCommentParaIds = (comment) => {
130311
+ }, registriesByFontSet, domlessRegistry = null, BUNDLED_FAMILIES, ADVERTISED_QUALIFIED_TOOLBAR_FAMILIES, FONT_OFFERINGS, prepareCommentParaIds = (comment) => {
130233
130312
  return {
130234
130313
  ...comment,
130235
130314
  commentParaId: generateDocxRandomId()
@@ -134205,7 +134284,7 @@ var isRegExp = (value) => {
134205
134284
  state.kern = kernNode.attributes["w:val"];
134206
134285
  }
134207
134286
  }, SuperConverter;
134208
- var init_SuperConverter_e4tY_2EB_es = __esm(() => {
134287
+ var init_SuperConverter_BtvpSnE5_es = __esm(() => {
134209
134288
  init_rolldown_runtime_Bg48TavK_es();
134210
134289
  init_jszip_C49i9kUs_es();
134211
134290
  init_xml_js_CqGKpaft_es();
@@ -171545,6 +171624,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171545
171624
  measurementRefs: ["calibri__carlito#analytic_advance#2026-06-03", "calibri__carlito#face_aggregate#2026-06-03"],
171546
171625
  exportRule: "preserve_original_name",
171547
171626
  advance: {
171627
+ basis: "latin_full",
171548
171628
  meanDelta: 0,
171549
171629
  maxDelta: 0
171550
171630
  },
@@ -171577,6 +171657,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171577
171657
  ],
171578
171658
  exportRule: "preserve_original_name",
171579
171659
  advance: {
171660
+ basis: "latin_full",
171580
171661
  meanDelta: 0.0002378,
171581
171662
  maxDelta: 0.2310758
171582
171663
  },
@@ -171616,6 +171697,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171616
171697
  measurementRefs: ["arial__liberation-sans#analytic_advance#2026-06-03"],
171617
171698
  exportRule: "preserve_original_name",
171618
171699
  advance: {
171700
+ basis: "latin_full",
171619
171701
  meanDelta: 0,
171620
171702
  maxDelta: 0
171621
171703
  },
@@ -171643,6 +171725,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171643
171725
  measurementRefs: ["times-new-roman__liberation-serif#analytic_advance#2026-06-03"],
171644
171726
  exportRule: "preserve_original_name",
171645
171727
  advance: {
171728
+ basis: "latin_full",
171646
171729
  meanDelta: 0,
171647
171730
  maxDelta: 0
171648
171731
  },
@@ -171670,6 +171753,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171670
171753
  measurementRefs: ["courier-new__liberation-mono#analytic_advance#2026-06-03"],
171671
171754
  exportRule: "preserve_original_name",
171672
171755
  advance: {
171756
+ basis: "latin_full",
171673
171757
  meanDelta: 0,
171674
171758
  maxDelta: 0
171675
171759
  },
@@ -171706,6 +171790,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171706
171790
  ],
171707
171791
  exportRule: "preserve_original_name",
171708
171792
  advance: {
171793
+ basis: "latin_full",
171709
171794
  meanDelta: 0.0000197,
171710
171795
  maxDelta: 0.0183727
171711
171796
  },
@@ -171755,6 +171840,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171755
171840
  ],
171756
171841
  exportRule: "preserve_original_name",
171757
171842
  advance: {
171843
+ basis: "latin_full",
171758
171844
  meanDelta: 0,
171759
171845
  maxDelta: 0.5
171760
171846
  },
@@ -171795,6 +171881,131 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171795
171881
  exportRule: "preserve_original_name",
171796
171882
  candidateLicense: null
171797
171883
  },
171884
+ {
171885
+ evidenceId: "arial-black",
171886
+ generic: "sans-serif",
171887
+ logicalFamily: "Arial Black",
171888
+ physicalFamily: "Archivo Black",
171889
+ verdict: "visual_only",
171890
+ faces: {
171891
+ regular: true,
171892
+ bold: false,
171893
+ italic: false,
171894
+ boldItalic: false
171895
+ },
171896
+ faceSources: { italic: {
171897
+ kind: "synthetic",
171898
+ from: "regular"
171899
+ } },
171900
+ gates: {
171901
+ static: "pass",
171902
+ metric: "fail",
171903
+ layout: "not_run",
171904
+ ship: "fail"
171905
+ },
171906
+ policyAction: "substitute",
171907
+ measurementRefs: ["arial-black__archivo-black#visual_review#2026-06-09"],
171908
+ exportRule: "preserve_original_name",
171909
+ candidateLicense: "OFL-1.1",
171910
+ faceVerdicts: { italic: "visual_only" }
171911
+ },
171912
+ {
171913
+ evidenceId: "arial-rounded-mt-bold",
171914
+ generic: "sans-serif",
171915
+ logicalFamily: "Arial Rounded MT Bold",
171916
+ physicalFamily: "Ubuntu",
171917
+ verdict: "visual_only",
171918
+ faces: {
171919
+ regular: true,
171920
+ bold: true,
171921
+ italic: true,
171922
+ boldItalic: true
171923
+ },
171924
+ gates: {
171925
+ static: "pass",
171926
+ metric: "fail",
171927
+ layout: "not_run",
171928
+ ship: "fail"
171929
+ },
171930
+ policyAction: "category_fallback",
171931
+ measurementRefs: ["arial-rounded-mt-bold__ubuntu#visual_review#2026-06-09"],
171932
+ exportRule: "preserve_original_name",
171933
+ candidateLicense: "Ubuntu-font-1.0"
171934
+ },
171935
+ {
171936
+ evidenceId: "bookman-old-style",
171937
+ generic: "serif",
171938
+ logicalFamily: "Bookman Old Style",
171939
+ physicalFamily: "TeX Gyre Bonum",
171940
+ verdict: "visual_only",
171941
+ faces: {
171942
+ regular: true,
171943
+ bold: true,
171944
+ italic: true,
171945
+ boldItalic: true
171946
+ },
171947
+ gates: {
171948
+ static: "pass",
171949
+ metric: "fail",
171950
+ layout: "not_run",
171951
+ ship: "fail"
171952
+ },
171953
+ policyAction: "substitute",
171954
+ measurementRefs: ["bookman-old-style__tex-gyre-bonum#visual_review#2026-06-09"],
171955
+ exportRule: "preserve_original_name",
171956
+ candidateLicense: "GUST-Font-License-1.0"
171957
+ },
171958
+ {
171959
+ evidenceId: "century",
171960
+ generic: "serif",
171961
+ logicalFamily: "Century",
171962
+ physicalFamily: "C059",
171963
+ verdict: "visual_only",
171964
+ faces: {
171965
+ regular: true,
171966
+ bold: true,
171967
+ italic: true,
171968
+ boldItalic: true
171969
+ },
171970
+ gates: {
171971
+ static: "pass",
171972
+ metric: "fail",
171973
+ layout: "not_run",
171974
+ ship: "fail"
171975
+ },
171976
+ policyAction: "substitute",
171977
+ measurementRefs: ["century__c059#visual_review#2026-06-09"],
171978
+ exportRule: "preserve_original_name",
171979
+ candidateLicense: "AGPL-3.0-only WITH PS-or-PDF-font-exception-20170817"
171980
+ },
171981
+ {
171982
+ evidenceId: "garamond",
171983
+ generic: "serif",
171984
+ logicalFamily: "Garamond",
171985
+ physicalFamily: "Cardo",
171986
+ verdict: "visual_only",
171987
+ faces: {
171988
+ regular: true,
171989
+ bold: true,
171990
+ italic: true,
171991
+ boldItalic: false
171992
+ },
171993
+ faceSources: { boldItalic: {
171994
+ kind: "synthetic",
171995
+ from: "bold"
171996
+ } },
171997
+ gates: {
171998
+ static: "pass",
171999
+ metric: "fail",
172000
+ layout: "not_run",
172001
+ ship: "fail"
172002
+ },
172003
+ policyAction: "category_fallback",
172004
+ measurementRefs: ["garamond__cardo#visual_review#2026-06-09"],
172005
+ exportRule: "preserve_original_name",
172006
+ candidateLicense: "OFL-1.1",
172007
+ faceVerdicts: { boldItalic: "visual_only" }
172008
+ },
171798
172009
  {
171799
172010
  evidenceId: "consolas",
171800
172011
  generic: "monospace",
@@ -171817,6 +172028,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171817
172028
  measurementRefs: ["consolas__inconsolata-semiexpanded#analytic_advance#2026-06-03"],
171818
172029
  exportRule: "preserve_original_name",
171819
172030
  advance: {
172031
+ basis: "monospace_cell",
171820
172032
  meanDelta: 0.00035999999999999997,
171821
172033
  maxDelta: 0.00035999999999999997
171822
172034
  },
@@ -171849,74 +172061,84 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
171849
172061
  evidenceId: "tahoma",
171850
172062
  generic: "sans-serif",
171851
172063
  logicalFamily: "Tahoma",
171852
- physicalFamily: null,
172064
+ physicalFamily: "Noto Sans",
171853
172065
  verdict: "visual_only",
171854
172066
  faces: {
171855
- regular: false,
171856
- bold: false,
171857
- italic: false,
171858
- boldItalic: false
172067
+ regular: true,
172068
+ bold: true,
172069
+ italic: true,
172070
+ boldItalic: true
171859
172071
  },
171860
172072
  gates: {
171861
- static: "not_run",
172073
+ static: "pass",
171862
172074
  metric: "fail",
171863
172075
  layout: "not_run",
171864
- ship: "not_run"
172076
+ ship: "fail"
171865
172077
  },
171866
172078
  policyAction: "category_fallback",
171867
- measurementRefs: ["tahoma#top_candidates#2026-06-03"],
172079
+ measurementRefs: ["tahoma__noto-sans#visual_review#2026-06-09"],
171868
172080
  exportRule: "preserve_original_name",
171869
- candidateLicense: null
172081
+ candidateLicense: "OFL-1.1"
171870
172082
  },
171871
172083
  {
171872
172084
  evidenceId: "trebuchet-ms",
171873
172085
  generic: "sans-serif",
171874
172086
  logicalFamily: "Trebuchet MS",
171875
- physicalFamily: null,
172087
+ physicalFamily: "PT Sans",
171876
172088
  verdict: "visual_only",
171877
172089
  faces: {
171878
- regular: false,
171879
- bold: false,
171880
- italic: false,
171881
- boldItalic: false
172090
+ regular: true,
172091
+ bold: true,
172092
+ italic: true,
172093
+ boldItalic: true
171882
172094
  },
171883
172095
  gates: {
171884
- static: "not_run",
172096
+ static: "pass",
171885
172097
  metric: "fail",
171886
172098
  layout: "not_run",
171887
- ship: "not_run"
172099
+ ship: "fail"
171888
172100
  },
171889
172101
  policyAction: "category_fallback",
171890
- measurementRefs: ["trebuchet-ms#top_candidates#2026-06-03"],
172102
+ measurementRefs: ["trebuchet-ms__pt-sans#visual_review#2026-06-09"],
171891
172103
  exportRule: "preserve_original_name",
171892
- candidateLicense: null
172104
+ candidateLicense: "OFL-1.1"
171893
172105
  },
171894
172106
  {
171895
172107
  evidenceId: "comic-sans-ms",
171896
172108
  generic: "sans-serif",
171897
172109
  logicalFamily: "Comic Sans MS",
171898
- physicalFamily: "Comic Neue",
172110
+ physicalFamily: "Comic Relief",
171899
172111
  verdict: "visual_only",
171900
172112
  faces: {
171901
- regular: false,
171902
- bold: false,
172113
+ regular: true,
172114
+ bold: true,
171903
172115
  italic: false,
171904
172116
  boldItalic: false
171905
172117
  },
172118
+ faceSources: {
172119
+ italic: {
172120
+ kind: "synthetic",
172121
+ from: "regular"
172122
+ },
172123
+ boldItalic: {
172124
+ kind: "synthetic",
172125
+ from: "bold"
172126
+ }
172127
+ },
171906
172128
  gates: {
171907
- static: "not_run",
172129
+ static: "pass",
171908
172130
  metric: "fail",
171909
172131
  layout: "not_run",
171910
- ship: "not_run"
172132
+ ship: "fail"
171911
172133
  },
171912
172134
  policyAction: "category_fallback",
171913
- measurementRefs: ["comic-sans-ms__comic-neue#analytic_advance#2026-06-03"],
172135
+ measurementRefs: ["comic-sans-ms__comic-relief#visual_review#2026-06-09"],
171914
172136
  exportRule: "preserve_original_name",
171915
- advance: {
171916
- meanDelta: 0.1005,
171917
- maxDelta: 0.1419
171918
- },
171919
- candidateLicense: "OFL-1.1"
172137
+ candidateLicense: "OFL-1.1",
172138
+ faceVerdicts: {
172139
+ italic: "visual_only",
172140
+ boldItalic: "visual_only"
172141
+ }
171920
172142
  },
171921
172143
  {
171922
172144
  evidenceId: "candara",
@@ -172009,11 +172231,51 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172009
172231
  measurementRefs: ["lucida-console__cousine#analytic_advance#2026-06-03"],
172010
172232
  exportRule: "preserve_original_name",
172011
172233
  advance: {
172234
+ basis: "monospace_cell",
172012
172235
  meanDelta: 0.004050000000000001,
172013
172236
  maxDelta: 0.004050000000000001
172014
172237
  },
172015
172238
  candidateLicense: "OFL-1.1"
172016
172239
  },
172240
+ {
172241
+ evidenceId: "gill-sans-mt-condensed",
172242
+ generic: "sans-serif",
172243
+ logicalFamily: "Gill Sans MT Condensed",
172244
+ physicalFamily: "PT Sans Narrow",
172245
+ verdict: "visual_only",
172246
+ faces: {
172247
+ regular: true,
172248
+ bold: true,
172249
+ italic: false,
172250
+ boldItalic: false
172251
+ },
172252
+ faceSources: {
172253
+ italic: {
172254
+ kind: "synthetic",
172255
+ from: "regular"
172256
+ },
172257
+ boldItalic: {
172258
+ kind: "synthetic",
172259
+ from: "bold"
172260
+ }
172261
+ },
172262
+ gates: {
172263
+ static: "pass",
172264
+ metric: "fail",
172265
+ layout: "not_run",
172266
+ ship: "fail"
172267
+ },
172268
+ policyAction: "category_fallback",
172269
+ measurementRefs: ["gill-sans-mt-condensed__pt-sans-narrow#visual_review#2026-06-09"],
172270
+ exportRule: "preserve_original_name",
172271
+ candidateLicense: "OFL-1.1",
172272
+ faceVerdicts: {
172273
+ regular: "visual_only",
172274
+ bold: "visual_only",
172275
+ italic: "visual_only",
172276
+ boldItalic: "visual_only"
172277
+ }
172278
+ },
172017
172279
  {
172018
172280
  evidenceId: "aptos-display",
172019
172281
  generic: "sans-serif",
@@ -172080,6 +172342,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172080
172342
  measurementRefs: ["helvetica__liberation-sans#analytic_advance#2026-06-03"],
172081
172343
  exportRule: "preserve_original_name",
172082
172344
  advance: {
172345
+ basis: "latin_full",
172083
172346
  meanDelta: 0,
172084
172347
  maxDelta: 0
172085
172348
  },
@@ -172107,6 +172370,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172107
172370
  measurementRefs: ["calibri-light__carlito#analytic_advance#2026-06-05"],
172108
172371
  exportRule: "preserve_original_name",
172109
172372
  advance: {
172373
+ basis: "latin_full",
172110
172374
  meanDelta: 0.0148,
172111
172375
  maxDelta: 0.066
172112
172376
  },
@@ -172134,6 +172398,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172134
172398
  measurementRefs: ["baskerville-old-face_regular__bacasime-antique#regular#w400#7dac1e5f#analytic_advance#2026-06-05"],
172135
172399
  exportRule: "preserve_original_name",
172136
172400
  advance: {
172401
+ basis: "latin_full",
172137
172402
  meanDelta: 0,
172138
172403
  maxDelta: 0.4915590863952334
172139
172404
  },
@@ -172151,13 +172416,27 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172151
172416
  generic: "serif",
172152
172417
  logicalFamily: "Cooper Black",
172153
172418
  physicalFamily: "Caprasimo",
172154
- verdict: "metric_safe",
172419
+ verdict: "visual_only",
172155
172420
  faces: {
172156
172421
  regular: true,
172157
172422
  bold: false,
172158
172423
  italic: false,
172159
172424
  boldItalic: false
172160
172425
  },
172426
+ faceSources: {
172427
+ bold: {
172428
+ kind: "synthetic",
172429
+ from: "regular"
172430
+ },
172431
+ italic: {
172432
+ kind: "synthetic",
172433
+ from: "regular"
172434
+ },
172435
+ boldItalic: {
172436
+ kind: "synthetic",
172437
+ from: "regular"
172438
+ }
172439
+ },
172161
172440
  gates: {
172162
172441
  static: "pass",
172163
172442
  metric: "pass",
@@ -172165,14 +172444,20 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172165
172444
  ship: "not_run"
172166
172445
  },
172167
172446
  policyAction: "substitute",
172168
- measurementRefs: ["cooper-black_regular__caprasimo#regular#w400#786ab84e#analytic_advance#2026-06-05"],
172447
+ measurementRefs: ["cooper-black_regular__caprasimo#regular#w400#786ab84e#analytic_advance#2026-06-05", "cooper-black__caprasimo#synthetic_faces#visual_review#2026-06-09"],
172169
172448
  exportRule: "preserve_original_name",
172170
172449
  advance: {
172450
+ basis: "latin_full",
172171
172451
  meanDelta: 0,
172172
172452
  maxDelta: 0
172173
172453
  },
172174
172454
  candidateLicense: "OFL-1.1",
172175
- faceVerdicts: { regular: "metric_safe" }
172455
+ faceVerdicts: {
172456
+ regular: "metric_safe",
172457
+ bold: "visual_only",
172458
+ italic: "visual_only",
172459
+ boldItalic: "visual_only"
172460
+ }
172176
172461
  }
172177
172462
  ];
172178
172463
  LINE_BREAK_SAFE_VERDICTS = new Set([
@@ -172186,7 +172471,12 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172186
172471
  family("Caladea", "Caladea", "Apache-2.0"),
172187
172472
  family("Liberation Sans", "LiberationSans", "OFL-1.1"),
172188
172473
  family("Liberation Serif", "LiberationSerif", "OFL-1.1"),
172189
- family("Liberation Mono", "LiberationMono", "OFL-1.1")
172474
+ family("Liberation Mono", "LiberationMono", "OFL-1.1"),
172475
+ familyWithFaces("Caprasimo", "OFL-1.1", [{
172476
+ weight: "normal",
172477
+ style: "normal",
172478
+ file: "Caprasimo-Regular.woff2"
172479
+ }])
172190
172480
  ]);
172191
172481
  SUBSTITUTION_EVIDENCE = SUBSTITUTION_EVIDENCE$1;
172192
172482
  bundledFamilies = new Set(BUNDLED_MANIFEST.map((f2) => f2.family));
@@ -172202,6 +172492,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
172202
172492
  OS2_MIN_LENGTH = OS2_FSSELECTION + 2;
172203
172493
  registriesByFontSet = /* @__PURE__ */ new WeakMap;
172204
172494
  BUNDLED_FAMILIES = new Set(BUNDLED_MANIFEST.map((f2) => f2.family));
172495
+ ADVERTISED_QUALIFIED_TOOLBAR_FAMILIES = new Set(["Cooper Black"]);
172205
172496
  FONT_OFFERINGS = deriveOfferings();
172206
172497
  ALL_COMMENT_TARGETS = COMMENT_FILE_BASENAMES;
172207
172498
  REL_ID_NUMERIC_PATTERN = /rId|mi/g;
@@ -173989,7 +174280,7 @@ var init_SuperConverter_e4tY_2EB_es = __esm(() => {
173989
174280
  };
173990
174281
  });
173991
174282
 
173992
- // ../../packages/superdoc/dist/chunks/create-headless-toolbar-3iIgFoKe.es.js
174283
+ // ../../packages/superdoc/dist/chunks/create-headless-toolbar-BV5L35wQ.es.js
173993
174284
  function parseSizeUnit(val = "0") {
173994
174285
  const length3 = val.toString() || "0";
173995
174286
  const value = Number.parseFloat(length3);
@@ -184347,8 +184638,8 @@ var CSS_DIMENSION_REGEX, DOM_SIZE_UNITS, normalizeActorId = (value) => {
184347
184638
  }
184348
184639
  };
184349
184640
  };
184350
- var init_create_headless_toolbar_3iIgFoKe_es = __esm(() => {
184351
- init_SuperConverter_e4tY_2EB_es();
184641
+ var init_create_headless_toolbar_BV5L35wQ_es = __esm(() => {
184642
+ init_SuperConverter_BtvpSnE5_es();
184352
184643
  init_uuid_B2wVPhPi_es();
184353
184644
  init_constants_D9qj59G2_es();
184354
184645
  init_dist_B8HfvhaK_es();
@@ -233511,7 +233802,7 @@ var init_remark_gfm_eZN6yzWQ_es = __esm(() => {
233511
233802
  init_remark_gfm_BhnWr3yf_es();
233512
233803
  });
233513
233804
 
233514
- // ../../packages/superdoc/dist/chunks/src-M0JgzZDj.es.js
233805
+ // ../../packages/superdoc/dist/chunks/src-DumwyEvl.es.js
233515
233806
  function deleteProps(obj, propOrProps) {
233516
233807
  const props = typeof propOrProps === "string" ? [propOrProps] : propOrProps;
233517
233808
  const removeNested = (target, pathParts, index2 = 0) => {
@@ -274111,6 +274402,9 @@ function applySourceAnchorDataset(element3, sourceAnchor) {
274111
274402
  else
274112
274403
  delete element3.dataset.sourceOccurrenceId;
274113
274404
  }
274405
+ function allowFontSynthesis(element3) {
274406
+ element3.style.setProperty("font-synthesis", "weight style");
274407
+ }
274114
274408
  function getCellSegmentCount(cell2) {
274115
274409
  if (cell2.blocks && cell2.blocks.length > 0) {
274116
274410
  let total = 0;
@@ -293129,7 +293423,8 @@ function makeResolveFace(resolver2, hasFace) {
293129
293423
  const r$1 = resolver2.resolveFace(logical, face, hasFace);
293130
293424
  return {
293131
293425
  physicalFamily: r$1.physicalFamily,
293132
- reason: r$1.reason
293426
+ reason: r$1.reason,
293427
+ sourceFace: r$1.sourceFace
293133
293428
  };
293134
293429
  };
293135
293430
  if (resolver2)
@@ -293159,10 +293454,14 @@ function collect(acc, node3, resolveFace2) {
293159
293454
  const usedKey = `${logicalPrimary.toLowerCase()}|${weight}|${style2}`;
293160
293455
  if (acc.usedFaces.has(usedKey))
293161
293456
  return;
293162
- const { physicalFamily, reason } = resolveFace2(node3.fontFamily, {
293457
+ const { physicalFamily, reason, sourceFace } = resolveFace2(node3.fontFamily, {
293163
293458
  weight,
293164
293459
  style: style2
293165
293460
  });
293461
+ const requiredFace = sourceFace ?? {
293462
+ weight,
293463
+ style: style2
293464
+ };
293166
293465
  acc.usedFaces.set(usedKey, {
293167
293466
  logicalFamily: logicalPrimary,
293168
293467
  weight,
@@ -293173,15 +293472,17 @@ function collect(acc, node3, resolveFace2) {
293173
293472
  weight,
293174
293473
  style2,
293175
293474
  (physicalFamily || "").toLowerCase(),
293475
+ requiredFace.weight,
293476
+ requiredFace.style,
293176
293477
  reason
293177
293478
  ]);
293178
293479
  if (physicalFamily) {
293179
- const reqKey = `${physicalFamily.toLowerCase()}|${weight}|${style2}`;
293480
+ const reqKey = `${physicalFamily.toLowerCase()}|${requiredFace.weight}|${requiredFace.style}`;
293180
293481
  if (!acc.requiredFaces.has(reqKey))
293181
293482
  acc.requiredFaces.set(reqKey, {
293182
293483
  family: physicalFamily,
293183
- weight,
293184
- style: style2
293484
+ weight: requiredFace.weight,
293485
+ style: requiredFace.style
293185
293486
  });
293186
293487
  }
293187
293488
  }
@@ -315599,6 +315900,7 @@ menclose::after {
315599
315900
  });
315600
315901
  if (run2.fontSize != null)
315601
315902
  markerEl.style.fontSize = `${run2.fontSize}px`;
315903
+ allowFontSynthesis(markerEl);
315602
315904
  markerEl.style.fontWeight = run2.bold ? "bold" : "";
315603
315905
  markerEl.style.fontStyle = run2.italic ? "italic" : "";
315604
315906
  if (run2.color)
@@ -317584,6 +317886,7 @@ menclose::after {
317584
317886
  style: run2.italic ? "italic" : "normal"
317585
317887
  });
317586
317888
  dropCapEl.style.fontSize = `${run2.fontSize}px`;
317889
+ allowFontSynthesis(dropCapEl);
317587
317890
  if (run2.bold)
317588
317891
  dropCapEl.style.fontWeight = "bold";
317589
317892
  if (run2.italic)
@@ -317703,6 +318006,7 @@ menclose::after {
317703
318006
  style: run2.italic ? "italic" : "normal"
317704
318007
  });
317705
318008
  element3.style.fontSize = `${run2.fontSize}px`;
318009
+ allowFontSynthesis(element3);
317706
318010
  if (run2.bold)
317707
318011
  element3.style.fontWeight = "bold";
317708
318012
  if (run2.italic)
@@ -317895,6 +318199,7 @@ menclose::after {
317895
318199
  }
317896
318200
  if (run2.textColor)
317897
318201
  annotation.style.color = run2.textColor;
318202
+ allowFontSynthesis(annotation);
317898
318203
  if (run2.bold)
317899
318204
  annotation.style.fontWeight = "bold";
317900
318205
  if (run2.italic)
@@ -331088,13 +331393,13 @@ menclose::after {
331088
331393
  return;
331089
331394
  console.log(...args$1);
331090
331395
  }, 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;
331091
- var init_src_M0JgzZDj_es = __esm(() => {
331396
+ var init_src_DumwyEvl_es = __esm(() => {
331092
331397
  init_rolldown_runtime_Bg48TavK_es();
331093
- init_SuperConverter_e4tY_2EB_es();
331398
+ init_SuperConverter_BtvpSnE5_es();
331094
331399
  init_jszip_C49i9kUs_es();
331095
331400
  init_xml_js_CqGKpaft_es();
331096
331401
  init_uuid_B2wVPhPi_es();
331097
- init_create_headless_toolbar_3iIgFoKe_es();
331402
+ init_create_headless_toolbar_BV5L35wQ_es();
331098
331403
  init_constants_D9qj59G2_es();
331099
331404
  init_dist_B8HfvhaK_es();
331100
331405
  init_unified_Dsuw2be5_es();
@@ -351806,7 +352111,7 @@ function print() { __p += __j.call(arguments, '') }
351806
352111
  };
351807
352112
  }
351808
352113
  }, [["__scopeId", "data-v-d25821a5"]]);
351809
- TOOLBAR_FONTS = getDefaultFontOfferings().map((offering) => ({
352114
+ TOOLBAR_FONTS = getBuiltInToolbarFontOfferings().map((offering) => ({
351810
352115
  label: offering.logicalFamily,
351811
352116
  key: fontOfferingStack(offering),
351812
352117
  fontWeight: 400,
@@ -366059,11 +366364,11 @@ function print() { __p += __j.call(arguments, '') }
366059
366364
  ]);
366060
366365
  });
366061
366366
 
366062
- // ../../packages/superdoc/dist/chunks/create-super-doc-ui-BbHhTe5g.es.js
366367
+ // ../../packages/superdoc/dist/chunks/create-super-doc-ui-DCDD6DVT.es.js
366063
366368
  var 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;
366064
- var init_create_super_doc_ui_BbHhTe5g_es = __esm(() => {
366065
- init_SuperConverter_e4tY_2EB_es();
366066
- init_create_headless_toolbar_3iIgFoKe_es();
366369
+ var init_create_super_doc_ui_DCDD6DVT_es = __esm(() => {
366370
+ init_SuperConverter_BtvpSnE5_es();
366371
+ init_create_headless_toolbar_BV5L35wQ_es();
366067
366372
  headlessToolbarConstants = {
366068
366373
  DEFAULT_TEXT_ALIGN_OPTIONS: [
366069
366374
  {
@@ -366345,16 +366650,16 @@ var init_zipper_yaJVJ4z9_es = __esm(() => {
366345
366650
 
366346
366651
  // ../../packages/superdoc/dist/super-editor.es.js
366347
366652
  var init_super_editor_es = __esm(() => {
366348
- init_src_M0JgzZDj_es();
366349
- init_SuperConverter_e4tY_2EB_es();
366653
+ init_src_DumwyEvl_es();
366654
+ init_SuperConverter_BtvpSnE5_es();
366350
366655
  init_jszip_C49i9kUs_es();
366351
366656
  init_xml_js_CqGKpaft_es();
366352
- init_create_headless_toolbar_3iIgFoKe_es();
366657
+ init_create_headless_toolbar_BV5L35wQ_es();
366353
366658
  init_constants_D9qj59G2_es();
366354
366659
  init_dist_B8HfvhaK_es();
366355
366660
  init_unified_Dsuw2be5_es();
366356
366661
  init_DocxZipper_FUsfThjV_es();
366357
- init_create_super_doc_ui_BbHhTe5g_es();
366662
+ init_create_super_doc_ui_DCDD6DVT_es();
366358
366663
  init_ui_C5PAS9hY_es();
366359
366664
  init_eventemitter3_BnGqBE_Q_es();
366360
366665
  init_errors_CNaD6vcg_es();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superdoc-dev/cli",
3
- "version": "0.17.0-next.8",
3
+ "version": "0.17.0-next.9",
4
4
  "type": "module",
5
5
  "bin": {
6
6
  "superdoc": "./dist/index.js"
@@ -25,19 +25,19 @@
25
25
  "@types/ws": "^8.5.13",
26
26
  "typescript": "^5.9.2",
27
27
  "@superdoc/document-api": "0.0.1",
28
- "superdoc": "1.39.0",
29
- "@superdoc/super-editor": "0.0.1"
28
+ "@superdoc/super-editor": "0.0.1",
29
+ "superdoc": "1.39.0"
30
30
  },
31
31
  "module": "src/index.ts",
32
32
  "publishConfig": {
33
33
  "access": "public"
34
34
  },
35
35
  "optionalDependencies": {
36
- "@superdoc-dev/cli-darwin-arm64": "0.17.0-next.8",
37
- "@superdoc-dev/cli-darwin-x64": "0.17.0-next.8",
38
- "@superdoc-dev/cli-windows-x64": "0.17.0-next.8",
39
- "@superdoc-dev/cli-linux-arm64": "0.17.0-next.8",
40
- "@superdoc-dev/cli-linux-x64": "0.17.0-next.8"
36
+ "@superdoc-dev/cli-darwin-x64": "0.17.0-next.9",
37
+ "@superdoc-dev/cli-darwin-arm64": "0.17.0-next.9",
38
+ "@superdoc-dev/cli-linux-arm64": "0.17.0-next.9",
39
+ "@superdoc-dev/cli-windows-x64": "0.17.0-next.9",
40
+ "@superdoc-dev/cli-linux-x64": "0.17.0-next.9"
41
41
  },
42
42
  "scripts": {
43
43
  "predev": "node scripts/ensure-superdoc-build.js",