@openpresentation/opf 0.10.1 → 0.11.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (280) hide show
  1. package/dist/{catalogs-DoVmvDr7.d.ts → catalogs-DJ-B5ZyD.d.ts} +79 -9
  2. package/dist/catalogs.d.ts +2 -2
  3. package/dist/catalogs.js +1 -1
  4. package/dist/{chunk-PQJRDNA6.js → chunk-6UPHKXI5.js} +381 -34
  5. package/dist/{chunk-TU7I3KSB.js → chunk-7LF37SG3.js} +7400 -5422
  6. package/dist/{chunk-EWJNRHXA.js → chunk-BP6WMSSS.js} +3 -3
  7. package/dist/{chunk-FHGJX5QK.js → chunk-KWIOQ3QR.js} +73 -32
  8. package/dist/{chunk-D3GQIREP.js → chunk-LTSDDBNW.js} +558 -52
  9. package/dist/{chunk-ZIL7MGZU.js → chunk-M4GTWRK7.js} +333 -102
  10. package/dist/chunk-NPYN4TZ5.js +3516 -0
  11. package/dist/{chunk-RS5GZ5RW.js → chunk-SDETQV7Y.js} +161 -0
  12. package/dist/composition-DzLwY-Mi.d.ts +887 -0
  13. package/dist/composition.d.ts +1 -676
  14. package/dist/composition.js +1 -1
  15. package/dist/docs.js +80 -20
  16. package/dist/examples.d.ts +1 -1
  17. package/dist/examples.js +11 -11
  18. package/dist/font-policy.d.ts +123 -0
  19. package/dist/font-policy.js +1 -0
  20. package/dist/index.d.ts +184 -4
  21. package/dist/index.js +473 -7
  22. package/dist/lint.d.ts +3 -3
  23. package/dist/lint.js +5 -5
  24. package/dist/pagination.d.ts +6 -2
  25. package/dist/pagination.js +5 -5
  26. package/dist/{presentation-BMTdX6O1.d.ts → presentation-bceTClm8.d.ts} +297 -30
  27. package/dist/repo-readme.js +1 -1
  28. package/dist/{schemas-BYe5y8-i.d.ts → schemas-X_NniU4A.d.ts} +8 -0
  29. package/dist/schemas.d.ts +1 -1
  30. package/dist/schemas.js +1 -1
  31. package/dist/spec/catalogs/audiences/academic.json +24 -0
  32. package/dist/spec/catalogs/audiences/all-hands.json +3 -1
  33. package/dist/spec/catalogs/audiences/board.json +3 -1
  34. package/dist/spec/catalogs/audiences/customer.json +25 -0
  35. package/dist/spec/catalogs/audiences/executive.json +24 -0
  36. package/dist/spec/catalogs/audiences/general-public.json +25 -0
  37. package/dist/spec/catalogs/audiences/index.json +73 -1
  38. package/dist/spec/catalogs/audiences/internal-team.json +25 -0
  39. package/dist/spec/catalogs/audiences/investor.json +25 -0
  40. package/dist/spec/catalogs/audiences/marketing.json +25 -0
  41. package/dist/spec/catalogs/audiences/media.json +24 -0
  42. package/dist/spec/catalogs/audiences/partner.json +25 -0
  43. package/dist/spec/catalogs/audiences/regulatory.json +25 -0
  44. package/dist/spec/catalogs/audiences/sales.json +25 -0
  45. package/dist/spec/catalogs/audiences/technical.json +25 -0
  46. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-2x.json +5 -0
  47. package/dist/spec/catalogs/chart-types/100pct-bullet-bar-3x.json +5 -0
  48. package/dist/spec/catalogs/chart-types/100pct-bullet-bar.json +5 -0
  49. package/dist/spec/catalogs/chart-types/100pct-bullet-column-2x.json +5 -0
  50. package/dist/spec/catalogs/chart-types/100pct-bullet-column-3x.json +5 -0
  51. package/dist/spec/catalogs/chart-types/100pct-bullet-column.json +5 -0
  52. package/dist/spec/catalogs/chart-types/100pct-progress-bar.json +10 -0
  53. package/dist/spec/catalogs/chart-types/100pct-stacked-area-2x.json +10 -0
  54. package/dist/spec/catalogs/chart-types/100pct-stacked-area-3x.json +6 -1
  55. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-2x.json +10 -0
  56. package/dist/spec/catalogs/chart-types/100pct-stacked-bar-3x.json +6 -1
  57. package/dist/spec/catalogs/chart-types/100pct-stacked-column-2x.json +10 -0
  58. package/dist/spec/catalogs/chart-types/100pct-stacked-column-3x.json +6 -1
  59. package/dist/spec/catalogs/chart-types/area.json +5 -0
  60. package/dist/spec/catalogs/chart-types/australia.json +10 -0
  61. package/dist/spec/catalogs/chart-types/bar.json +5 -0
  62. package/dist/spec/catalogs/chart-types/box-and-whisker-2x.json +10 -0
  63. package/dist/spec/catalogs/chart-types/box-and-whisker-3x.json +10 -0
  64. package/dist/spec/catalogs/chart-types/box-and-whisker.json +5 -0
  65. package/dist/spec/catalogs/chart-types/bullet-bar-2x.json +5 -0
  66. package/dist/spec/catalogs/chart-types/bullet-bar-3x.json +5 -0
  67. package/dist/spec/catalogs/chart-types/bullet-bar.json +5 -0
  68. package/dist/spec/catalogs/chart-types/bullet-column-2x.json +5 -0
  69. package/dist/spec/catalogs/chart-types/bullet-column-3x.json +5 -0
  70. package/dist/spec/catalogs/chart-types/bullet-column.json +5 -0
  71. package/dist/spec/catalogs/chart-types/canada.json +10 -0
  72. package/dist/spec/catalogs/chart-types/clustered-bar-2x.json +10 -0
  73. package/dist/spec/catalogs/chart-types/clustered-column.json +10 -0
  74. package/dist/spec/catalogs/chart-types/column.json +5 -0
  75. package/dist/spec/catalogs/chart-types/dot-plot-2x.json +5 -0
  76. package/dist/spec/catalogs/chart-types/dot-plot-3x.json +5 -0
  77. package/dist/spec/catalogs/chart-types/dot-plot-4x.json +5 -0
  78. package/dist/spec/catalogs/chart-types/dot-plot-5x.json +5 -0
  79. package/dist/spec/catalogs/chart-types/dot-plot-6x.json +5 -0
  80. package/dist/spec/catalogs/chart-types/dot-plot.json +5 -0
  81. package/dist/spec/catalogs/chart-types/doughnut.json +5 -0
  82. package/dist/spec/catalogs/chart-types/dumbbell.json +5 -0
  83. package/dist/spec/catalogs/chart-types/filled-radar.json +5 -0
  84. package/dist/spec/catalogs/chart-types/funnel.json +5 -0
  85. package/dist/spec/catalogs/chart-types/histogram.json +5 -0
  86. package/dist/spec/catalogs/chart-types/index.json +333 -233
  87. package/dist/spec/catalogs/chart-types/line-2x.json +10 -0
  88. package/dist/spec/catalogs/chart-types/line-3x.json +10 -0
  89. package/dist/spec/catalogs/chart-types/line-with-high-low-and-markers.json +5 -0
  90. package/dist/spec/catalogs/chart-types/line-with-high-low.json +5 -0
  91. package/dist/spec/catalogs/chart-types/line-with-markers-2x.json +10 -0
  92. package/dist/spec/catalogs/chart-types/line-with-markers-3x.json +10 -0
  93. package/dist/spec/catalogs/chart-types/line-with-markers.json +5 -0
  94. package/dist/spec/catalogs/chart-types/line.json +5 -0
  95. package/dist/spec/catalogs/chart-types/pareto.json +9 -14
  96. package/dist/spec/catalogs/chart-types/pie.json +5 -0
  97. package/dist/spec/catalogs/chart-types/radar-with-markers.json +5 -0
  98. package/dist/spec/catalogs/chart-types/radar.json +5 -0
  99. package/dist/spec/catalogs/chart-types/scatter.json +5 -0
  100. package/dist/spec/catalogs/chart-types/sparkline-2x.json +5 -0
  101. package/dist/spec/catalogs/chart-types/sparkline-3x.json +5 -0
  102. package/dist/spec/catalogs/chart-types/sparkline-4x.json +5 -0
  103. package/dist/spec/catalogs/chart-types/sparkline-5x.json +5 -0
  104. package/dist/spec/catalogs/chart-types/sparkline-6x.json +5 -0
  105. package/dist/spec/catalogs/chart-types/sparkline.json +5 -0
  106. package/dist/spec/catalogs/chart-types/stacked-area-2x.json +10 -0
  107. package/dist/spec/catalogs/chart-types/stacked-area-3x.json +6 -1
  108. package/dist/spec/catalogs/chart-types/stacked-bar-2x.json +10 -0
  109. package/dist/spec/catalogs/chart-types/stacked-bar-3x.json +6 -1
  110. package/dist/spec/catalogs/chart-types/stacked-column-2x.json +10 -0
  111. package/dist/spec/catalogs/chart-types/stacked-column-3x.json +6 -1
  112. package/dist/spec/catalogs/chart-types/stacked-line-2x.json +10 -0
  113. package/dist/spec/catalogs/chart-types/stacked-line-3x.json +6 -1
  114. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-2x.json +10 -0
  115. package/dist/spec/catalogs/chart-types/stacked-line-with-markers-3x.json +6 -1
  116. package/dist/spec/catalogs/chart-types/treemap-2x.json +10 -0
  117. package/dist/spec/catalogs/chart-types/treemap-3x.json +10 -0
  118. package/dist/spec/catalogs/chart-types/treemap.json +5 -0
  119. package/dist/spec/catalogs/chart-types/united-kingdom.json +10 -0
  120. package/dist/spec/catalogs/chart-types/united-states.json +10 -0
  121. package/dist/spec/catalogs/chart-types/waterfall.json +5 -0
  122. package/dist/spec/catalogs/chart-types/world.json +6 -1
  123. package/dist/spec/catalogs/font-schemes/consolas.json +3 -0
  124. package/dist/spec/catalogs/font-schemes/courier-new.json +3 -0
  125. package/dist/spec/catalogs/languages/afrikaans.json +3 -0
  126. package/dist/spec/catalogs/languages/albanian.json +3 -0
  127. package/dist/spec/catalogs/languages/amharic.json +3 -0
  128. package/dist/spec/catalogs/languages/arabic.json +3 -0
  129. package/dist/spec/catalogs/languages/armenian.json +3 -0
  130. package/dist/spec/catalogs/languages/aymara.json +3 -0
  131. package/dist/spec/catalogs/languages/azerbaijani.json +3 -0
  132. package/dist/spec/catalogs/languages/bengali.json +3 -0
  133. package/dist/spec/catalogs/languages/berber-latin.json +3 -0
  134. package/dist/spec/catalogs/languages/bosnian-latin.json +3 -0
  135. package/dist/spec/catalogs/languages/bulgarian.json +3 -0
  136. package/dist/spec/catalogs/languages/catalan.json +3 -0
  137. package/dist/spec/catalogs/languages/cebuano.json +3 -0
  138. package/dist/spec/catalogs/languages/chinese-simplified.json +3 -0
  139. package/dist/spec/catalogs/languages/chinese-traditional.json +3 -0
  140. package/dist/spec/catalogs/languages/chittagonian.json +3 -0
  141. package/dist/spec/catalogs/languages/croatian.json +3 -0
  142. package/dist/spec/catalogs/languages/czech.json +3 -0
  143. package/dist/spec/catalogs/languages/danish.json +3 -0
  144. package/dist/spec/catalogs/languages/dutch.json +3 -0
  145. package/dist/spec/catalogs/languages/english-au.json +3 -0
  146. package/dist/spec/catalogs/languages/english-ca.json +3 -0
  147. package/dist/spec/catalogs/languages/english-gb.json +3 -0
  148. package/dist/spec/catalogs/languages/english-in.json +3 -0
  149. package/dist/spec/catalogs/languages/english-us.json +3 -0
  150. package/dist/spec/catalogs/languages/english.json +3 -0
  151. package/dist/spec/catalogs/languages/estonian.json +3 -0
  152. package/dist/spec/catalogs/languages/filipino.json +3 -0
  153. package/dist/spec/catalogs/languages/finnish.json +3 -0
  154. package/dist/spec/catalogs/languages/french.json +3 -0
  155. package/dist/spec/catalogs/languages/fulfulde.json +3 -0
  156. package/dist/spec/catalogs/languages/galician.json +3 -0
  157. package/dist/spec/catalogs/languages/georgian.json +3 -0
  158. package/dist/spec/catalogs/languages/german.json +3 -0
  159. package/dist/spec/catalogs/languages/greek.json +3 -0
  160. package/dist/spec/catalogs/languages/gujarati.json +3 -0
  161. package/dist/spec/catalogs/languages/hausa.json +3 -0
  162. package/dist/spec/catalogs/languages/hebrew.json +3 -0
  163. package/dist/spec/catalogs/languages/hindi.json +3 -0
  164. package/dist/spec/catalogs/languages/hungarian.json +3 -0
  165. package/dist/spec/catalogs/languages/igbo.json +3 -0
  166. package/dist/spec/catalogs/languages/indonesian.json +3 -0
  167. package/dist/spec/catalogs/languages/italian.json +3 -0
  168. package/dist/spec/catalogs/languages/japanese.json +3 -0
  169. package/dist/spec/catalogs/languages/kannada.json +3 -0
  170. package/dist/spec/catalogs/languages/kazakh.json +3 -0
  171. package/dist/spec/catalogs/languages/khmer.json +3 -0
  172. package/dist/spec/catalogs/languages/kinyarwanda.json +3 -0
  173. package/dist/spec/catalogs/languages/korean.json +3 -0
  174. package/dist/spec/catalogs/languages/kurmanji.json +3 -0
  175. package/dist/spec/catalogs/languages/latvian.json +3 -0
  176. package/dist/spec/catalogs/languages/lithuanian.json +3 -0
  177. package/dist/spec/catalogs/languages/macedonian.json +3 -0
  178. package/dist/spec/catalogs/languages/malagasy.json +3 -0
  179. package/dist/spec/catalogs/languages/malay.json +3 -0
  180. package/dist/spec/catalogs/languages/malayalam.json +3 -0
  181. package/dist/spec/catalogs/languages/maori.json +3 -0
  182. package/dist/spec/catalogs/languages/marathi.json +3 -0
  183. package/dist/spec/catalogs/languages/mongolian.json +3 -0
  184. package/dist/spec/catalogs/languages/nepali.json +3 -0
  185. package/dist/spec/catalogs/languages/norwegian.json +3 -0
  186. package/dist/spec/catalogs/languages/odia.json +3 -0
  187. package/dist/spec/catalogs/languages/oromo.json +3 -0
  188. package/dist/spec/catalogs/languages/pashto.json +3 -0
  189. package/dist/spec/catalogs/languages/persian.json +3 -0
  190. package/dist/spec/catalogs/languages/polish.json +3 -0
  191. package/dist/spec/catalogs/languages/portuguese.json +3 -0
  192. package/dist/spec/catalogs/languages/punjabi-gurmukhi.json +3 -0
  193. package/dist/spec/catalogs/languages/punjabi-shahmukhi.json +3 -0
  194. package/dist/spec/catalogs/languages/romanian.json +3 -0
  195. package/dist/spec/catalogs/languages/russian.json +3 -0
  196. package/dist/spec/catalogs/languages/serbian-cyrillic.json +3 -0
  197. package/dist/spec/catalogs/languages/serbian-latin.json +3 -0
  198. package/dist/spec/catalogs/languages/shona.json +3 -0
  199. package/dist/spec/catalogs/languages/slovak.json +3 -0
  200. package/dist/spec/catalogs/languages/slovenian.json +3 -0
  201. package/dist/spec/catalogs/languages/somali.json +3 -0
  202. package/dist/spec/catalogs/languages/spanish.json +3 -0
  203. package/dist/spec/catalogs/languages/swahili.json +3 -0
  204. package/dist/spec/catalogs/languages/swedish.json +3 -0
  205. package/dist/spec/catalogs/languages/tagalog.json +3 -0
  206. package/dist/spec/catalogs/languages/tajik.json +3 -0
  207. package/dist/spec/catalogs/languages/tamil.json +3 -0
  208. package/dist/spec/catalogs/languages/telugu.json +3 -0
  209. package/dist/spec/catalogs/languages/thai.json +3 -0
  210. package/dist/spec/catalogs/languages/turkish.json +3 -0
  211. package/dist/spec/catalogs/languages/ukrainian.json +3 -0
  212. package/dist/spec/catalogs/languages/urdu.json +3 -0
  213. package/dist/spec/catalogs/languages/uzbek-latin.json +3 -0
  214. package/dist/spec/catalogs/languages/vietnamese-quoc-ngu.json +3 -0
  215. package/dist/spec/catalogs/languages/xhosa.json +3 -0
  216. package/dist/spec/catalogs/languages/yoruba.json +3 -0
  217. package/dist/spec/catalogs/languages/zulu.json +3 -0
  218. package/dist/spec/catalogs/narratives/board-meeting.json +21 -21
  219. package/dist/spec/catalogs/narratives/business-narrative.json +8 -8
  220. package/dist/spec/catalogs/narratives/business-review.json +12 -12
  221. package/dist/spec/catalogs/narratives/capacity-planning.json +8 -8
  222. package/dist/spec/catalogs/narratives/challenge-resolution.json +7 -7
  223. package/dist/spec/catalogs/narratives/change-story.json +64 -0
  224. package/dist/spec/catalogs/narratives/classic-story.json +7 -7
  225. package/dist/spec/catalogs/narratives/company-intro.json +9 -9
  226. package/dist/spec/catalogs/narratives/conference-talk.json +1 -1
  227. package/dist/spec/catalogs/narratives/data-story.json +66 -0
  228. package/dist/spec/catalogs/narratives/early-startup-pitch.json +12 -12
  229. package/dist/spec/catalogs/narratives/educate.json +9 -9
  230. package/dist/spec/catalogs/narratives/employee-review.json +8 -8
  231. package/dist/spec/catalogs/narratives/failure-analysis.json +10 -10
  232. package/dist/spec/catalogs/narratives/focus.json +12 -12
  233. package/dist/spec/catalogs/narratives/golden-circle.json +1 -1
  234. package/dist/spec/catalogs/narratives/heros-journey.json +64 -0
  235. package/dist/spec/catalogs/narratives/index.json +81 -0
  236. package/dist/spec/catalogs/narratives/innovation.json +9 -9
  237. package/dist/spec/catalogs/narratives/justice.json +11 -11
  238. package/dist/spec/catalogs/narratives/marketing-strategy.json +11 -11
  239. package/dist/spec/catalogs/narratives/performance-improvement-plan.json +8 -8
  240. package/dist/spec/catalogs/narratives/performance-review.json +11 -11
  241. package/dist/spec/catalogs/narratives/persuade.json +7 -7
  242. package/dist/spec/catalogs/narratives/persuasive-sales.json +8 -8
  243. package/dist/spec/catalogs/narratives/pitch-deck.json +3 -3
  244. package/dist/spec/catalogs/narratives/problem-solution.json +2 -2
  245. package/dist/spec/catalogs/narratives/product-launch.json +10 -10
  246. package/dist/spec/catalogs/narratives/project-proposal.json +10 -10
  247. package/dist/spec/catalogs/narratives/pyramid-principle.json +48 -0
  248. package/dist/spec/catalogs/narratives/qbr.json +3 -3
  249. package/dist/spec/catalogs/narratives/rags-to-riches.json +7 -7
  250. package/dist/spec/catalogs/narratives/reveal.json +8 -8
  251. package/dist/spec/catalogs/narratives/scqa.json +1 -1
  252. package/dist/spec/catalogs/narratives/situation-complication-resolution.json +56 -0
  253. package/dist/spec/catalogs/narratives/sparkline.json +56 -0
  254. package/dist/spec/catalogs/narratives/star-method.json +56 -0
  255. package/dist/spec/catalogs/narratives/status-update.json +6 -6
  256. package/dist/spec/catalogs/narratives/strategic-advisory.json +7 -7
  257. package/dist/spec/catalogs/narratives/strategic-narrative.json +1 -1
  258. package/dist/spec/catalogs/narratives/survey-analysis.json +10 -10
  259. package/dist/spec/catalogs/narratives/survival-story.json +10 -10
  260. package/dist/spec/catalogs/narratives/transformation-arc.json +1 -1
  261. package/dist/spec/catalogs/narratives/trend-analysis.json +7 -7
  262. package/dist/spec/catalogs/narratives/underdog-victory.json +8 -8
  263. package/dist/spec/catalogs/narratives/venture-pitch.json +12 -12
  264. package/dist/spec/catalogs/narratives/vision-roadmap.json +65 -0
  265. package/dist/spec/catalogs/narratives/weekly-progress.json +10 -10
  266. package/dist/spec/catalogs/narratives/what-so-what-now-what.json +48 -0
  267. package/dist/spec/openapi.yaml +5 -0
  268. package/dist/spec/reference/engine-defaults.json +2 -2
  269. package/dist/spec/reference/font-policy.json +3435 -0
  270. package/dist/spec/reference/font-policy.schema.json +328 -0
  271. package/dist/spec/schemas/chart-type.schema.json +51 -11
  272. package/dist/spec/schemas/font-scheme.schema.json +91 -1
  273. package/dist/spec/schemas/language.schema.json +10 -5
  274. package/dist/spec/schemas/opf.schema.json +241 -32
  275. package/dist/spec-files.d.ts +1 -1
  276. package/dist/spec-files.js +1 -1
  277. package/dist/types.d.ts +3 -3
  278. package/dist/validator.d.ts +7 -4
  279. package/dist/validator.js +4 -4
  280. package/package.json +6 -2
