ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

OfficeCLI Morph PPT 设计手册:对比度计算、Scene Actors 编排与 Morph 动效的源码级原理

2026/9/19 3:41:13 拓冰建站 浏览量
OfficeCLI Morph PPT 设计手册:对比度计算、Scene Actors 编排与 Morph 动效的源码级原理 OfficeCLI Morph PPT 设计手册对比度计算、Scene Actors 编排与 Morph 动效的源码级原理【免费下载链接】OfficeCLIOfficeCLI 是首款也是最佳的专为 AI 代理设计的命令行工具可用于读取、编辑和自动化处理 Word、Excel 和 PowerPoint 文件。它免费、开源仅包含一个二进制文件无需安装 Office 套件。项目地址: https://gitcode.com/iOfficeAI/OfficeCLI本篇基于 OfficeCLI 仓库中的 skills/morph-ppt/reference/pptx-design.md系统讲解 Morph平滑变形风格演示文稿的设计规范如何用亮度公式计算而非肉眼估计文字对比度、如何规划!!scene-*/!!actor-*/#sN-*三类形状前缀的 Scene Actors 编排、如何为舞台级场景放大字号与文本宽度以及 Shape Index 索引机制与 Morph 动效的最小实现要求。读完你可以独立构建一份在投影仪环境下依然清晰、且形状能跨幻灯片平滑插值的 morph deck并理解每条规则在 OfficeCLI 源码中的实现依据。需要先明确文档的定位关系skills/officecli-pptx/SKILL.md 中的 §Requirements / §Design Principles / §Visual delivery floor 是所有pptx含 morph在字号层级、对比度与调色板上的最终事实来源而 pptx-design.md 只是把这条基线收窄到 morph deck 典型的舞台级deep-stage调性——更深的背景、更大的主视觉字号、更宽的透明度区间、更宽松的每页文本宽度。文档明确规定只有当某一页正处于一个 morph 配对中时本文件的规则才作为叠加覆盖生效否则一律向上让位给 pptx 基础规则。1) 颜色原则舞台级morph-stage色彩规范1.1 对比度为王永远计算不要目测Morph 风格的 deck 偏爱深色背景。中灰色正文如#666666在 pptx 基础渲染下读起来没问题但一旦背景亮度降到 30 以下投影仪眩光会立刻让它消失。因此文档要求先计算再选色公式为Brightness (R × 299 G × 587 B × 114) / 1000这条公式并非凭空规定——OfficeCLI 源码中的低对比度检查使用了同一系数。在 PowerPointHandler.View.cs 中TryOpaqueRgbLuminance方法将颜色解析为感知亮度r*0.299 g*0.587 b*0.1140–255 区间用于低对比度判定且刻意跳过带lumMod/shade变换后缀的颜色与透明度低于 80% 的颜色这些是故意的幽灵/水印效果HTML 预览的对比度判断PowerPointHandler.HtmlPreview.Css.cs也使用同一阈值 128。也就是说文档中的亮度公式与 CLI 自身的校验逻辑是同源的。部署规则morph 专用比 pptx 基础更严格深色背景亮度 128→ 正文文字亮度 ≥ 80%如#FFFFFF、#EEEEEE、#CADCFC。图表系列填充色与图标描边也必须越过同一条底线。浅色背景亮度 ≥ 128→ 正文文字亮度 ≤ 20%如#000000、#333333。混合 / 渐变背景→ 在文字块后方加一块半透明衬底opacity0.3-0.6不要指望渐变背景自己平均出可读性。文档给出的完整算例注意第四条这是常见错误——把亮红色当中间色颜色亮度判定正文颜色#0000000深色白字#1E276135深色白字#2C3E5062深色白字#E9456088仍是深色白字#F39C12160浅色深字#FFFFFF255浅色深字拿不准时把对比度推上去。舞台级 deck 是在投影仪 混合环境光下被阅读的——审稿人显示器上的舒适感不是正确的基准。1.2 颜色层级三个深度层morph deck 每帧的可见元素比普通 pptx 页面更多场景演员 内容 图表系列 注释必须守住层级堆叠Background fill → Scene actors → Content (text / data / KPI) (最弱) (中等) (最强)!!scene-*与!!actor-*形状的透明度区间morph 专用比 pptx 基础更窄≤ 0.12— 全 deck 装饰!!scene-grid、!!scene-band、角部点缀。它们绝不能在会场后排与内容争抢注意力。0.3 – 0.6— 证据 / 数据衬底块!!actor-evidence-bg、KPI 卡片填充。足够框住内容又足够柔和让数字发光。0.8 – 1.0— 仅保留给本身就是内容的!!actor-*形状单个指标背后的主视觉环、作为信息主体的品牌色条。慎用——每页超过 2 个就会显得杂乱。如果一个场景演员落在内容核心区且opacity0.7它通常是被错误分类的演员要么调低透明度说明它是装饰要么改名为!!actor-*说明它是内容并为此规划一个退场页。1.3 调色板选择为情绪选色不为习惯选色morph deck 没有万能配色公式。pptx 的四个经典调色板Executive navy / Forest moss / Warm terracotta / Charcoal minimal依然适用但 morph deck 因为跨页运动会放大色彩情绪所以更自由地从 52 个风格库中挑选。决策路径原文四步完整保留匹配主题情绪→ 科技 / 金融科技倾向dark--*医疗 / 教育倾向light--*或warm--*设计 / 品牌倾向bw--*或mixed--*。尊重用户指定的十六进制色→ 如果 brief 中点明了品牌色在 styles/INDEX.md 的 Quick Lookup 表中扫描最接近的 hex 三件套bg / fg / accent不要硬套情绪标签。按项目变化— 避免重复最近三套 deck 的调色板家族。每个 pitch deck 都用dark--premium-navy读起来是模板不是设计选择。在brief.md中写死调色板名称→ warm--earth-organic palette 是一项承诺warm tones 不是。使用 reference/styles/ 目录时它是为了获取灵感调色板 标志性手势不是为了抄坐标——按 INDEX.md 第 5–11 行的声明build.sh 中的坐标是手工调优的只针对演示内容成立。2) 排版放大一档的舞台级字号与文本宽度2.1 推荐字体组合morph deck 常在舞台或强投影仪环境观看字重font weight比字体选择font choice传得更远。最多两种字体——标题一种正文一种。内容类型主选配对备选英文Montserrat标题 Inter正文Segoe UI / Helvetica Neue中文思源黑体 Source Han Sans标题 正文PingFang SC / Microsoft YaHei中英混排Montserrat 思源黑体Segoe UI 系统字体morph 页面的正文避免使用 Georgia / Times 等衬线体——衬线字身在形状插值运动过程中会消失。衬线体只保留给没有转场运动的 pptx 基础 deck。2.2 字号阶梯比 pptx 基础放大一档morph deck 的阅读距离更远舞台布置、大屏而且每一帧除了文字还承载运动。因此整体放大角色pptx basemorph-stage应使用主视觉 / 封面标题44-60pt54-72ptbold/black章节标题24-32pt28-40ptbold正文 / 辅助16-22pt18-24pt图注 / 脚注12-14pt13-16pt下限 13任何一页都不要低于 13pt——投影仪眩光最先侵蚀最低的两个字号档位。2.3 文本宽度指南为居中放宽为幽灵残片放宽换行wrap在静态 deck 里破坏视觉层级在 morph deck 里它还会破坏运动——插值过程会拾取换行后的基线文字在转场中途看起来是倾斜的。文本框要做得比直觉更宽内容类型最小宽度最佳实践居中标题64-72pt28cm10-15 字符标题用 28-30cmhero 宣言用 25cm居中副标题28-40pt25cm一律 25-28cm避免单词中间断行左对齐标题20cm视内容长度 20-25cm正文 / 卡片8cm单栏单栏 8-12cm双栏 16-18cm幽灵目标内容#sN-*与源版本相同宽度必须与页内版本一致——较窄的幽灵会把 morph 拖成缩放 移动的倾斜morph deck 的常见错误给长的居中副标题只用 10-15cm → 尴尬换行 转场期间可见的倾斜。文本框刚好装下文字 → 克隆页上多一个字符就打破布局。幽灵目标x36cm尺寸小于源形状 → morph 读起来是缩小再移动而不是滑出。经验法则拿不准就加宽。多出的留白好过 morph 插值期间出现换行。3) Scene Actors动画引擎跨页同名形状的插值编排目的。通过跨相邻幻灯片改变属性的持久形状创建平滑的 Morph 动画。3.1 搭建如果 deck 讲述的是连续视觉故事在第一页定义 6-8 个演员分三个量级Large5-8cm主视觉锚点主视觉圆、色带、hero 卡片Medium2-4cm辅助元素指标卡、强调环Small1-2cm点缀与细节圆点、虚线、图标可通过--prop preset使用的形状类型ellipse | rect | roundRect | triangle | diamond | star5 | hexagon。完整清单可查officecli help pptx shape。这一点在仓库 schema 中可以直接验证schemas/help/pptx/shape.json 中geometry别名preset、shape的取值列表包含rect、roundRect、ellipse、triangle、diamond、star5等且描述明确说明该列表示意而非穷尽——handler 还接受star4/6/8/10、hexagon及多边形系列、callout 家族等以 handler 为准。3.2 命名规范SKILL.md 为权威三前缀体系——!!scene-*/!!actor-*/#sN-*。事实来源是 skills/morph-ppt/SKILL.md 的 §What is Morph?核心机制pptx-design.md 在此之上只补充一条 Python 与 shell 的引用差异Python#和!!不需要特殊引用——作为普通字符串直接传入subprocess.run([..., --prop, name#s1-title, ...])即可。Shellbash/zsh必须始终用单引号避免!!触发历史扩展history expansion、#触发注释前缀--prop name!!scene-ring/--prop name#s1-title。3.3 配对示例 — 3 个演员 × 3 页Slide 1: !!scene-ring (x5cm, y3cm, w8cm, fillE94560, opacity0.3) !!scene-dot (x28cm, y15cm, w1cm) !!actor-headline (x4cm, y8cm, w26cm, size48) Slide 2: !!scene-ring (x20cm, y2cm, w12cm, opacity0.6) ← 同名新位置 尺寸 !!scene-dot (x3cm, y16cm, w1.5cm) ← 移到对角 !!actor-headline (x1.5cm, y1cm, w12cm, size24) ← 缩小 移到左上角 Slide 3: !!scene-ring (x36cm) ← 幽灵化出画布 !!scene-dot (x10cm, y2cm, w1cm) !!actor-headline (x36cm) ← 幽灵化新标题接管 !!actor-subpoint (x4cm, y8cm, w26cm, size36) ← 新演员入场S2 无配对 淡入3.4 每页内容#sN-*工作流克隆上一页→ 继承的#s(N-1)-*内容带着旧页前缀。幽灵化继承内容→ 把所有#s(N-1)-*形状移到x36cm。添加新内容→ 用当前页前缀#sN-*。跳过第 2 步的后果是形状不断累积——视觉重叠会在整个 deck 中静默叠加。x36cm之所以是出画布是因为 OfficeCLI pptx 画布为 33.87 × 19.05cm见 SKILL.md 继承自 pptx v2 的 Grid math——36cm 在右边缘之外。4) 页面类型混搭出节奏变化页面类型以避免单调每种类型承担不同的叙事职能原文表格完整继承类型何时使用视觉结构hero开场、收尾大居中主标题 散布的场景演员statement关键信息、转场一句有冲击力的话 大幅演员位移8cmpillars多点结构2-4 个等宽分栏演员变为卡片背景opacity 0.12evidence数据、统计1-2 个大型非对称块 辅助细节opacity 0.3-0.6timeline流程、序列水平或垂直流向配步骤背景comparisonA vs B左右分栏50/50 或 60/40对比色grid多个条目散点或网格布局轻盈感quote呼吸时刻居中文字极少装饰cta行动号召回到粗体居中设计showcase重点展示大中心区域留给产品/截图设计要点原文四条pillars多列均匀分布场景演员 morph 为卡片背景roundRectopacity0.12。evidence非对称——1 个大演员占画布 30-40% 1 个中演员20-30%数据背景允许 opacity 0.3-0.6。grid必须与 pillars 和 evidence 区分开——轻盈、散点对比结构化。多样性很重要避免连续重复同一种页面类型。5) Shape Index 机制克隆页的索引推演形状在每页上按顺序编号shape[1]、shape[2]、shape[3]……当应用transitionmorph后CLI 会自动给形状名加!!前缀——之后请使用索引路径对应 SKILL.md §Known Issues M-1。索引行为创建时按添加顺序获得递增索引。克隆后新页继承全部形状且索引相同。向克隆页添加后新形状获得下一个可用索引。修改后索引保持不变。构建脚本中的模式Slide 1: 6 actors 2 content 8 shapes total Slide 2: Clone (8) → Ghost content (shape[7-8]) → Add new (shape[9]) Slide 3: Clone (10) → Ghost content (shape[9-10]) → Add new (shape[11])公式下一页第一个新形状的索引 上一页总形状数 1。调试officecli get $FILE /slide[N] --depth 1查看实际索引。对于 5 页以上的连续故事弧仓库提供了 morph-helpers.pyclone/ghost/verify/final-check子命令可作库导入也可作 CLI 调用与等价的morph-helpers.sh——每平台只选一种不要混用。6) Morph 动效要点最小要求与入场动画最小要求四条硬性条件第 2 页起必须带transitionmorphofficecli set /slide[N] --prop transitionmorph。场景演员跨页必须使用完全相同的name。上一页的每页内容必须先幽灵化x36cm再添加新内容。相邻页应有不同的空间布局——在至少 3 个形状上满足位移 ≥ 5cm或旋转 ≥ 15°或尺寸差 ≥ 30%。创造运动在相邻页之间改变 ≥ 3 个场景演员属性移动位置x, y缩放width, height旋转rotation 角度颜色偏移fill, opacity目标运动 形变的感知而不是单纯的淡入淡出。morph 页上的入场效果Morph 自动处理形状转场——入场动画通常不需要。如果确实需要例如让新的#sN-*卡片淡入使用with触发器让它与 morph 同步播放animationfade-entrance-300-with格式为EFFECT[-DIRECTION][-DURATION][-TRIGGER]预设清单见officecli help pptx animation。从源码侧可以印证这套格式schemas/help/pptx/shape.json 中animation属性的读回readback说明为形如effect-class-durationMs的合成效果规格如fade-entrance-400——即触发器后缀在写回时不落回读值这与 SKILL.md 中 recipe (d) 的回读验证fade-entrance-300-with读回为fade-entrance-300一致。转场侧schemas/help/pptx/transition.json 确认morph是合法取值且transitionprop 接受TYPE[-DIR][-SPEED|DUR]组合速记如transitionmorph-slow、morph-1500速度/时长只能通过该速记在transitionprop 上设置不存在独立的transitionSpeed子属性。7) 风格参考52 风格库的学思路不抄坐标reference/styles/ 目录包含 52 个视觉风格目录按情绪分为 dark / light / warm / vivid / bw / mixed 六个家族当前仓库实际清点dark 19 个、light 11 个、warm 9 个、vivid 5 个、bw 4 个、mixed 4 个合计 52与文档表述一致。目录清单与每个风格的 bg / fg / accent 三件套见 styles/INDEX.md查找工作流的完整版在 SKILL.md 的 §Style library lookup workflow 中。关键规则INDEX.md 第 5–11 行的 Important Notice 原文重申这些风格里的 build.sh 脚本仅用于设计技术参考配色、形状、Morph 编排部分脚本存在文字重叠、布局错位等排版问题——不要逐字抄写坐标与尺寸生成时必须遵循 pptx-design.md 的设计原则文字可读性、间距、对齐等——学思路不抄代码。叙事规划方面若 deck 的受众 / 目的 / 叙事尚不明确应先按 reference/decision-rules.md 的规划提示产出brief.md含主题 / 受众 / 目的 / 叙事弧 / 指定一个命名风格 逐页大纲 Morph 配对规划表再动手写任何officecli add——没有叙事脊柱的 morph 弧会退化成带运动的幻灯片而不是带运动的故事。小结这条设计链的落地顺序先定叙事与调色板brief.md写死风格名再按第 4 节的页面类型排节奏写代码前完成 Morph 配对规划表全部!!名字一次定死!!scene-*与!!actor-*永不撞名每页用第 1 节的亮度公式验证背景与正文的对比度用 0.12 / 0.3-0.6 / 0.8-1.0 三档透明度守住层级按第 2 节放大后的字号阶梯与文本宽度建文本框第 5 节的索引公式推演克隆页的 ghost 与新增位置交付前确认第 2 页起都有transitionmorph、相邻页空间布局差异达标——这些与 SKILL.md 的 Delivery Gate 5b-morph-1..4 检查项actor 滞留可见区、配对名不匹配、#sN-*幽灵泄漏等一一对应。适用前提与限制Morph 动画仅在 PowerPoint 365 / Keynote / WPS 中渲染出插值运动LibreOffice 与多数网页查看器只能显示静态画面或普通淡入淡出——这是渲染器能力问题不是构建缺陷因此任何静态截图都无法验证运动质量需要用第 5 节的get --depth 1查询证明配对正确性再用实时查看器验证运动效果。【免费下载链接】OfficeCLIOfficeCLI 是首款也是最佳的专为 AI 代理设计的命令行工具可用于读取、编辑和自动化处理 Word、Excel 和 PowerPoint 文件。它免费、开源仅包含一个二进制文件无需安装 Office 套件。项目地址: https://gitcode.com/iOfficeAI/OfficeCLI创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考