@openpresentation/opf 0.11.1 → 0.11.3

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 (235) hide show
  1. package/dist/{catalogs-DJ-B5ZyD.d.ts → catalogs-CUClB3nl.d.ts} +202 -5
  2. package/dist/catalogs.d.ts +1 -1
  3. package/dist/catalogs.js +1 -1
  4. package/dist/{chunk-BP6WMSSS.js → chunk-57NWIYX3.js} +17 -4
  5. package/dist/{chunk-7LF37SG3.js → chunk-AEUSVEUY.js} +4915 -1640
  6. package/dist/{chunk-6UPHKXI5.js → chunk-BVLWFMDX.js} +40 -4
  7. package/dist/{chunk-SDETQV7Y.js → chunk-HJL64ETN.js} +505 -0
  8. package/dist/{chunk-M4GTWRK7.js → chunk-JCXHSTSM.js} +143 -68
  9. package/dist/{chunk-LTSDDBNW.js → chunk-JTXCMVVP.js} +245 -10
  10. package/dist/{chunk-NPYN4TZ5.js → chunk-RXNFDGPC.js} +113 -38
  11. package/dist/{chunk-KWIOQ3QR.js → chunk-UDPSGTZI.js} +3 -3
  12. package/dist/composition.js +1 -1
  13. package/dist/docs.js +23 -17
  14. package/dist/examples.d.ts +1 -1
  15. package/dist/font-policy.d.ts +4 -0
  16. package/dist/font-policy.js +1 -1
  17. package/dist/index.d.ts +3 -3
  18. package/dist/index.js +11 -11
  19. package/dist/lint.d.ts +2 -2
  20. package/dist/lint.js +5 -5
  21. package/dist/pagination.js +5 -5
  22. package/dist/{presentation-bceTClm8.d.ts → presentation-Cn6vTOCP.d.ts} +13 -13
  23. package/dist/repo-readme.js +1 -1
  24. package/dist/schemas.js +1 -1
  25. package/dist/spec/README.md +3 -2
  26. package/dist/spec/catalogs/audiences/index.json +2 -0
  27. package/dist/spec/catalogs/chart-types/box-and-whisker.json +101 -49
  28. package/dist/spec/catalogs/chart-types/histogram.json +130 -108
  29. package/dist/spec/catalogs/chart-types/index.json +2 -0
  30. package/dist/spec/catalogs/chart-types/pareto.json +22 -106
  31. package/dist/spec/catalogs/color-schemes/black-and-white.json +10 -1
  32. package/dist/spec/catalogs/color-schemes/bold-red.json +10 -1
  33. package/dist/spec/catalogs/color-schemes/boost.json +10 -1
  34. package/dist/spec/catalogs/color-schemes/burnt-orange.json +10 -1
  35. package/dist/spec/catalogs/color-schemes/cool-horizon.json +10 -1
  36. package/dist/spec/catalogs/color-schemes/corporate-blue.json +10 -1
  37. package/dist/spec/catalogs/color-schemes/deep-purple.json +10 -1
  38. package/dist/spec/catalogs/color-schemes/forest-green.json +10 -1
  39. package/dist/spec/catalogs/color-schemes/golden-yellow.json +10 -1
  40. package/dist/spec/catalogs/color-schemes/index.json +2 -0
  41. package/dist/spec/catalogs/color-schemes/luxury.json +10 -1
  42. package/dist/spec/catalogs/color-schemes/pastel-red.json +10 -1
  43. package/dist/spec/catalogs/color-schemes/slate-gray.json +10 -1
  44. package/dist/spec/catalogs/color-schemes/steel-blue.json +10 -1
  45. package/dist/spec/catalogs/color-schemes/vibes.json +10 -1
  46. package/dist/spec/catalogs/font-schemes/angsana-new.json +2 -1
  47. package/dist/spec/catalogs/font-schemes/aparajita.json +2 -1
  48. package/dist/spec/catalogs/font-schemes/aptos.json +2 -1
  49. package/dist/spec/catalogs/font-schemes/arabic-typesetting.json +2 -1
  50. package/dist/spec/catalogs/font-schemes/arial.json +2 -1
  51. package/dist/spec/catalogs/font-schemes/batang.json +2 -1
  52. package/dist/spec/catalogs/font-schemes/bookman.json +2 -1
  53. package/dist/spec/catalogs/font-schemes/calibri.json +2 -1
  54. package/dist/spec/catalogs/font-schemes/century-schoolbook.json +2 -1
  55. package/dist/spec/catalogs/font-schemes/consolas.json +2 -1
  56. package/dist/spec/catalogs/font-schemes/constantia.json +2 -1
  57. package/dist/spec/catalogs/font-schemes/courier-new.json +2 -1
  58. package/dist/spec/catalogs/font-schemes/daunpenh.json +2 -1
  59. package/dist/spec/catalogs/font-schemes/david.json +2 -1
  60. package/dist/spec/catalogs/font-schemes/dilleniaupc.json +2 -1
  61. package/dist/spec/catalogs/font-schemes/fangsong.json +2 -1
  62. package/dist/spec/catalogs/font-schemes/garamond.json +2 -1
  63. package/dist/spec/catalogs/font-schemes/gautami.json +2 -1
  64. package/dist/spec/catalogs/font-schemes/georgia.json +2 -1
  65. package/dist/spec/catalogs/font-schemes/gisha.json +2 -1
  66. package/dist/spec/catalogs/font-schemes/grandview.json +2 -1
  67. package/dist/spec/catalogs/font-schemes/gungsuh.json +2 -1
  68. package/dist/spec/catalogs/font-schemes/impact.json +2 -1
  69. package/dist/spec/catalogs/font-schemes/index.json +236 -234
  70. package/dist/spec/catalogs/font-schemes/kalinga.json +2 -1
  71. package/dist/spec/catalogs/font-schemes/kartika.json +2 -1
  72. package/dist/spec/catalogs/font-schemes/khmer-ui.json +2 -1
  73. package/dist/spec/catalogs/font-schemes/latha.json +2 -1
  74. package/dist/spec/catalogs/font-schemes/lucida-sans.json +2 -1
  75. package/dist/spec/catalogs/font-schemes/malgun-gothic.json +2 -1
  76. package/dist/spec/catalogs/font-schemes/mangal.json +2 -1
  77. package/dist/spec/catalogs/font-schemes/meiryo.json +2 -1
  78. package/dist/spec/catalogs/font-schemes/microsoft-jhenghei.json +2 -1
  79. package/dist/spec/catalogs/font-schemes/microsoft-yahei.json +2 -1
  80. package/dist/spec/catalogs/font-schemes/mingliu.json +2 -1
  81. package/dist/spec/catalogs/font-schemes/miriam.json +2 -1
  82. package/dist/spec/catalogs/font-schemes/montserrat.json +2 -1
  83. package/dist/spec/catalogs/font-schemes/ms-mincho.json +2 -1
  84. package/dist/spec/catalogs/font-schemes/nirmala-ui.json +2 -1
  85. package/dist/spec/catalogs/font-schemes/noto-naksh-arabic.json +2 -1
  86. package/dist/spec/catalogs/font-schemes/noto-nastaliq-urdu.json +2 -1
  87. package/dist/spec/catalogs/font-schemes/noto-sans-arabic.json +2 -1
  88. package/dist/spec/catalogs/font-schemes/noto-sans-armenian.json +2 -1
  89. package/dist/spec/catalogs/font-schemes/noto-sans-bengali.json +2 -1
  90. package/dist/spec/catalogs/font-schemes/noto-sans-devangari.json +2 -1
  91. package/dist/spec/catalogs/font-schemes/noto-sans-ethiopic.json +2 -1
  92. package/dist/spec/catalogs/font-schemes/noto-sans-georgian.json +2 -1
  93. package/dist/spec/catalogs/font-schemes/noto-sans-gujarati.json +2 -1
  94. package/dist/spec/catalogs/font-schemes/noto-sans-gurmukhi.json +2 -1
  95. package/dist/spec/catalogs/font-schemes/noto-sans-hebrew.json +2 -1
  96. package/dist/spec/catalogs/font-schemes/noto-sans-jp.json +2 -1
  97. package/dist/spec/catalogs/font-schemes/noto-sans-kannada.json +2 -1
  98. package/dist/spec/catalogs/font-schemes/noto-sans-khmer.json +2 -1
  99. package/dist/spec/catalogs/font-schemes/noto-sans-kr.json +2 -1
  100. package/dist/spec/catalogs/font-schemes/noto-sans-malayalam.json +2 -1
  101. package/dist/spec/catalogs/font-schemes/noto-sans-mongolian.json +2 -1
  102. package/dist/spec/catalogs/font-schemes/noto-sans-oriya.json +2 -1
  103. package/dist/spec/catalogs/font-schemes/noto-sans-sc.json +2 -1
  104. package/dist/spec/catalogs/font-schemes/noto-sans-tamil.json +2 -1
  105. package/dist/spec/catalogs/font-schemes/noto-sans-tc.json +2 -1
  106. package/dist/spec/catalogs/font-schemes/noto-sans-telugu.json +2 -1
  107. package/dist/spec/catalogs/font-schemes/noto-sans-thai.json +2 -1
  108. package/dist/spec/catalogs/font-schemes/noto-sans.json +2 -1
  109. package/dist/spec/catalogs/font-schemes/nyala.json +2 -1
  110. package/dist/spec/catalogs/font-schemes/open-sans.json +2 -1
  111. package/dist/spec/catalogs/font-schemes/pmingliu.json +2 -1
  112. package/dist/spec/catalogs/font-schemes/poppins.json +2 -1
  113. package/dist/spec/catalogs/font-schemes/pt-serif.json +2 -1
  114. package/dist/spec/catalogs/font-schemes/raavi.json +2 -1
  115. package/dist/spec/catalogs/font-schemes/raleway.json +2 -1
  116. package/dist/spec/catalogs/font-schemes/roboto.json +2 -1
  117. package/dist/spec/catalogs/font-schemes/rockwell.json +2 -1
  118. package/dist/spec/catalogs/font-schemes/sakkal-majalla.json +2 -1
  119. package/dist/spec/catalogs/font-schemes/seaford.json +2 -1
  120. package/dist/spec/catalogs/font-schemes/segoe-ui-light.json +2 -1
  121. package/dist/spec/catalogs/font-schemes/segoe-ui.json +2 -1
  122. package/dist/spec/catalogs/font-schemes/shonar-bangla.json +2 -1
  123. package/dist/spec/catalogs/font-schemes/shruti.json +2 -1
  124. package/dist/spec/catalogs/font-schemes/simsun.json +2 -1
  125. package/dist/spec/catalogs/font-schemes/skeena.json +2 -1
  126. package/dist/spec/catalogs/font-schemes/sylfaen.json +2 -1
  127. package/dist/spec/catalogs/font-schemes/tahoma.json +2 -1
  128. package/dist/spec/catalogs/font-schemes/tenorite.json +2 -1
  129. package/dist/spec/catalogs/font-schemes/times-new-roman.json +2 -1
  130. package/dist/spec/catalogs/font-schemes/traditional-arabic.json +2 -1
  131. package/dist/spec/catalogs/font-schemes/trebuchet-ms.json +2 -1
  132. package/dist/spec/catalogs/font-schemes/tunga.json +2 -1
  133. package/dist/spec/catalogs/font-schemes/verdana.json +2 -1
  134. package/dist/spec/catalogs/font-schemes/vrinda.json +2 -1
  135. package/dist/spec/catalogs/font-schemes/yu-gothic.json +2 -1
  136. package/dist/spec/catalogs/languages/index.json +2 -0
  137. package/dist/spec/catalogs/layouts/action-plan.json +35 -0
  138. package/dist/spec/catalogs/layouts/agenda.json +35 -0
  139. package/dist/spec/catalogs/layouts/appendix-index.json +38 -0
  140. package/dist/spec/catalogs/layouts/architecture-stack.json +35 -0
  141. package/dist/spec/catalogs/layouts/assumptions-dependencies.json +35 -0
  142. package/dist/spec/catalogs/layouts/before-after.json +41 -0
  143. package/dist/spec/catalogs/layouts/benchmark-target-table.json +35 -0
  144. package/dist/spec/catalogs/layouts/bullet-list.json +38 -0
  145. package/dist/spec/catalogs/layouts/business-model-canvas.json +35 -0
  146. package/dist/spec/catalogs/layouts/capability-map.json +35 -0
  147. package/dist/spec/catalogs/layouts/case-study.json +35 -0
  148. package/dist/spec/catalogs/layouts/chapter-recap.json +35 -0
  149. package/dist/spec/catalogs/layouts/circular-lifecycle.json +35 -0
  150. package/dist/spec/catalogs/layouts/comparison.json +41 -0
  151. package/dist/spec/catalogs/layouts/competitive-landscape.json +35 -0
  152. package/dist/spec/catalogs/layouts/customer-journey.json +35 -0
  153. package/dist/spec/catalogs/layouts/customer-logos.json +38 -0
  154. package/dist/spec/catalogs/layouts/dashboard.json +41 -0
  155. package/dist/spec/catalogs/layouts/data-visualization.json +45 -0
  156. package/dist/spec/catalogs/layouts/decision-tree.json +35 -0
  157. package/dist/spec/catalogs/layouts/detailed-data-table.json +41 -0
  158. package/dist/spec/catalogs/layouts/ecosystem-map.json +35 -0
  159. package/dist/spec/catalogs/layouts/executive-decision.json +38 -0
  160. package/dist/spec/catalogs/layouts/executive-summary.json +38 -0
  161. package/dist/spec/catalogs/layouts/faq.json +35 -0
  162. package/dist/spec/catalogs/layouts/feature-comparison-matrix.json +35 -0
  163. package/dist/spec/catalogs/layouts/forecast-scenario.json +45 -0
  164. package/dist/spec/catalogs/layouts/funnel-pyramid.json +38 -0
  165. package/dist/spec/catalogs/layouts/gantt-project-plan.json +38 -0
  166. package/dist/spec/catalogs/layouts/geographic-map.json +35 -0
  167. package/dist/spec/catalogs/layouts/heatmap-cohort.json +38 -0
  168. package/dist/spec/catalogs/layouts/hub-and-spoke.json +35 -0
  169. package/dist/spec/catalogs/layouts/icon-grid.json +35 -0
  170. package/dist/spec/catalogs/layouts/image-focus.json +35 -0
  171. package/dist/spec/catalogs/layouts/index.json +352 -0
  172. package/dist/spec/catalogs/layouts/key-takeaway.json +32 -0
  173. package/dist/spec/catalogs/layouts/kpi-scorecard.json +44 -0
  174. package/dist/spec/catalogs/layouts/logic-tree.json +35 -0
  175. package/dist/spec/catalogs/layouts/market-size.json +35 -0
  176. package/dist/spec/catalogs/layouts/matrix-quadrant.json +48 -0
  177. package/dist/spec/catalogs/layouts/network-dependency-map.json +35 -0
  178. package/dist/spec/catalogs/layouts/one-column-explainer.json +35 -0
  179. package/dist/spec/catalogs/layouts/org-chart.json +45 -0
  180. package/dist/spec/catalogs/layouts/persona-grid.json +35 -0
  181. package/dist/spec/catalogs/layouts/photo-grid.json +48 -0
  182. package/dist/spec/catalogs/layouts/pricing-table.json +35 -0
  183. package/dist/spec/catalogs/layouts/process-flow.json +35 -0
  184. package/dist/spec/catalogs/layouts/product-feature.json +35 -0
  185. package/dist/spec/catalogs/layouts/pros-cons.json +41 -0
  186. package/dist/spec/catalogs/layouts/qa-discussion.json +38 -0
  187. package/dist/spec/catalogs/layouts/quote-highlight.json +35 -0
  188. package/dist/spec/catalogs/layouts/raci-matrix.json +35 -0
  189. package/dist/spec/catalogs/layouts/risk-heatmap.json +35 -0
  190. package/dist/spec/catalogs/layouts/roadmap.json +35 -0
  191. package/dist/spec/catalogs/layouts/screenshot-walkthrough.json +35 -0
  192. package/dist/spec/catalogs/layouts/section-divider.json +35 -0
  193. package/dist/spec/catalogs/layouts/single-message-statement.json +32 -0
  194. package/dist/spec/catalogs/layouts/stats-metrics.json +45 -0
  195. package/dist/spec/catalogs/layouts/status-rag.json +35 -0
  196. package/dist/spec/catalogs/layouts/swimlane-process.json +35 -0
  197. package/dist/spec/catalogs/layouts/swot-analysis.json +48 -0
  198. package/dist/spec/catalogs/layouts/team-bio.json +35 -0
  199. package/dist/spec/catalogs/layouts/testimonial-grid.json +44 -0
  200. package/dist/spec/catalogs/layouts/thank-you-cta.json +35 -0
  201. package/dist/spec/catalogs/layouts/three-column.json +45 -0
  202. package/dist/spec/catalogs/layouts/timeline.json +38 -0
  203. package/dist/spec/catalogs/layouts/title-slide.json +35 -0
  204. package/dist/spec/catalogs/layouts/two-column.json +42 -0
  205. package/dist/spec/catalogs/layouts/venn-overlap.json +35 -0
  206. package/dist/spec/catalogs/layouts/waterfall-bridge.json +45 -0
  207. package/dist/spec/catalogs/layouts/wheel-radial.json +35 -0
  208. package/dist/spec/catalogs/manifest.json +111 -0
  209. package/dist/spec/catalogs/narratives/index.json +746 -144
  210. package/dist/spec/catalogs/purposes/index.json +2 -0
  211. package/dist/spec/catalogs/social-platforms/index.json +2 -1
  212. package/dist/spec/catalogs/themes/index.json +10 -8
  213. package/dist/spec/catalogs/tones/index.json +2 -0
  214. package/dist/spec/reference/font-policy.json +113 -38
  215. package/dist/spec/reference/font-policy.schema.json +10 -0
  216. package/dist/spec/schemas/audience.schema.json +21 -0
  217. package/dist/spec/schemas/catalog-index.schema.json +40 -3
  218. package/dist/spec/schemas/catalog-manifest.schema.json +83 -0
  219. package/dist/spec/schemas/chart-type.schema.json +5 -0
  220. package/dist/spec/schemas/color-scheme.schema.json +21 -0
  221. package/dist/spec/schemas/font-scheme.schema.json +21 -0
  222. package/dist/spec/schemas/language.schema.json +21 -0
  223. package/dist/spec/schemas/layout.schema.json +21 -0
  224. package/dist/spec/schemas/narrative.schema.json +21 -0
  225. package/dist/spec/schemas/opf.schema.json +5 -5
  226. package/dist/spec/schemas/purpose.schema.json +21 -0
  227. package/dist/spec/schemas/social-platform.schema.json +26 -5
  228. package/dist/spec/schemas/theme.schema.json +21 -0
  229. package/dist/spec/schemas/tone.schema.json +21 -0
  230. package/dist/spec-files.d.ts +2 -2
  231. package/dist/spec-files.js +1 -1
  232. package/dist/types.d.ts +2 -2
  233. package/dist/validator.d.ts +2 -2
  234. package/dist/validator.js +4 -4
  235. package/package.json +1 -1
