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
803 lines
24 KiB
JSON
803 lines
24 KiB
JSON
{
|
||
"$schema": "../_schema.json",
|
||
"format": "docx",
|
||
"element": "run",
|
||
"elementAliases": [
|
||
"r"
|
||
],
|
||
"parent": "paragraph",
|
||
"operations": {
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"remove": true
|
||
},
|
||
"paths": {
|
||
"stable": [
|
||
"/body/p[@paraId=ID]/r[N]"
|
||
],
|
||
"positional": [
|
||
"/body/p[N]/r[N]"
|
||
]
|
||
},
|
||
"note": "effective.* keys (effective.size, effective.bold, effective.color, ...) are read-only inheritance-resolved values: the run does not set the property directly, but resolves it by walking the run/paragraph style chain up to docDefaults. Each carries a paired effective.X.src pointer (e.g. \"/styles/Heading1\" or \"/docDefaults\") so callers can locate the writing layer. effective.* never appears when the run has the corresponding direct value — direct always wins. Run-level formatting can also be applied by character offset without addressing individual runs: `set <paragraph-or-body-path> --prop range=START:END --prop bold=true` (0-based, half-open; several disjoint spans as `range=0:5,12:15`) splits the run(s) covering each span and applies the format props to just that slice — the offset-based sibling of `find` (which locates the span by text). Offsets are relative to the concatenated run text of the path scope: a /body/p[N] path is that paragraph, /body spans every paragraph. Mind the two bases: the path `[N]` positions are 1-based (XPath-style, `/p[2]` = 2nd paragraph); range START:END are 0-based half-open (`range=0:1` = first character). `find` and `range` are mutually exclusive on one call; `range` is run-level formatting only (no text=/replace/revision — use find or an explicit run path for those).",
|
||
"extends": [
|
||
"_shared/run",
|
||
"_shared/run.docx-pptx",
|
||
"_shared/run.docx-xlsx"
|
||
],
|
||
"properties": {
|
||
"highlight": {
|
||
"type": "color",
|
||
"description": "Word built-in highlight color. Accepts named colors (yellow, green, cyan, magenta, blue, red, ...).",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop highlight=yellow"
|
||
],
|
||
"readback": "highlight color name",
|
||
"enforcement": "report"
|
||
},
|
||
"strike": {
|
||
"type": "bool",
|
||
"description": "single strikethrough.",
|
||
"aliases": [
|
||
"strikethrough",
|
||
"font.strike",
|
||
"font.strikethrough"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop strike=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"dstrike": {
|
||
"type": "bool",
|
||
"description": "double strikethrough.",
|
||
"aliases": [
|
||
"doublestrike",
|
||
"doubleStrike"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop dstrike=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"caps": {
|
||
"type": "bool",
|
||
"description": "render text in all caps (display only; underlying text unchanged).",
|
||
"aliases": [
|
||
"allCaps"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop caps=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"smallcaps": {
|
||
"type": "bool",
|
||
"description": "render lowercase as small caps.",
|
||
"aliases": [
|
||
"smallCaps"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop smallcaps=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"vanish": {
|
||
"type": "bool",
|
||
"description": "hidden text (not rendered, but present in the file).",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop vanish=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"outline": {
|
||
"type": "bool",
|
||
"description": "outline (text effect).",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop outline=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"shadow": {
|
||
"type": "bool",
|
||
"description": "shadow (text effect).",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop shadow=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"emboss": {
|
||
"type": "bool",
|
||
"description": "emboss (text effect).",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop emboss=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"imprint": {
|
||
"type": "bool",
|
||
"description": "imprint / engrave (text effect).",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop imprint=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"noproof": {
|
||
"type": "bool",
|
||
"description": "exclude this run from spell/grammar checking.",
|
||
"aliases": [
|
||
"noProof"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop noproof=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"rtl": {
|
||
"type": "bool",
|
||
"description": "right-to-left text (legacy alias of 'direction'). Get surfaces this as direction=rtl|ltr.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": false,
|
||
"examples": [
|
||
"--prop rtl=true"
|
||
],
|
||
"enforcement": "strict"
|
||
},
|
||
"direction": {
|
||
"type": "enum",
|
||
"values": [
|
||
"ltr",
|
||
"rtl"
|
||
],
|
||
"description": "run reading direction. Use 'rtl' for Arabic / Hebrew, 'ltr' to clear. Canonical key for run direction; matches paragraph/section vocabulary.",
|
||
"aliases": [
|
||
"dir"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop direction=rtl"
|
||
],
|
||
"readback": "rtl | ltr",
|
||
"enforcement": "strict"
|
||
},
|
||
"font.cs": {
|
||
"type": "string",
|
||
"description": "Complex-script font slot (rFonts/cs) — Arabic / Hebrew / Thai typefaces.",
|
||
"aliases": [
|
||
"font.complexscript",
|
||
"font.complex"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.cs=\"Arabic Typesetting\""
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"font.ea": {
|
||
"type": "string",
|
||
"description": "East-Asian font slot (rFonts/eastAsia) — Chinese / Japanese / Korean typefaces.",
|
||
"aliases": [
|
||
"font.eastasia",
|
||
"font.eastasian"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.ea=\"メイリオ\""
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"font.latin": {
|
||
"type": "string",
|
||
"description": "Latin font slots (rFonts/ascii + hAnsi) — ASCII / Western text.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.latin=Calibri"
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"font.hint": {
|
||
"type": "string",
|
||
"description": "Font slot hint (rFonts/hint) — tells Word which slot (eastAsia / cs / default) to use for ambiguous characters (CJK digits, punctuation) so they render with the intended font. Values: eastAsia, cs, default.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.hint=eastAsia"
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"font.asciiTheme": {
|
||
"type": "string",
|
||
"description": "Theme font binding for the ascii slot (rFonts/asciiTheme). Values: minorHAnsi, majorHAnsi, minorEastAsia, majorEastAsia, minorBidi, majorBidi.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.asciiTheme=minorHAnsi"
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"font.hAnsiTheme": {
|
||
"type": "string",
|
||
"description": "Theme font binding for the hAnsi slot (rFonts/hAnsiTheme).",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.hAnsiTheme=minorHAnsi"
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"font.eaTheme": {
|
||
"type": "string",
|
||
"description": "Theme font binding for the East-Asia slot (rFonts/eastAsiaTheme). Values: minorEastAsia, majorEastAsia.",
|
||
"aliases": [
|
||
"font.eastAsiaTheme"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.eaTheme=minorEastAsia"
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"font.csTheme": {
|
||
"type": "string",
|
||
"description": "Theme font binding for the complex-script slot (rFonts/cstheme). Values: minorBidi, majorBidi.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop font.csTheme=minorBidi"
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"bold.cs": {
|
||
"type": "bool",
|
||
"description": "complex-script bold (<w:bCs/>). Word renders Arabic / Hebrew bold via this flag, NOT <w:b/>. Required for Arabic bold to actually render.",
|
||
"aliases": [
|
||
"font.bold.cs",
|
||
"boldcs"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop bold.cs=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"italic.cs": {
|
||
"type": "bool",
|
||
"description": "complex-script italic (<w:iCs/>). Same role as bold.cs for italic styling on Arabic / Hebrew text.",
|
||
"aliases": [
|
||
"font.italic.cs",
|
||
"italiccs"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop italic.cs=true"
|
||
],
|
||
"readback": "true | false",
|
||
"enforcement": "strict"
|
||
},
|
||
"size.cs": {
|
||
"type": "font-size",
|
||
"description": "complex-script font size (<w:szCs/>). Independent from the bare 'size' (<w:sz/>) which only sizes Latin text.",
|
||
"aliases": [
|
||
"font.size.cs",
|
||
"sizecs"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop size.cs=14pt",
|
||
"--prop size.cs=14"
|
||
],
|
||
"readback": "unit-qualified, e.g. \"14pt\"",
|
||
"enforcement": "strict"
|
||
},
|
||
"lang.latin": {
|
||
"type": "string",
|
||
"description": "Latin-script language tag (<w:lang w:val=.../>). e.g. en-US, fr-FR.",
|
||
"aliases": [
|
||
"lang",
|
||
"lang.val"
|
||
],
|
||
"add": false,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop lang.latin=en-US"
|
||
],
|
||
"readback": "BCP-47 / xml:lang tag, e.g. \"en-US\"",
|
||
"enforcement": "lenient"
|
||
},
|
||
"lang.ea": {
|
||
"type": "string",
|
||
"description": "EastAsian-script language tag (<w:lang w:eastAsia=.../>). e.g. zh-CN, ja-JP.",
|
||
"aliases": [
|
||
"lang.eastAsia",
|
||
"lang.eastAsian"
|
||
],
|
||
"add": false,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop lang.ea=zh-CN"
|
||
],
|
||
"readback": "BCP-47 / xml:lang tag",
|
||
"enforcement": "lenient"
|
||
},
|
||
"lang.cs": {
|
||
"type": "string",
|
||
"description": "ComplexScript language tag (<w:lang w:bidi=.../>). e.g. ar-SA, he-IL.",
|
||
"aliases": [
|
||
"lang.complexScript",
|
||
"lang.bidi"
|
||
],
|
||
"add": false,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop lang.cs=ar-SA"
|
||
],
|
||
"readback": "BCP-47 / xml:lang tag",
|
||
"enforcement": "lenient"
|
||
},
|
||
"vertAlign": {
|
||
"type": "enum",
|
||
"description": "vertical text alignment. Values: superscript|super, subscript|sub, baseline.",
|
||
"aliases": [
|
||
"vertalign"
|
||
],
|
||
"values": [
|
||
"superscript",
|
||
"super",
|
||
"subscript",
|
||
"sub",
|
||
"baseline"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": false,
|
||
"examples": [
|
||
"--prop vertAlign=superscript"
|
||
],
|
||
"readback": "n/a (surfaces as superscript/subscript flag)",
|
||
"enforcement": "report"
|
||
},
|
||
"kern": {
|
||
"type": "int",
|
||
"description": "kerning activation threshold (<w:kern w:val=.../>): font sizes at or above this point size get automatic pair kerning. Value is an integer in half-points (28 = 14pt threshold); a 'pt' suffix is NOT accepted (unlike pptx kern). Valid range 0-3277 half-points (~164pt); an empty value clears it.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop kern=28"
|
||
],
|
||
"readback": "integer half-points, e.g. \"28\"",
|
||
"enforcement": "report"
|
||
},
|
||
"position": {
|
||
"type": "length",
|
||
"description": "vertical baseline shift (<w:position w:val=.../>): positive raises text above the baseline, negative lowers it, 0 = baseline. Keeps the full glyph size (distinct from vertAlign=super|sub, which also shrinks the glyph). Accepts a 'pt' value (e.g. 6pt) or a bare integer in half-points; an empty value clears it.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop position=6pt",
|
||
"--prop position=-3pt"
|
||
],
|
||
"readback": "unit-qualified pt, e.g. \"6pt\"",
|
||
"enforcement": "report"
|
||
},
|
||
"charSpacing": {
|
||
"type": "length",
|
||
"description": "character spacing (letter spacing) in points. Stored as twips × 20.",
|
||
"aliases": [
|
||
"charspacing",
|
||
"letterspacing",
|
||
"letterSpacing",
|
||
"spacing"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop charSpacing=1pt",
|
||
"--prop charspacing=2"
|
||
],
|
||
"readback": "unit-qualified pt, e.g. \"1pt\"",
|
||
"enforcement": "report"
|
||
},
|
||
"fill": {
|
||
"type": "color",
|
||
"description": "run background shading (w:shd @fill). A solid background reads back as this canonical key (matching table cells and paragraphs). Accepts a solid color — hex ('FF0000'), '#'-prefixed hex ('#FF0000'), named color ('red'), or rgb(...) notation. For a true pattern shading (pct*/stripe/cross) or a foreground pattern color, pass the legacy `shading`/`shd` triplet form 'PATTERN;FILL[;COLOR]' instead; those read back via the shading.* detail keys. Distinct from `highlight` (w:highlight marker) and the w14 text shadow.",
|
||
"aliases": [
|
||
"shading",
|
||
"shd"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop fill=FFFF00",
|
||
"--prop fill=#FF0000",
|
||
"--prop shd=\"pct25;FF0000;0000FF\""
|
||
],
|
||
"readback": "#RRGGBB uppercase",
|
||
"enforcement": "report"
|
||
},
|
||
"shading": {
|
||
"type": "color",
|
||
"description": "background shading color or '<pattern>;<fill>;<color>' triplet. Set-side alias for `fill`; a solid background reads back via the canonical `fill` key.",
|
||
"aliases": [
|
||
"shd"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": false,
|
||
"examples": [
|
||
"--prop shading=FFFF00",
|
||
"--prop shd=clear;FFFF00;auto"
|
||
],
|
||
"enforcement": "report"
|
||
},
|
||
"shading.val": {
|
||
"type": "string",
|
||
"description": "shading pattern value. Emitted on get only for a true pattern shading (pct*/stripe/cross); a solid background reads back as the canonical `fill` key. Add/Set use `fill`/`shading`/`shd`.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "shading pattern token (pattern shading only)",
|
||
"enforcement": "report"
|
||
},
|
||
"shading.fill": {
|
||
"type": "string",
|
||
"description": "shading fill color hex. Emitted on get only for a true pattern shading; a solid background reads back as the canonical `fill` key.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "#RRGGBB (pattern shading only)",
|
||
"enforcement": "report"
|
||
},
|
||
"shading.color": {
|
||
"type": "string",
|
||
"description": "shading foreground (pattern) color hex. Pattern shading only.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "#RRGGBB (pattern shading only)",
|
||
"enforcement": "report"
|
||
},
|
||
"textOutline": {
|
||
"type": "string",
|
||
"description": "w14 text outline 'WIDTHpt-COLOR' (e.g. '1pt-FF0000'). Width first, color second; '-' or ';' separator.",
|
||
"aliases": [
|
||
"textoutline"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop textOutline=1pt-FF0000"
|
||
],
|
||
"readback": "\"{width}pt\" or \"{width}pt;#RRGGBB\"",
|
||
"enforcement": "report"
|
||
},
|
||
"textFill": {
|
||
"type": "string",
|
||
"description": "w14 text fill (color or gradient spec).",
|
||
"aliases": [
|
||
"textfill"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop textFill=FF0000"
|
||
],
|
||
"readback": "#RRGGBB (solid) | C1;C2;angle (gradient) | radial:C1;C2",
|
||
"enforcement": "report"
|
||
},
|
||
"w14shadow": {
|
||
"type": "string",
|
||
"description": "w14 text shadow effect.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop w14shadow=FF0000"
|
||
],
|
||
"readback": "#RRGGBB;blur_pt;angle_deg;dist_pt;opacity",
|
||
"enforcement": "report"
|
||
},
|
||
"w14glow": {
|
||
"type": "string",
|
||
"description": "w14 text glow effect.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop w14glow=FF0000"
|
||
],
|
||
"readback": "#RRGGBB;radius_pt;opacity",
|
||
"enforcement": "report"
|
||
},
|
||
"w14reflection": {
|
||
"type": "string",
|
||
"description": "w14 text reflection effect.",
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop w14reflection=true"
|
||
],
|
||
"readback": "semicolon-delimited reflection parameters",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.size.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.size — path of the writing layer (e.g. \"/styles/Heading1\", \"/docDefaults\"). Documented but not emitted today; only the resolved `effective.size` value surfaces on Get.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned — only effective.size emits today)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.ascii": {
|
||
"type": "string",
|
||
"description": "inheritance-resolved Latin/ASCII font slot (read-only).",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "font family name",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.ascii.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.font.ascii. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.eastAsia": {
|
||
"type": "string",
|
||
"description": "inheritance-resolved East-Asian font slot (read-only).",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "font family name",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.eastAsia.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.font.eastAsia. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.hAnsi": {
|
||
"type": "string",
|
||
"description": "inheritance-resolved High-ANSI font slot (read-only).",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "font family name",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.hAnsi.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.font.hAnsi. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.cs": {
|
||
"type": "string",
|
||
"description": "inheritance-resolved complex-script font slot (read-only).",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "font family name",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.font.cs.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.font.cs. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.bold.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.bold. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.italic": {
|
||
"type": "bool",
|
||
"description": "inheritance-resolved italic (read-only). Surfaced only when the run does not set 'italic' directly.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "true | false",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.italic.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.italic. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.color.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.color. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.underline": {
|
||
"type": "string",
|
||
"description": "inheritance-resolved underline style (read-only).",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "underline style name",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.underline.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.underline. Documented but not emitted today.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"readback": "n/a (planned)",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.rtl": {
|
||
"type": "bool",
|
||
"description": "inheritance-resolved right-to-left flag (read-only). Emitted even when 'rtl' is set directly so callers can compare direct vs cascade-resolved state.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "true | false",
|
||
"enforcement": "report"
|
||
},
|
||
"effective.rtl.src": {
|
||
"type": "string",
|
||
"description": "source pointer for effective.rtl.",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"readback": "style/docDefaults path",
|
||
"enforcement": "report"
|
||
},
|
||
"dirty": {
|
||
"type": "bool",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"description": "true when the run is flagged as dirty (rPr/dirty=1) — Word treats it as needing reflow on next open.",
|
||
"readback": "true|false",
|
||
"enforcement": "report"
|
||
},
|
||
"font.ascii": {
|
||
"type": "string",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"description": "individual rFonts @ascii slot readback. On Add/Set use the unified `font.latin` key (which writes both ascii + hAnsi).",
|
||
"readback": "font family name",
|
||
"enforcement": "report"
|
||
},
|
||
"font.eastAsia": {
|
||
"type": "string",
|
||
"add": false,
|
||
"set": false,
|
||
"get": false,
|
||
"description": "legacy alias for the rFonts @eastAsia slot. Get emits only the canonical `font.ea` key (for runs, paragraphs, and styles alike); use `font.ea` on Add/Set/Get.",
|
||
"readback": "see font.ea",
|
||
"enforcement": "report"
|
||
},
|
||
"font.hAnsi": {
|
||
"type": "string",
|
||
"add": false,
|
||
"set": false,
|
||
"get": true,
|
||
"description": "individual rFonts @hAnsi slot readback. On Add/Set use the unified `font.latin` key (which writes both ascii + hAnsi).",
|
||
"readback": "font family name",
|
||
"enforcement": "report"
|
||
},
|
||
"color": {
|
||
"type": "color",
|
||
"aliases": [
|
||
"font.color"
|
||
],
|
||
"add": true,
|
||
"set": true,
|
||
"get": true,
|
||
"examples": [
|
||
"--prop color=#FF0000",
|
||
"--prop color=accent1"
|
||
],
|
||
"readback": "#RRGGBB uppercase, or bare scheme name (accent1). Theme-linked colors (e.g. hyperlink runs) read back as '#RRGGBB;themeColor=NAME' — the compound form is accepted back by add/set and preserves the w:themeColor linkage on round-trip.",
|
||
"enforcement": "strict"
|
||
}
|
||
}
|
||
} |