@@ -0,0 +1,328 @@
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://openpresentation.org/schema/opf-font-policy/v1",
4
+ "title": "OPF font policy",
5
+ "description": "Schema for spec/reference/font-policy.json (font-fidelity-everywhere FF-31): one row per font family with its license class, viewer availability, whether OPF may embed it, and the openly licensed replacement a renderer previews it with. Reference data for engines, not part of the OPF document contract.",
6
+ "type": "object",
7
+ "additionalProperties": false,
8
+ "required": [
9
+ "provisionalDecisions",
10
+ "description",
11
+ "version",
12
+ "measurement",
13
+ "families"
14
+ ],
15
+ "properties": {
16
+ "$schema": {
17
+ "type": "string"
18
+ },
19
+ "provisionalDecisions": {
20
+ "description": "The one place provisional owner decisions live. Rows whose replacement names a decision take its family and compatibility from it.",
21
+ "type": "object",
22
+ "additionalProperties": false,
23
+ "required": [
24
+ "status",
25
+ "note",
26
+ "decisions"
27
+ ],
28
+ "properties": {
29
+ "status": {
30
+ "type": "string",
31
+ "pattern": "provisional"
32
+ },
33
+ "note": {
34
+ "type": "string",
35
+ "minLength": 1
36
+ },
37
+ "decisions": {
38
+ "type": "object",
39
+ "minProperties": 1,
40
+ "propertyNames": {
41
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
42
+ },
43
+ "additionalProperties": {
44
+ "type": "object",
45
+ "additionalProperties": false,
46
+ "required": [
47
+ "replacement",
48
+ "compatibility"
49
+ ],
50
+ "properties": {
51
+ "replacement": {
52
+ "$ref": "#/$defs/family"
53
+ },
54
+ "compatibility": {
55
+ "$ref": "#/$defs/compatibility"
56
+ },
57
+ "metricModeFallback": {
58
+ "description": "Metric-mode registries still preview with this visual replacement (reported as visual) so an earlier metric behaviour does not regress.",
59
+ "type": "boolean"
60
+ },
61
+ "note": {
62
+ "type": "string"
63
+ }
64
+ }
65
+ }
66
+ }
67
+ }
68
+ },
69
+ "description": {
70
+ "type": "string",
71
+ "minLength": 1
72
+ },
73
+ "version": {
74
+ "type": "integer",
75
+ "minimum": 1
76
+ },
77
+ "measurement": {
78
+ "type": "object",
79
+ "additionalProperties": false,
80
+ "required": [
81
+ "tool",
82
+ "corpus",
83
+ "evidence",
84
+ "definition"
85
+ ],
86
+ "properties": {
87
+ "tool": {
88
+ "type": "string"
89
+ },
90
+ "corpus": {
91
+ "type": "string"
92
+ },
93
+ "evidence": {
94
+ "type": "string"
95
+ },
96
+ "definition": {
97
+ "type": "string"
98
+ }
99
+ }
100
+ },
101
+ "families": {
102
+ "type": "array",
103
+ "minItems": 1,
104
+ "items": {
105
+ "$ref": "#/$defs/entry"
106
+ }
107
+ }
108
+ },
109
+ "$defs": {
110
+ "family": {
111
+ "type": "string",
112
+ "minLength": 1,
113
+ "pattern": "^[^\\u0000-\\u001f\"'\\\\<>;]+$"
114
+ },
115
+ "compatibility": {
116
+ "enum": [
117
+ "metric",
118
+ "visual"
119
+ ]
120
+ },
121
+ "share": {
122
+ "type": "number",
123
+ "minimum": 0,
124
+ "maximum": 1
125
+ },
126
+ "measured": {
127
+ "type": "object",
128
+ "additionalProperties": false,
129
+ "required": [
130
+ "replacement",
131
+ "meanAbsWidthDelta",
132
+ "meanWidthDelta",
133
+ "maxAbsWidthDelta",
134
+ "styles",
135
+ "reference"
136
+ ],
137
+ "properties": {
138
+ "replacement": {
139
+ "$ref": "#/$defs/family"
140
+ },
141
+ "meanAbsWidthDelta": {
142
+ "$ref": "#/$defs/share"
143
+ },
144
+ "meanWidthDelta": {
145
+ "type": "number",
146
+ "minimum": -1,
147
+ "maximum": 1
148
+ },
149
+ "maxAbsWidthDelta": {
150
+ "$ref": "#/$defs/share"
151
+ },
152
+ "styles": {
153
+ "type": "integer",
154
+ "minimum": 1,
155
+ "maximum": 4
156
+ },
157
+ "reference": {
158
+ "type": "string",
159
+ "minLength": 1
160
+ }
161
+ }
162
+ },
163
+ "replacement": {
164
+ "type": "object",
165
+ "additionalProperties": false,
166
+ "required": [
167
+ "measured"
168
+ ],
169
+ "properties": {
170
+ "family": {
171
+ "$ref": "#/$defs/family"
172
+ },
173
+ "compatibility": {
174
+ "$ref": "#/$defs/compatibility"
175
+ },
176
+ "decision": {
177
+ "type": "string",
178
+ "pattern": "^[a-z0-9]+(?:-[a-z0-9]+)*$"
179
+ },
180
+ "weight": {
181
+ "type": "integer",
182
+ "minimum": 100,
183
+ "maximum": 900
184
+ },
185
+ "measured": {
186
+ "oneOf": [
187
+ {
188
+ "type": "null"
189
+ },
190
+ {
191
+ "$ref": "#/$defs/measured"
192
+ }
193
+ ]
194
+ },
195
+ "source": {
196
+ "type": "string",
197
+ "format": "uri"
198
+ }
199
+ },
200
+ "if": {
201
+ "properties": {
202
+ "decision": {
203
+ "type": "string"
204
+ }
205
+ },
206
+ "required": [
207
+ "decision"
208
+ ]
209
+ },
210
+ "then": {
211
+ "properties": {
212
+ "family": false,
213
+ "compatibility": false
214
+ }
215
+ },
216
+ "else": {
217
+ "properties": {
218
+ "family": {
219
+ "$ref": "#/$defs/family"
220
+ },
221
+ "compatibility": {
222
+ "$ref": "#/$defs/compatibility"
223
+ }
224
+ },
225
+ "required": [
226
+ "family",
227
+ "compatibility"
228
+ ]
229
+ }
230
+ },
231
+ "entry": {
232
+ "type": "object",
233
+ "additionalProperties": false,
234
+ "required": [
235
+ "family",
236
+ "licenseClass",
237
+ "license",
238
+ "availability",
239
+ "embeddableByOpf",
240
+ "replacement",
241
+ "sources"
242
+ ],
243
+ "properties": {
244
+ "family": {
245
+ "$ref": "#/$defs/family"
246
+ },
247
+ "licenseClass": {
248
+ "enum": [
249
+ "open",
250
+ "proprietary-standard",
251
+ "proprietary-nonstandard"
252
+ ]
253
+ },
254
+ "license": {
255
+ "type": "string",
256
+ "minLength": 1
257
+ },
258
+ "availability": {
259
+ "type": "array",
260
+ "uniqueItems": true,
261
+ "items": {
262
+ "enum": [
263
+ "windows",
264
+ "windows-optional",
265
+ "macos",
266
+ "office",
267
+ "office-cloud"
268
+ ]
269
+ }
270
+ },
271
+ "embeddableByOpf": {
272
+ "type": "boolean"
273
+ },
274
+ "replacement": {
275
+ "oneOf": [
276
+ {
277
+ "type": "null"
278
+ },
279
+ {
280
+ "$ref": "#/$defs/replacement"
281
+ }
282
+ ]
283
+ },
284
+ "alternates": {
285
+ "type": "array",
286
+ "minItems": 1,
287
+ "uniqueItems": true,
288
+ "items": {
289
+ "$ref": "#/$defs/family"
290
+ }
291
+ },
292
+ "sources": {
293
+ "type": "array",
294
+ "minItems": 1,
295
+ "items": {
296
+ "type": "string",
297
+ "format": "uri",
298
+ "pattern": "^https://"
299
+ }
300
+ },
301
+ "note": {
302
+ "type": "string"
303
+ }
304
+ },
305
+ "if": {
306
+ "properties": {
307
+ "licenseClass": {
308
+ "const": "open"
309
+ }
310
+ }
311
+ },
312
+ "then": {
313
+ "properties": {
314
+ "embeddableByOpf": {
315
+ "const": true
316
+ }
317
+ }
318
+ },
319
+ "else": {
320
+ "properties": {
321
+ "embeddableByOpf": {
322
+ "const": false
323
+ }
324
+ }
325
+ }
326
+ }
327
+ }
328
+ }
@@ -2,7 +2,7 @@
2
2
  "$schema": "https://json-schema.org/draft/2020-12/schema",
