You need to enable JavaScript to run this app. After Effects 脚本:如何实现父文本层向子层逐字符继承多字符混合样式
优惠活动
大模型
产品
解决方案
定价
更多

After Effects 脚本:如何实现父文本层向子层逐字符继承多字符混合样式

混合字符样式AE文本同步脚本优化方案

原参考脚本仅提取父文本层的全局基础样式数据,未读取单个字符对应的局部格式属性,因此当父文本存在字重、字号、颜色等局部差异(如半粗体/常规混合的多字符格式)时,子层只会沿用统一的全局样式,无法继承对应的混合格式。

逐字符样式遍历的实现方案

AE的文本对象内置了针对字符级样式的读取、写入API,不需要手动拆分文本匹配位置,可通过以下逻辑实现全量样式同步:

  • 读取父文本层的完整源文本文档对象,获取包含所有字符内容、逐字符样式的原始数据
  • 初始化目标文本文档容器,从索引0开始逐一遍历每个字符,提取每个位置对应的独立字符样式
  • 将逐字符收集的样式数据和对应文本内容绑定,直接返回给当前子文本层的源文本属性
// 替换为实际的父层所在合成、父层名称
const parentComp = comp("Precomp - People");
const parentLayer = parentComp.layer("Single Title");
// 获取父层完整的文本文档对象(包含文本内容、全量段落+字符级样式)
const parentDoc = parentLayer.text.sourceText.value;
// 初始化目标文档,同步首个字符的样式
let syncDoc = new TextDocument(parentDoc.text).setStyleAt(
    0,
    parentDoc.style.getStyleAt(0)
);
// 从第2个字符(索引1)开始,逐位同步每个字符的独立样式
for (let charIdx = 1; charIdx < parentDoc.text.length; charIdx++) {
    const charSpecificStyle = parentDoc.style.getStyleAt(charIdx);
    syncDoc = syncDoc.setStyleAt(charIdx, charSpecificStyle);
}
// 返回同步完成的文档,作为子文本层的源文本属性值
syncDoc

效果说明

  • 可完整覆盖单字符级的所有格式差异:包括半粗体/常规字重混合、局部字号调整、自定义字间距、描边、填充色等场景,所有样式和父层逐位置完全匹配
  • 遍历逻辑的运算开销极低,不会造成表达式计算卡顿
  • 兼容AE 2020及以上版本的文本引擎API能力

内容的提问来源于stack exchange,提问作者ryan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.23 10:36:04