2015-07-28 4 views
0

Я пытаюсь установить кернинг символов в TextFrame с использованием SOAP API IDS. Для простоты я в настоящее время все еще пытаюсь изучить только первый символ, который не является особым символом (это прописная буква T). Я использую этот скрипт для изучения его:Невозможно получить доступ к свойству кернингаValue символа или абзацу

var get_all_textframes = function(document, callback) { 

     var looper = function(collection) { 
     for(var i = 0; i < collection.textFrames.count(); i++) { 
      var textframe = collection.textFrames.item(i); 
      callback(textframe); 
     } 
     }; 

     var recurse = function(group) { 
     for(var i = 0; i < group.groups.length; ++i) { 
      looper(group.groups[i]); 
      recurse(group.groups[i]); 
     } 
     }; 

     looper(document); 
     recurse(document); 
}; 

var document = app.open(File("c:\\path\\to\\idsdoc.indd")); 

var output = "\n"; 
get_all_textframes(document, function(textframe) { 
    if(textframe.id == 357) { 
    output += ("Kerning: " + textframe.parentStory.characters[0].kerningValue+ " \n"); 
    } 
}); 
document.close(); 

result.output = output; 

Однако, когда я бегу сценарий, я получаю сообщение об ошибке 30615: The property is not applicable in the current state.

Он отлично работает, если я попытаюсь получить любое другое свойство от персонажа, а не kerningValue. Например, kerningMethod возвращает Metrics.

Какое обстоятельство заставляет это имущество быть недоступным и как его читать?

ответ

1

КернингValue доступен только в том случае, если для параметра kerningMethod установлено значение «Нет». Это свойство является строкой и может отличаться от вашего локального языка. Вы можете вручную установить кернинг на «O» => None и попросить kerningMethod обеспечить правильное имя.