【问题标题】:Illustrator scripting for text baseline (javascript)文本基线的 Illustrator 脚本 (javascript)
【发布时间】:2020-12-17 02:16:50
【问题描述】:

我正在尝试为 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();

【问题讨论】:

    标签: javascript adobe adobe-illustrator


    【解决方案1】:
    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;
            }
        }
    }
    

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

    注意:这个简单的实现不处理分组对象。

    【讨论】:

      【解决方案2】:
      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;
          }
      }
      

      脚本的这个变体在所有文本框架(分组或不分组)内工作。您无需选择任何内容。

      【讨论】:

      • 虽然每个问题可以给出多个答案(此答案和the other one),但请每个问题给出一个答案。如果您有多个解决方案变体,则在一个答案中包含并讨论它们。有关如何构建此类答案的可能性,请参阅editing help page;可能您想使用标题或水平规则来分隔您的变体。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多