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脚本修改文本项的内容
- 使用RSelum从网站(报纸档案)中抓取多个网页 2022-09-06
- 失败的 Canvas 360 jquery 插件 2022-01-01
- 400或500级别的HTTP响应 2022-01-01
- addEventListener 在 IE 11 中不起作用 2022-01-01
- Fetch API 如何获取响应体? 2022-01-01
- Flexslider 箭头未正确显示 2022-01-01
- Quasar 2+Apollo:错误:找不到ID为默认的Apollo客户端。如果您在组件设置之外,请使用ProvideApolloClient() 2022-01-01
- Css:将嵌套元素定位在父元素边界之外一点 2022-09-07
- CSS媒体查询(最大高度)不起作用,但为什么? 2022-01-01
- 如何使用 JSON 格式的 jQuery AJAX 从 .cfm 页面输出查 2022-01-01