3
3
  "$id": "https://openpresentation.org/schema/opf-chart-type/v1",
4
4
  "title": "Chart Type",
5
- "description": "Schema for chart-type records in the pptx.gallery catalog. Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.",
5
+ "description": "Schema for chart-type records in the pptx.gallery catalog. The bundled catalog holds one record per chart type that Aspose.Slides officially supports (see mappings.renderers[\"aspose-slides\"].chartType). Each record describes a named chart variant, its Open XML mapping, its series/category cardinality, the column structure of the underlying workbook, and a small sample dataset suitable for previews. Chart types are referenced from OPF chart content payloads; the engine resolves the reference against catalogs.chartTypes (inline) -> catalogs.chartTypes.source -> the default catalog at https://www.pptx.gallery/chart-types.",
6
6
  "type": "object",
7
7
  "additionalProperties": false,
8
8
  "required": [
@@ -23,11 +23,11 @@
23
23
  "description": "Stable slug used by OPF documents to reference this chart type. Lowercase kebab-case. Chart type ids may start with a digit (e.g., '100pct-stacked-column', '3d-column') to mirror conventional chart naming.",
24
24
  "examples": [
25
25
  "column",
26
- "clustered-column",
27
- "stacked-column",
26
+ "bar",
27
+ "stacked-column-3x",
28
28
  "doughnut",
29
- "bullet-column",
30
- "100pct-stacked-column"
29
+ "treemap",
30
+ "100pct-stacked-column-3x"
31
31
  ]
32
32
  },
