我创建了一个非常基本的脚本,允许用户用另一个文档替换所有文档(甚至是LayerSets)中的特定字体。
一个练习示例:我想用Arial-Italic替换所有Arial-Bold,但是一些TextLayers在同一个Layer中有Arial-Bold和Arial-Regular,怎么能让脚本只改变Arial-Bold TextLayer的一部分而不是整个图层?
Code I目前正在使用:
var inFont = prompt("write inFont","Write inFont");
var outFont = prompt("write outFont","Write outFont");
app.preferences.typeUnits = TypeUnits.PIXELS;
var doc = app.activeDocument;
function changeFonts(target){
var layers = target.layers;
for(var i=0;i<layers.length;i++){
if(layers[i].typename == "LayerSet"){
changeFonts(layers[i]);
} else {
if((layers[i].kind == LayerKind.TEXT) && (layers[i].textItem.font == inFont)) {
layers[i].textItem.font = outFont;
};
};
};
};
changeFonts(doc);
答案 0 :(得分:0)
我认为你必须抓住文本并查看每个角色。这篇文章讨论了格式化特定字符范围。 Formatting text ranges。 你可以使用这样的东西一次循环文本一个字符,检查格式并在需要时更改它。我想不出任何其他办法可以解决这个问题。