我正在尝试使用IDS的SOAP API确定TextFrame中字符的字距。为了简单起见,我目前仍在尝试仅检查第一个字符,它不是任何特殊字符(它是一个大写字母T)。我正在使用这个脚本来检查它:
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
。
什么情况导致此属性不可用,我该如何阅读?
答案 0 :(得分:1)
只有在kerningMethod设置为“None”时才能访问kerningValue。此属性是一个字符串,可能因您的当地语言而异。您可以手动将字距设置为“O”=&gt;没有,并要求kerningMethod确保正确的名称。