33
33
  "name": {
@@ -35,9 +35,9 @@
35
35
  "description": "Stable display/programmatic name for this chart type.",
36
36
  "examples": [
37
37
  "COLUMN",
38
- "CLUSTERED_COLUMN",
38
+ "STACKED_COLUMN_3X",
39
39
  "DOUGHNUT",
40
- "BULLET_COLUMN"
40
+ "TREEMAP"
41
41
  ]
42
42
  },
43
43
  "label": {
@@ -45,9 +45,9 @@
45
45
  "description": "Human-readable label shown in chart pickers.",
46
46
  "examples": [
47
47
  "Column",
48
- "Clustered Column",
48
+ "Stacked Column",
49
49
  "Doughnut",
50
- "Bullet Column"
50
+ "Treemap"
51
51
  ]
52
52
  },
53
53
  "summary": {
@@ -69,6 +69,10 @@
69
69
  "$ref": "#/$defs/ChartTypeMappings",
70
70
  "description": "Canonical and optional renderer-specific mappings used by engines to render this chart type."
71
71
  },
72
+ "deprecation": {
73
+ "$ref": "#/$defs/ChartTypeDeprecation",
74
+ "description": "Present when this chart type is deprecated. Deprecated records stay resolvable so existing documents keep validating, but pickers and default listings exclude them, validators warn when a document references them, and they are removed in the release named by `removal`."
75
+ },
72
76
  "group": {
73
77
  "type": "string",
74
78
  "description": "Top-level grouping in the chart picker (column, bar, line, area, pie, radar, etc.).",
@@ -305,6 +309,35 @@
305
309
  }
