如何解决indesign javascript 获取选定的字形 ID,而不是内容
是否可以获得实际字形的值(内容),而不是 InDesign 中的类型值?
示例:
这是在 InDesign 中键入的内容:
Eλλάδα
然后将大写样式应用于它以使其看起来像这样:
EΛΛΑΔΑ
注意第一个带重音的 ά 是如何变成 Α(无重音)的。 用javascript访问这封信时,仍然得到ά:
app.selection[0].contents.charAt(0)
我需要获得显示的实际字形 - Α。 有没有办法用 javascript 做到这一点?
解决方法
您可以应用命令 Type
> Change Case
> UPPER CASE
:
它得到了想要的结果:
第一行是原文,第二行——大写样式,第三行——大写转换。
如果您需要通过脚本执行此操作,则实现取决于您的工作流程。
,我好像不是很明白这个问题。对于所有带重音的大写希腊字母,您想从 A
获取 ά
。
可能你需要自己进行这样的对话。像这样:
var doc = app.activeDocument;
var accented = 'άέήίόύώ';
var not_accented = 'αεηιουω';
// find only for caps
app.findGrepPreferences.capitalization = Capitalization.ALL_CAPS;
// change all accented upper cased letters with no_accented ones
for (var i=0; i<accented.length; i++) {
app.findGrepPreferences.findWhat = accented[i];;
app.changeGrepPreferences.changeTo = not_accented[i];
doc.changeGrep();
}
// restore find prefs
app.findGrepPreferences = NothingEnum.nothing;
注意,操作 Ά
--> A
是不可逆的。你无法从平原 ά
取回 A
。
如果您只想更改选定的文本,您可以这样做:
var sel = app.selection;
if (sel[0].constructor.name != 'Character') var sel = sel[0].characters;
var accented = 'άέήίόύώ';
var not_accented = 'αεηιουω';
for (var i=0; i<sel.length; i++) {
if (sel[i].capitalization != Capitalization.ALL_CAPS) continue;
var index = accented.indexOf(sel[i].contents);
if (index > -1) sel[i].contents = not_accented[index];
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。