用于文本基线的Illustrator脚本javascript

问题描述

我正在尝试为Illustrator编写脚本,但是我的代码似乎无法正常工作并且对我什么也不做。 应该使“(”和“)”字符基线为3px。 寻找可以完成这项工作的人。

  function test(){
    var doc = app.activeDocument;
    var t = doc.textFrames[0],thisChar,thisSize,thisBaseline;
    for(var i=0; i<t.characters.length; i++){
      thisChar = t.characters;
      if(thisChar.contents == "(" || thisChar.contents == ")"){
        thisSize =  thisChar.characterattributes.size;
        thisBaseline = thisChar.characterattributes.baselineshift;
        thisChar.characterattributes.baselineshift = 3;
      }
    };
  };
  test();

解决方法

var frames = app.activeDocument.selection;

for (var j=0; j<frames.length; j++) {
    if (frames[j].typename == "TextFrame") {
        for (var i=0; i<frames[j].characters.length; i++) {
            var ch = frames[j].characters[i];
            if( ch.contents == "(" || ch.contents == ")" ) ch.baselineShift = 3;
        }
    }
}

它会移动所有选定对象内所有括号的基线。

注意:此简单的实现无法处理分组对象。

,
var frames = app.activeDocument.textFrames;

for (var j=0; j<frames.length; j++) {
    for (var i=0; i<frames[j].characters.length; i++) {
        var ch = frames[j].characters[i];
        if( ch.contents == "(" || ch.contents == ")" ) ch.baselineShift = 3;
    }
}

此脚本的变体在所有文本框架(已分组或未分组)中均起作用。您无需选择任何内容。

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...