306
310
  },
307
311
  "$defs": {
312
+ "ChartTypeDeprecation": {
313
+ "type": "object",
314
+ "additionalProperties": false,
315
+ "required": [
316
+ "replacedBy"
317
+ ],
318
+ "properties": {
319
+ "replacedBy": {
320
+ "type": "string",
321
+ "pattern": "^[a-z0-9][a-z0-9-]*$",
322
+ "description": "Id of the non-deprecated chart type that documents should reference instead.",
323
+ "examples": [
324
+ "column",
325
+ "stacked-column-3x"
326
+ ]
327
+ },
328
+ "reason": {
329
+ "type": "string",
330
+ "description": "Why the record is deprecated."
331
+ },
332
+ "removal": {
333
+ "type": "string",
334
+ "description": "Package version in which the record is scheduled for removal from the bundled catalog.",
335
+ "examples": [
336
+ "0.12.0"
337
+ ]
338
+ }
339
+ }
340
+ },
308
341
  "ChartTypeMappings": {
309
342
  "type": "object",
310
343
  "additionalProperties": false,
@@ -318,11 +351,18 @@
318
351
  },
319
352
  "renderers": {
320
353
  "type": "object",
321
- "description": "Optional renderer-specific mappings. Keys are renderer ids; values are intentionally opaque to OPF.",
354
+ "description": "Optional renderer-specific mappings. Keys are renderer ids; values are intentionally opaque to OPF. The bundled catalog records the matching Aspose.Slides ChartType enumeration member under the \"aspose-slides\" key, e.g. {\"aspose-slides\": {\"chartType\": \"StackedColumn\"}}.",
322
355
  "additionalProperties": {
323
356
  "type": "object",
324
357
  "additionalProperties": true
325
- }
358
+ },
359
+ "examples": [
360
+ {
361
+ "aspose-slides": {
362
+ "chartType": "ClusteredColumn"
363
+ }
364
+ }
365
+ ]
326
366
  }
