Files
wehub-resource-sync 8cb1f9f479
Publish SDK (PyPI) / publish (push) Has been cancelled
Publish SDK (npm) / publish (@aionui/officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (windows-latest) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/officecli-sdk) (push) Has been cancelled
Publish SDK (npm) / publish (@officecli/sdk) (push) Has been cancelled
Publish SDK (npm) / publish (officecli-sdk) (push) Has been cancelled
SDK smoke / smoke (macos-latest) (push) Has been cancelled
SDK smoke / smoke (ubuntu-latest) (push) Has been cancelled
Skill parity / diff (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:09:29 +08:00

245 lines
10 KiB
JSON

{
"$schema": "../_schema.json",
"format": "pptx",
"element": "textbox",
"parent": "slide",
"operations": {
"add": true,
"set": true,
"get": true,
"query": true,
"remove": true
},
"paths": {
"positional": ["/slide[N]/shape[M]"]
},
"note": "Alias for shape — both route to AddShape (with --prop formula → AddEquation). Common text/position/size/font props inlined below; full surface (geometry, rotation, effects, …) in pptx/shape.json. effective.* keys behave as documented in pptx/shape.json.",
"properties": {
"text": {
"type": "string",
"add": true, "set": true, "get": true,
"examples": ["--prop text=\"Hello\""],
"readback": "plain text content of the textbox",
"enforcement": "strict"
},
"font": {
"type": "string",
"description": "font family. Bare 'font' targets Latin + EastAsian; for per-script control (Japanese / Korean / Arabic) use font.latin, font.ea, or font.cs.",
"aliases": ["fontname", "fontFamily"],
"add": true, "set": true, "get": true,
"examples": ["--prop font=Calibri"],
"readback": "font family string",
"enforcement": "report"
},
"font.latin": {
"type": "string",
"description": "Latin-script font slot (a:latin) only.",
"add": true, "set": true, "get": true,
"examples": ["--prop font.latin=Calibri"],
"enforcement": "report"
},
"font.ea": {
"type": "string",
"description": "East-Asian font slot (a:ea) — Chinese / Japanese / Korean text.",
"aliases": ["font.eastasia", "font.eastasian"],
"add": true, "set": true, "get": true,
"examples": ["--prop font.ea=\"メイリオ\""],
"enforcement": "report"
},
"font.cs": {
"type": "string",
"description": "Complex-script font slot (a:cs) — Arabic / Hebrew / Thai etc.",
"aliases": ["font.complexscript", "font.complex"],
"add": true, "set": true, "get": true,
"examples": ["--prop font.cs=\"Arabic Typesetting\""],
"enforcement": "report"
},
"direction": {
"type": "enum",
"values": ["ltr", "rtl"],
"description": "paragraph reading direction (a:pPr rtl). Use 'rtl' for Arabic / Hebrew layouts.",
"aliases": ["dir", "rtl"],
"add": true, "set": true, "get": true,
"examples": ["--prop direction=rtl"],
"enforcement": "report"
},
"size": {
"type": "font-size",
"description": "font size — Add/Set forwards to the first run; Get exposes the inheritance-resolved value as effective.size, not bare size.",
"aliases": ["fontsize"],
"add": true, "set": true, "get": false,
"examples": ["--prop size=14", "--prop size=14pt", "--prop size=10.5pt"],
"readback": "n/a at shape level — read effective.size on the shape, or size on the inner run",
"enforcement": "strict"
},
"bold": {
"type": "bool",
"description": "Add/Set forwards to the first run; Get does not surface bold at the shape level.",
"add": true, "set": true, "get": false,
"examples": ["--prop bold=true"],
"readback": "n/a at shape level — read bold on the inner run",
"enforcement": "strict"
},
"italic": {
"type": "bool",
"description": "Add/Set forwards to the first run; Get does not surface italic at the shape level.",
"add": true, "set": true, "get": false,
"examples": ["--prop italic=true"],
"readback": "n/a at shape level — read italic on the inner run",
"enforcement": "strict"
},
"color": {
"type": "color",
"description": "text color — Add/Set forwards to the first run; Get exposes the inheritance-resolved value as effective.color, not bare color.",
"add": true, "set": true, "get": false,
"examples": ["--prop color=0000FF", "--prop color=#0000FF"],
"readback": "n/a at shape level — read effective.color on the shape, or color on the inner run",
"enforcement": "strict"
},
"fill": {
"type": "color",
"description": "textbox background fill",
"aliases": ["background"],
"add": true, "set": true, "get": true,
"examples": ["--prop fill=FFFF00", "--prop fill=accent1"],
"readback": "#RRGGBB (uppercase) or scheme color name",
"enforcement": "strict"
},
"align": {
"type": "enum",
"values": ["left", "center", "right", "justify"],
"description": "text horizontal alignment",
"add": true, "set": true, "get": true,
"examples": ["--prop align=center"],
"readback": "one of: left | center | right | justify",
"enforcement": "strict"
},
"width": {
"type": "length",
"add": true, "set": true, "get": true,
"examples": ["--prop width=5cm"],
"readback": "length in cm",
"enforcement": "strict"
},
"height": {
"type": "length",
"add": true, "set": true, "get": true,
"examples": ["--prop height=3cm"],
"readback": "length in cm",
"enforcement": "strict"
},
"x": {
"type": "length",
"description": "horizontal position of the textbox",
"add": true, "set": true, "get": true,
"examples": ["--prop x=2cm", "--prop x=1in", "--prop x=72pt"],
"readback": "length in cm (e.g. \"2cm\")",
"enforcement": "strict"
},
"y": {
"type": "length",
"description": "vertical position of the textbox",
"add": true, "set": true, "get": true,
"examples": ["--prop y=3cm"],
"readback": "length in cm (e.g. \"3cm\")",
"enforcement": "strict"
},
"effective.direction": {
"type": "enum",
"values": ["rtl", "ltr"],
"description": "resolved reading direction inherited from placeholder→layout→master→presentation defaults. Suppressed when 'direction' is set directly on the textbox.",
"add": false, "set": false, "get": true,
"readback": "rtl | ltr",
"enforcement": "report"
},
"effective.size": {
"type": "length",
"description": "resolved font size inherited from placeholder→layout→master→presentation defaults. Suppressed when 'size' is set directly on the textbox.",
"add": false, "set": false, "get": true,
"readback": "unit-qualified pt (e.g. \"18pt\")",
"enforcement": "report"
},
"effective.font": {
"type": "string",
"description": "resolved font name inherited from placeholder→layout→master→presentation defaults. Suppressed when 'font' is set directly on the textbox.",
"add": false, "set": false, "get": true,
"readback": "font name",
"enforcement": "report"
},
"effective.color": {
"type": "color",
"description": "resolved text color inherited from placeholder→layout→master→presentation defaults. Suppressed when 'color' is set directly on the textbox.",
"add": false, "set": false, "get": true,
"readback": "#-prefixed uppercase hex (scheme colors pass through)",
"enforcement": "report"
},
"effective.bold": {
"type": "bool",
"description": "resolved bold inherited from placeholder→layout→master→presentation defaults. Suppressed when 'bold' is set directly on the textbox.",
"add": false, "set": false, "get": true,
"readback": "true/false",
"enforcement": "report"
},
"autoFit": {
"type": "enum",
"description": "auto-fit mode for the textbox text body. Alias: autofit.",
"values": ["none", "normal", "shape", "noAutofit", "spAutoFit"],
"aliases": ["autofit"],
"add": true, "set": true, "get": true,
"examples": ["--prop autoFit=shape"],
"readback": "one of: none | normal | shape",
"enforcement": "report"
},
"valign": {
"type": "enum",
"values": ["top", "center", "middle", "bottom"],
"description": "text vertical anchoring inside the textbox (a:bodyPr anchor). 'middle' is an input alias for 'center' — Get always reads back 'center'.",
"add": true, "set": true, "get": true,
"examples": ["--prop valign=middle", "--prop valign=bottom"],
"readback": "one of: top | center | bottom",
"enforcement": "strict"
},
"margin": {
"type": "length",
"description": "text body insets (a:bodyPr lIns/tIns/rIns/bIns). Single value applies to all four sides; CSS-style 4-value form is 'lIns,tIns,rIns,bIns'. '0' / '0cm' is a valid round-trip and is preserved (not collapsed to default).",
"add": true, "set": true, "get": true,
"examples": ["--prop margin=0.25cm", "--prop margin=0.2cm,0.5cm,0.2cm,0.5cm", "--prop margin=0"],
"readback": "single length (e.g. \"0.25cm\") when all four sides match, otherwise comma-separated 4-tuple",
"enforcement": "strict"
},
"id": {
"type": "number",
"description": "cNvPr shape id; @id in /shape[@id=ID]. add honors a caller-supplied id so dump-replay keeps it stable for spTgt animation refs; immutable after creation.",
"add": true, "set": false, "get": true,
"readback": "integer shape id",
"enforcement": "report"
},
"zorder": {
"type": "number",
"description": "1-based z-order in slide shape tree. On add/set, repositions the shape within the shape tree (1 = back).",
"aliases": ["z-order", "order"],
"add": true, "set": true, "get": true,
"examples": ["--prop zorder=1"],
"readback": "1-based integer (1 = back)",
"enforcement": "report"
},
"name": {
"type": "string",
"description": "Override the auto-generated 'TextBox {N}' label on cNvPr @name.",
"add": true, "set": true, "get": true,
"examples": ["--prop name=\"banner\""],
"readback": "shape name string (cNvPr @name)",
"enforcement": "report"
},
"lang": {
"type": "string",
"description": "BCP-47 language tag. lang lives per-run (drawingML a:rPr/@lang) — a textbox has no language of its own. add/set is a convenience that writes the FIRST run's rPr; read it back at run scope (/shape[N]/paragraph[P]/run[R]). Not surfaced at shape level (first-run projection is lossy and a new run would not inherit it).",
"aliases": ["altLang", "altlang"],
"add": true, "set": true, "get": false,
"examples": ["--prop lang=en-US"],
"readback": "run scope only (/shape[N]/paragraph[P]/run[R])",
"enforcement": "report"
}
}
}