Use javascript in Photoshop to modify the contents of a text item(在Photoshop中使用Java脚本修改文本项的内容)
问题描述
我知道如何使用下面这样的代码在Photoshop中设置文本项的内容
var al = doc.activeLayer;
if(al.kind == LayerKind.TEXT) {
//get the textItem
var ti = al.textItem;
//change contents
ti.contents = "stackoverflow";
}
但是,是否可以仅修改其部分内容并应用格式设置。例如,在作品"StackOverflow"中,我只想选择第一个字母,并将字体设置为30px,其余的保持不变?
推荐答案
据我所知,没有简单的方法可以做到这一点。首先,这在DOM中是不可能的,所以忘记使用textItem.contents
。对于AM,棘手的部分是用于文本层的AM代码非常精确。每次更改某些内容时,它都会为所有"块"文本定义所有可能的参数,例如,在本例中,我用Gudea字体编写了一个35px高的文本层,并将一个字母更改为70px:https://pastebin.com/XLP64azz
您可能会看到其中有很多垃圾,文本层现在被视为3个独立的块:字母从0到5(第64-65行:stack
),从5到6(第217-218行:O
)和从6到14(第281-282行:verflow
)。在每个块的稍低处有设置大小的行,例如
desc62.putUnitDouble( cTID('Sz '), cTID('#Pxl'), 35.000000 );
desc62.putUnitDouble( sTID('impliedFontSize'), cTID('#Pxl'), 35.000000 );
我知道可以删除大多数多余的描述符(例如,如果删除定义字体名称的描述符,层将具有原来的字体名称),所以我猜可以将这个巨大的函数缩小到几行,这些行只更改特定字母的大小,但我没有尝试这样做。我猜算法将如下所示:
- 使用DOM获取字体大小和文本;
- 将文本拆分为块(如
from 0 to 1 + from 1 to last character
更改第一个字母的字体大小); - 设置具体块的参数;
如果文本层中已经存在几种样式,则会出现问题:您必须使用AM解析图层内容,获取所有块的所有样式才能找到您所引用的样式...
这篇关于在Photoshop中使用Java脚本修改文本项的内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:在Photoshop中使用Java脚本修改文本项的内容
基础教程推荐
- 如何使用JIT在顺风css中使用布局变体? 2022-01-01
- Vue 3 – <过渡>渲染不能动画的非元素根节点 2022-01-01
- Chart.js 在线性图表上拖动点 2022-01-01
- 用于 Twitter 小部件宽度的 HTML/CSS 2022-01-01
- 如何使用TypeScrip将固定承诺数组中的项设置为可选 2022-01-01
- 直接将值设置为滑块 2022-01-01
- html表格如何通过更改悬停边框来突出显示列? 2022-01-01
- Electron 将 Node.js 和 Chromium 上下文结合起来意味着 2022-01-01
- 自定义 XMLHttpRequest.prototype.open 2022-01-01
- 我可以在浏览器中与Babel一起使用ES模块,而不捆绑我的代码吗? 2022-01-01