327
367
  }
328
368
  },
@@ -58,6 +58,96 @@
58
58
  "Microsoft YaHei"
59
59
  ]
60
60
  },
61
+ "code": {
62
+ "type": "object",
63
+ "description": "Optional monospaced font for code blocks and inline code. It has the same shape as the OPF FontScheme 'code' role, so a record and an inline design.fontScheme override are interchangeable. OOXML has no code slot, so exporters write this family on code runs. When neither design.fontScheme nor the resolved record defines 'code', engines fall back to Roboto Mono.",
64
+ "required": [
65
+ "family"
66
+ ],
67
+ "properties": {
68
+ "family": {
69
+ "type": "string",
70
+ "description": "Monospaced font family name.",
71
+ "examples": [
72
+ "Consolas",
73
+ "Courier New"
74
+ ]
75
+ },
76
+ "weight": {
77
+ "type": "number",
78
+ "description": "Numeric font weight (e.g., 400 for regular, 700 for bold)."
79
+ },
80
+ "style": {
81
+ "type": "string",
82
+ "enum": [
83
+ "normal",
84
+ "italic"
85
+ ],
86
+ "description": "Font style."
87
+ },
88
+ "letterSpacing": {
89
+ "type": "number",
90
+ "description": "Letter spacing (tracking) in ems."
91
+ }
92
+ },
93
+ "examples": [
94
+ {
95
+ "family": "Consolas"
96
+ }
97
+ ]
98
+ },
99
+ "eastAsian": {
100
+ "type": "object",
101
+ "additionalProperties": false,
102
+ "minProperties": 1,
103
+ "description": "East Asian script fonts. Maps to the OOXML a:ea element of majorFont (major) and minorFont (minor), and to run-level a:ea. When set, they fill the eastAsian slot for every language; when omitted, the slot comes from this scheme's own major/minor when languageFamily is 'ea' and the scheme's languages list is empty or names the presentation language, then from the presentation language's font scheme for East Asian languages, and otherwise from the latin (major/minor) families. A missing 'major' or 'minor' falls back to the other.",
104
+ "properties": {
105
+ "major": {
106
+ "type": "string",
107
+ "description": "Heading (major) eastAsian font family — mirrors majorFont a:ea.",
108
+ "examples": [
109
+ "Noto Sans JP",
110
+ "Meiryo",
111
+ "Microsoft YaHei"
112
+ ]
113
+ },
114
+ "minor": {
115
+ "type": "string",
116
+ "description": "Body (minor) eastAsian font family — mirrors minorFont a:ea.",
117
+ "examples": [
118
+ "Noto Sans JP",
119
+ "Meiryo",
120
+ "Microsoft YaHei"
121
+ ]
122
+ }
123
+ }
124
+ },
125
+ "complexScript": {
126
+ "type": "object",
127
+ "additionalProperties": false,
128
+ "minProperties": 1,
129
+ "description": "Complex-script fonts (for example Arabic, Hebrew, Indic and Thai). Maps to the OOXML a:cs element of majorFont (major) and minorFont (minor), and to run-level a:cs. When set, they fill the complexScript slot for every language; when omitted, the slot comes from this scheme's own major/minor when languageFamily is 'cs' and the scheme's languages list is empty or names the presentation language, then from the presentation language's font scheme for complex-script languages, and otherwise from the latin (major/minor) families. A missing 'major' or 'minor' falls back to the other.",
130
+ "properties": {
131
+ "major": {
132
+ "type": "string",
133
+ "description": "Heading (major) complexScript font family — mirrors majorFont a:cs.",
134
+ "examples": [
135
+ "Noto Sans Arabic",
136
+ "Arial",
137
+ "Mangal"
138
+ ]
139
+ },
140
+ "minor": {
141
+ "type": "string",
142
+ "description": "Body (minor) complexScript font family — mirrors minorFont a:cs.",
143
+ "examples": [
144
+ "Noto Sans Arabic",
145
+ "Arial",
146
+ "Mangal"
147
+ ]
148
+ }
149
+ }
150
+ },
61
151
  "type": {
62
152
  "type": "string",
63
153
  "enum": [
@@ -82,7 +172,7 @@
82
172
  "ea",
83
173
  "cs"
84
174
  ],
85
- "description": "OOXML font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' for East Asian scripts, 'cs' for Complex Scripts."
175
+ "description": "OOXML font-language family this scheme is intended for: 'latin' for Latin-script content, 'ea' for East Asian scripts, 'cs' for Complex Scripts. As the design font scheme, an 'ea' or 'cs' scheme also fills that script slot with its own major/minor families when its languages list is empty or names the presentation language."
86
176
  },
