区分多个字体在同一文本图层

Distinguish multiple font inside same Text Layer

本文关键字:文本 图层 字体      更新时间:2023-09-26

我已经创建了一个非常基本的脚本,允许用户将所有文档(甚至LayerSets)中的特定字体替换为另一个。

一个实践的例子:我想用Arial-Italic代替所有的Arial-Bold,但是一些TextLayers有Arial-Bold和Arial-Regular在同一层内,怎么能使脚本只改变TextLayer的Arial-Bold部分,而不是整个层?

我当前使用的代码:

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);

我认为您必须浏览文本并查看每个单独的字符。这是一篇讨论格式化特定字符范围的文章。格式化文本范围。您可以使用类似于这样的东西来一次一个字符地遍历文本,检查格式并在需要时进行更改。