- Сообщения
- 578
- Реакции
- 200
Здравствуйте.
Я решил написать небольшой скрипт, который бы менял "битые" шрифты в документе на нормальные.
Есть документ, в котором были подключены шрифты Roboto, в папке Document Fonts их нет и все они отображаются как
В моей системе доступны шрифты этого семейства по подписке CC. Можно достаточно легко починить шрифты вручную через Type - Find Font, с таким результатом:
Хочется это дело автоматизировать, чтобы по щелчку заменялось все семейство, и желательно по всем открытым документам.
Драфт скрипта уже готов и работает, но только если менять семейство на любое другое, типа Noto Sans или Myriad Pro.
Если менять на "нормальное" семейство с тем же названием без
Где здесь загвоздка и почему валидный шрифт не подхватывается?
Я решил написать небольшой скрипт, который бы менял "битые" шрифты в документе на нормальные.
Есть документ, в котором были подключены шрифты Roboto, в папке Document Fonts их нет и все они отображаются как
[Roboto (TT)]
.В моей системе доступны шрифты этого семейства по подписке CC. Можно достаточно легко починить шрифты вручную через Type - Find Font, с таким результатом:
Хочется это дело автоматизировать, чтобы по щелчку заменялось все семейство, и желательно по всем открытым документам.
Драфт скрипта уже готов и работает, но только если менять семейство на любое другое, типа Noto Sans или Myriad Pro.
Если менять на "нормальное" семейство с тем же названием без
(TT)
, не работает. В свойствах полученного targetFont
свойство isValid
всегда true
- то есть, скрипт получает нормальный валидный шрифт, но если его применить к стилю абзаца, ничего не меняется и семейство шрифта по-прежнему выглядит как [Roboto (TT)]
.
JavaScript:
var source = "Roboto (TT)"; // семейство имеет именно это имя в data browser
var target = "Roboto";
var myPgfStyles = app.activeDocument.allParagraphStyles;
for (var i = 1; i < myPgfStyles.length; i++) {
var paraStyle = myPgfStyles[i];
var paraFontFamily = paraStyle.appliedFont.fontFamily;
if (paraFontFamily == source) {
//var paraFontStyle = paraStyle.appliedFont.fontStyleName;
var targetFont = app.fonts.itemByName(target);
paraStyle.appliedFont = targetFont;
//paraStyle.fontStyle = paraFontStyle;
}
}