87
177
  "languages": {
88
178
  "type": "array",
@@ -60,20 +60,25 @@
60
60
  "zh-Hans"
61
61
  ]
62
62
  },
63
+ "ooxmlLang": {
64
+ "type": "string",
65
+ "description": "Curated culture tag for OOXML text-run language attributes (a:rPr/@lang, a:endParaRPr/@lang), in the language-[Script-]REGION form Office recognizes (e.g. 'ja-JP', 'ar-SA', 'ms-MY', 'nb-NO', 'fil-PH', 'zh-CN'). Engines emit it instead of 'bcp47' when the document names the language by catalog id or by a tag without a region; a region-bearing tag written by the author is emitted as written. Curated rather than inferred so output does not depend on the runtime's locale data.",
66
+ "examples": ["en-US", "ja-JP", "ar-SA", "ms-MY", "nb-NO", "zh-CN"]
67
+ },
63
68
  "direction": {
64
69
  "type": "string",
65
70
  "enum": ["ltr", "rtl"],
66
- "description": "Base text direction for the language.",
71
+ "description": "Base text direction for the language. When omitted, engines derive it from the script: Arabic (Arab), Hebrew (Hebr), Syriac (Syrc), Thaana (Thaa), N'Ko (Nkoo), Adlam (Adlm), Samaritan (Samr), Mandaic (Mand) and Hanifi Rohingya (Rohg) are right-to-left; every other script is left-to-right. Bundled language records state it explicitly.",
67
72
  "examples": ["ltr", "rtl"]
68
73
  },
