区分同一文本层内的多个字体

时间:2015-10-23 10:23:20

标签: javascript photoshop photoshop-script

我创建了一个非常基本的脚本,允许用户用另一个文档替换所有文档(甚至是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);

1 个答案:

答案 0 :(得分:0)

我认为你必须抓住文本并查看每个角色。这篇文章讨论了格式化特定字符范围。 Formatting text ranges。 你可以使用这样的东西一次循环文本一个字符,检查格式并在需要时更改它。我想不出任何其他办法可以解决这个问题。

相关问题