@@ -6,9 +6,9 @@ var fontPolicySource = {
6
6
  "note": "Owner decisions resolved provisionally with the recommended defaults. Changing a decision here is the whole edit: every row whose replacement names this decision takes its family and compatibility from it. A recorded measurement for a different family is ignored (treated as unmeasured) until scripts/measure-font-replacements.mjs is re-run.",
7
7
  "decisions": {
8
8
  "aptos-preview": {
9
- "replacement": "Roboto",
10
- "compatibility": "visual",
11
- "note": "Default scheme aptos previews with Roboto; the PPTX still names Aptos."
9
+ "replacement": "Intos",
10
+ "compatibility": "metric",
11
+ "note": "Owner policy 2026-09-29: a licensed font the user selects previews with an open replacement that looks similar and has the same size on screen; the PPTX keeps the selected name. Aptos previews with Intos (metric, OFL-1.1, vendored in opf-render); Roboto and Carlito are alternates for registries built without the Intos faces (they are in the opf-render office pack)."
12
12
  },
13
13
  "segoe-ui-preview": {
14
14
  "replacement": "Red Hat Display",
@@ -26,7 +26,7 @@ var fontPolicySource = {
26
26
  "description": "OPF font policy (font-fidelity-everywhere FF-31). One row per font family that OPF catalogs, defaults or renderer rules name. Renderers preview a proprietary family with its openly licensed replacement for measurement and drawing only. Exporters always write the chosen family, never write a replacement, and never embed a proprietary family. Open families may be bundled for rendering and reach a PPTX only through an explicit embed path. See docs/font-fidelity.md.",
27
27
  "version": 1,
28
28
  "measurement": {
29
- "tool": "fontkit 2.0.4 shaping with default features (kerning, ligatures), as opf-render measures text",
29
+ "tool": "fontkit 2.0.4 shaping with default features (kerning, ligatures), as opf-render measures text; a replacement that lists disabledFeatures (Georgia -> Gelasio) is shaped with those features off",
30
30
  "corpus": "300 Latin title/body strings sampled from the 126 bundled example decks",
31
31
  "evidence": "docs/evidence/font-replacements-20260923/README.md",
32
32
  "definition": "For each style both fonts have (regular, bold, italic, bold italic, or the weight the family name encodes), the shaped advance width of every corpus string in the replacement is divided by the width in the real font. meanAbsWidthDelta averages |ratio - 1| over strings and styles; meanWidthDelta averages the signed value; maxAbsWidthDelta is the largest single-string |ratio - 1|. Reference fonts were read in place from a licensed Windows 11 + Microsoft 365 host and never copied."
@@ -107,16 +107,18 @@ var fontPolicySource = {
107
107
  "embeddableByOpf": false,
108
108
  "replacement": {
109
109
  "decision": "aptos-preview",
110
+ "source": "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
110
111
  "measured": {
111
- "replacement": "Roboto",
112
- "meanAbsWidthDelta": 0.0215,
113
- "meanWidthDelta": 8e-4,
114
- "maxAbsWidthDelta": 0.0739,
112
+ "replacement": "Intos",
113
+ "meanAbsWidthDelta": 0,
114
+ "meanWidthDelta": 0,
115
+ "maxAbsWidthDelta": 0,
115
116
  "styles": 4,
116
117
  "reference": "Aptos 2.01;O365"
117
118
  }
118
119
  },
119
120
  "alternates": [
121
+ "Roboto",
120
122
  "Carlito"
121
123
  ],
122
124
  "sources": [
@@ -127,7 +129,7 @@ var fontPolicySource = {
127
129
  "https://microsoft.design/articles/a-change-of-typeface-microsoft-s-new-default-font-has-arrived/",
128
130
  "https://www.microsoft.com/en-us/download/details.aspx?id=106087"
129
131
  ],
130
- "note": "Microsoft 365 cloud font; not redistributable. Roboto is the closest measured open face with all four styles already in the base pack. Carlito (the previous substitute) measured 7.1% narrower. Not in the Windows 10/11 font lists; delivered as a Microsoft 365 cloud font. Microsoft also offers a standalone download (Download Center id=106087) under Microsoft terms, not an open license."
132
+ "note": "Microsoft 365 cloud font; not redistributable. Intos is metric-compatible (OFL, Inter-derived outlines with Aptos advances, kerning and vertical metrics) and previews it in the default opf-render office pack; Roboto and Carlito are the visual fallbacks for registries built without the Intos faces. Not in the Windows 10/11 font lists; delivered as a Microsoft 365 cloud font. Microsoft also offers a standalone download (Download Center id=106087) under Microsoft terms, not an open license."
131
133
  },
132
134
  {
133
135
  "family": "Aptos Display",
@@ -138,18 +140,20 @@ var fontPolicySource = {
138
140
  ],
139
141
  "embeddableByOpf": false,
140
142
  "replacement": {
141
- "family": "Carlito",
142
- "compatibility": "visual",
143
+ "family": "Intos Display",
144
+ "compatibility": "metric",
145
+ "source": "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
143
146
  "measured": {
144
- "replacement": "Carlito",
145
- "meanAbsWidthDelta": 0.0184,
146
- "meanWidthDelta": -57e-4,
147
- "maxAbsWidthDelta": 0.0691,
147
+ "replacement": "Intos Display",
148
+ "meanAbsWidthDelta": 0,
149
+ "meanWidthDelta": 0,
150
+ "maxAbsWidthDelta": 0,
148
151
  "styles": 4,
149
152
  "reference": "Aptos Display 2.01;O365"
150
153
  }
151
154
  },
152
155
  "alternates": [
156
+ "Carlito",
153
157
  "Roboto"
154
158
  ],
155
159
  "sources": [
@@ -159,7 +163,7 @@ var fontPolicySource = {
159
163
  "https://support.apple.com/en-us/122869",
160
164
  "https://microsoft.design/articles/a-change-of-typeface-microsoft-s-new-default-font-has-arrived/"
161
165
  ],
162
- "note": "Part of the Aptos family; cloud font list has Aptos Display (+Bold/Italic/Bold Italic)."
166
+ "note": "Part of the Aptos family; cloud font list has Aptos Display (+Bold/Italic/Bold Italic). Intos Display is its metric-compatible preview replacement."
163
167
  },
164
168
  {
165
169
  "family": "Aptos Mono",
@@ -195,13 +199,14 @@ var fontPolicySource = {
195
199
  ],
196
200
  "embeddableByOpf": false,
197
201
  "replacement": {
198
- "family": "Carlito",
199
- "compatibility": "visual",
202
+ "family": "Intos Narrow",
203
+ "compatibility": "metric",
204
+ "source": "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
200
205
  "measured": {
201
- "replacement": "Carlito",
202
- "meanAbsWidthDelta": 0.0233,
203
- "meanWidthDelta": 0.0222,
204
- "maxAbsWidthDelta": 0.0786,
206
+ "replacement": "Intos Narrow",
207
+ "meanAbsWidthDelta": 0,
208
+ "meanWidthDelta": 0,
209
+ "maxAbsWidthDelta": 0,
205
210
  "styles": 4,
206
211
  "reference": "Aptos Narrow 2.01;O365"
207
212
  }
@@ -213,7 +218,10 @@ var fontPolicySource = {
213
218
  "https://support.apple.com/en-us/122869",
214
219
  "https://microsoft.design/articles/a-change-of-typeface-microsoft-s-new-default-font-has-arrived/"
215
220
  ],
216
- "note": "Part of the Aptos family; cloud font list has Aptos Narrow (+Bold/Italic/Bold Italic)."
221
+ "note": "Part of the Aptos family; cloud font list has Aptos Narrow (+Bold/Italic/Bold Italic). Intos Narrow is its metric-compatible preview replacement.",
222
+ "alternates": [
223
+ "Carlito"
224
+ ]
217
225
  },
218
226
  {
219
227
  "family": "Aptos Serif",
@@ -224,9 +232,17 @@ var fontPolicySource = {
224
232
  ],
225
233
  "embeddableByOpf": false,
226
234
  "replacement": {
227
- "family": "Tinos",
228
- "compatibility": "visual",
229
- "measured": null
235
+ "family": "Intos Serif",
236
+ "compatibility": "metric",
237
+ "source": "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
238
+ "measured": {
239
+ "replacement": "Intos Serif",
240
+ "meanAbsWidthDelta": 0,
241
+ "meanWidthDelta": 0,
242
+ "maxAbsWidthDelta": 0,
243
+ "styles": 4,
244
+ "reference": "Aptos Serif 2.01;240513210638;O365"
245
+ }
230
246
  },
231
247
  "sources": [
232
248
  "https://learn.microsoft.com/en-us/typography/fonts/windows_11_font_list",
@@ -234,7 +250,10 @@ var fontPolicySource = {
234
250
  "https://learn.microsoft.com/en-us/typography/font-list/aptos",
235
251
  "https://support.apple.com/en-us/122869"
236
252
  ],
237
- "note": "Reference not available to the measuring host. Aptos family member; cloud list has Aptos Serif, Bold, Italic and Bold Italic."
253
+ "note": "Part of the Aptos family; cloud list has Aptos Serif, Bold, Italic and Bold Italic. Intos Serif (Gelasio-derived outlines, Aptos Serif metrics) is its metric-compatible preview replacement. Not installed on the measuring host: measured from the files in Microsoft's Aptos Fonts download (Download Center id=106087).",
254
+ "alternates": [
255
+ "Tinos"
256
+ ]
238
257
  },
239
258
  {
240
259
  "family": "Arabic Typesetting",
@@ -910,8 +929,8 @@ var fontPolicySource = {
910
929
  "compatibility": "visual",
911
930
  "measured": {
912
931
  "replacement": "Source Sans 3",
913
- "meanAbsWidthDelta": 0.0157,
914
- "meanWidthDelta": 0.0151,
932
+ "meanAbsWidthDelta": 0.0158,
933
+ "meanWidthDelta": 0.0152,
915
934
  "maxAbsWidthDelta": 0.0521,
916
935
  "styles": 4,
917
936
  "reference": "Corbel 6.01"
@@ -1302,12 +1321,16 @@ var fontPolicySource = {
1302
1321
  "embeddableByOpf": false,
1303
1322
  "replacement": {
1304
1323
  "family": "Gelasio",
1305
- "compatibility": "visual",
1324
+ "compatibility": "metric",
1325
+ "disabledFeatures": [
1326
+ "liga",
1327
+ "clig"
1328
+ ],
1306
1329
  "measured": {
1307
1330
  "replacement": "Gelasio",
1308
- "meanAbsWidthDelta": 2e-4,
1309
- "meanWidthDelta": -2e-4,
1310
- "maxAbsWidthDelta": 0.0102,
1331
+ "meanAbsWidthDelta": 0,
1332
+ "meanWidthDelta": 0,
1333
+ "maxAbsWidthDelta": 0,
1311
1334
  "styles": 4,
1312
1335
  "reference": "Georgia 5.59"
1313
1336
  },
@@ -1320,7 +1343,7 @@ var fontPolicySource = {
1320
1343
  "https://learn.microsoft.com/en-us/typography/font-list/georgia",
1321
1344
  "https://support.apple.com/en-us/122869"
1322
1345
  ],
1323
- "note": "Gelasio is designed to Georgia metrics and every basic-Latin advance matches Georgia 5.59, but opf-render shapes with default features, and runs where Gelasio applies optional ligatures differ by up to 1.02%. OPF classes it as visual."
1346
+ "note": "Gelasio is designed to Georgia metrics and every basic-Latin advance matches Georgia 5.59. With default features Gelasio applies fi/fl/ffi/ffl ligatures that Georgia does not, which changes runs by up to 1.02%. Renderers therefore turn liga and clig off in Gelasio (disabledFeatures); the measurement below shapes Gelasio that way. Georgia has no liga or clig feature, so its default shaping is unchanged. The metric claim holds only with those features off."
1324
1347
  },
1325
1348
  {
1326
1349
  "family": "Gill Sans MT",
@@ -1335,9 +1358,9 @@ var fontPolicySource = {
1335
1358
  "compatibility": "visual",
1336
1359
  "measured": {
1337
1360
  "replacement": "Source Sans 3",
1338
- "meanAbsWidthDelta": 0.051,
1339
- "meanWidthDelta": 38e-4,
1340
- "maxAbsWidthDelta": 0.1456,
1361
+ "meanAbsWidthDelta": 0.0511,
1362
+ "meanWidthDelta": 39e-4,
1363
+ "maxAbsWidthDelta": 0.1459,
1341
1364
  "styles": 4,
1342
1365
  "reference": "Gill Sans MT 1.65"
1343
1366
  }
@@ -1503,6 +1526,58 @@ var fontPolicySource = {
1503
1526
  "https://support.apple.com/en-us/122869"
1504
1527
  ]
1505
1528
  },
1529
+ {
1530
+ "family": "Intos",
1531
+ "licenseClass": "open",
1532
+ "license": "OFL-1.1",
1533
+ "availability": [],
1534
+ "embeddableByOpf": true,
1535
+ "replacement": null,
1536
+ "sources": [
1537
+ "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
1538
+ "https://github.com/muglug/intos/blob/fef9315c14da9e4b23b4c3cac8e718998d4e4736/LICENSE.txt"
1539
+ ],
1540
+ "note": "Metric-compatible with Aptos (Aptos advance widths, kerning and vertical metrics on Inter-derived outlines). Vendored in opf-render at the pinned commit; single-maintainer project created September 2026, so Roboto and Carlito stay as fallbacks."
1541
+ },
1542
+ {
1543
+ "family": "Intos Display",
1544
+ "licenseClass": "open",
1545
+ "license": "OFL-1.1",
1546
+ "availability": [],
1547
+ "embeddableByOpf": true,
1548
+ "replacement": null,
1549
+ "sources": [
1550
+ "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
1551
+ "https://github.com/muglug/intos/blob/fef9315c14da9e4b23b4c3cac8e718998d4e4736/LICENSE.txt"
1552
+ ],
1553
+ "note": "Metric-compatible with Aptos Display (Aptos advance widths, kerning and vertical metrics on Inter-derived outlines). Vendored in opf-render at the pinned commit; single-maintainer project created September 2026, so Roboto and Carlito stay as fallbacks."
1554
+ },
1555
+ {
1556
+ "family": "Intos Narrow",
1557
+ "licenseClass": "open",
1558
+ "license": "OFL-1.1",
1559
+ "availability": [],
1560
+ "embeddableByOpf": true,
1561
+ "replacement": null,
1562
+ "sources": [
1563
+ "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
1564
+ "https://github.com/muglug/intos/blob/fef9315c14da9e4b23b4c3cac8e718998d4e4736/LICENSE.txt"
1565
+ ],
1566
+ "note": "Metric-compatible with Aptos Narrow (Aptos advance widths, kerning and vertical metrics on Inter-derived outlines). Vendored in opf-render at the pinned commit; single-maintainer project created September 2026, so Roboto and Carlito stay as fallbacks."
1567
+ },
1568
+ {
1569
+ "family": "Intos Serif",
1570
+ "licenseClass": "open",
1571
+ "license": "OFL-1.1",
1572
+ "availability": [],
1573
+ "embeddableByOpf": true,
1574
+ "replacement": null,
1575
+ "sources": [
1576
+ "https://github.com/muglug/intos/tree/fef9315c14da9e4b23b4c3cac8e718998d4e4736",
1577
+ "https://github.com/muglug/intos/blob/fef9315c14da9e4b23b4c3cac8e718998d4e4736/LICENSE.txt"
1578
+ ],
1579
+ "note": "Metric-compatible with Aptos Serif (Aptos Serif advance widths, kerning and vertical metrics on Gelasio-derived outlines). Vendored in opf-render at the pinned commit; Tinos stays as the visual fallback."
1580
+ },
1506
1581
  {
1507
1582
  "family": "Kalinga",
1508
1583
  "licenseClass": "proprietary-standard",
@@ -2722,7 +2797,7 @@ var fontPolicySource = {
2722
2797
  "https://learn.microsoft.com/en-us/typography/font-list/segoe-ui",
2723
2798
  "https://support.apple.com/en-us/122869"
2724
2799
  ],
2725
- "note": "Microsoft's OFL Selawik is the documented Segoe UI fallback but is not published as a pinned package; Red Hat Display is the closest measured shipped face. MS Learn lists vendor as Agfa Monotype but copyright Microsoft."
2800
+ "note": "Microsoft's OFL Selawik 1.01 was measured and rejected as a metric replacement: 0.16% mean and 2.5% maximum in regular, no italic faces (2.65% mean), and Semibold is 1.75% off. Red Hat Display remains the closest shipped face with all four styles; see docs/programs/font-fidelity-everywhere/font-licensing.md."
2726
2801
  },
2727
2802
  {
2728
2803
  "family": "Segoe UI Emoji",
@@ -1,6 +1,6 @@
1
- import { assertValidPresentation, visitContentPayloads } from './chunk-M4GTWRK7.js';
2
- import { DEFAULT_FONT_SCHEME, resolveFontSchemeReference, resolveFontFamilies, resolveCanvasDimensions, composeSlide, tableRowBoundaries } from './chunk-6UPHKXI5.js';
3
- import { catalogs } from './chunk-7LF37SG3.js';
1
+ import { assertValidPresentation, visitContentPayloads } from './chunk-JCXHSTSM.js';
2
+ import { DEFAULT_FONT_SCHEME, resolveFontSchemeReference, resolveFontFamilies, resolveCanvasDimensions, composeSlide, tableRowBoundaries } from './chunk-BVLWFMDX.js';
3
+ import { catalogs } from './chunk-AEUSVEUY.js';
4
4
 
5
5
  // src/pagination.ts
6
6
  var OPFPaginationError = class extends Error {
@@ -1 +1 @@
1
- export { DEFAULT_FONT_SCHEME, DEFAULT_FURNITURE_DATE_FORMAT, DEFAULT_SLIDE_NUMBER_FORMAT, MAX_COMPOSITION_DEPTH, OPFCompositionError, chartColorForFill, colorContrast, composeSlide, fitList, fitRichText, fitText, formatFurnitureDate, formatSlideNumber, layoutCode, layoutFurniture, layoutMetric, layoutQuote, layoutTable, layoutTimeline, measureText, measureTextOutline, placeTextLines, resolveCanvasDimensions, resolveFontFamilies, resolveFontSchemeReference, resolveSocialProfile, resolveTextStyle, slideImageShape, tableGrid, tableRowBoundaries, textColorForFill, textWidthMeasurer, wrapText } from './chunk-6UPHKXI5.js';
1
+ export { DEFAULT_FONT_SCHEME, DEFAULT_FURNITURE_DATE_FORMAT, DEFAULT_SLIDE_NUMBER_FORMAT, MAX_COMPOSITION_DEPTH, OPFCompositionError, chartColorForFill, colorContrast, composeSlide, fitList, fitRichText, fitText, formatFurnitureDate, formatSlideNumber, layoutCode, layoutFurniture, layoutMetric, layoutQuote, layoutTable, layoutTimeline, measureText, measureTextOutline, placeTextLines, resolveCanvasDimensions, resolveFontFamilies, resolveFontSchemeReference, resolveSocialProfile, resolveTextStyle, slideImageShape, tableGrid, tableRowBoundaries, textColorForFill, textWidthMeasurer, wrapText } from './chunk-BVLWFMDX.js';