69
74
  "script": {
70
75
  "type": "string",
71
- "description": "ISO 15924 script code when the writing system should be explicit.",
72
- "examples": ["Latn", "Arab", "Cyrl", "Hans", "Hant"]
76
+ "description": "ISO 15924 script code of the language's writing system. The script selects the OOXML font slot the language's text uses: East Asian scripts (Hans, Hant, Hani, Jpan, Kore, Hang, Hira, Kana, Bopo, Yiii) use the eastAsian slot; complex scripts (for example Arab, Hebr, Syrc, Thaa, Deva, Beng, Guru, Gujr, Orya, Taml, Telu, Knda, Mlym, Sinh, Thai, Laoo, Tibt, Mymr, Khmr, Mong) use the complexScript slot; every other script (Latn, Cyrl, Grek, Armn, Geor, Ethi, ...) uses the latin slot. When omitted, engines infer it from the BCP-47 tag. Bundled language records state it explicitly. See docs/programs/font-fidelity-everywhere/script-font-model.md.",
77
+ "examples": ["Latn", "Cyrl", "Grek", "Arab", "Hebr", "Jpan", "Kore", "Hans", "Hant", "Deva", "Thai"]
73
78
  },
74
79
  "fontScheme": {
75
80
  "type": "string",
76
- "description": "Default font-scheme id for this language when targeting PowerPoint output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does.",
81
+ "description": "Default font-scheme id for this language when targeting PowerPoint output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does. Its major/minor families fill the language's script slot (eastAsian or complexScript, chosen by 'script') unless the effective design font scheme sets that slot itself; the latin slot always follows the design font scheme.",
77
82
  "examples": [
78
83
  "aptos",
79
84
  "microsoft-yahei",
@@ -82,7 +87,7 @@
82
87
  },
83
88
  "googleFontScheme": {
84
89
  "type": "string",
85
- "description": "Default font-scheme id for this language when targeting Google Slides output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does.",
90
+ "description": "Default font-scheme id for this language when targeting Google Slides output. Resolves against catalogs.fontSchemes the same way design.fontScheme or design.fontScheme.id does. Used in place of 'fontScheme' when resolving script fonts for Google Slides output.",
86
91
  "examples": [
87
92
  "roboto",
88
93
  "noto-sans",