[AI CC-CC2021] Как поменять шрифтовые атрибуты текста?

catpaw

Топикстартер
12 лет на форуме
Сообщения
245
Реакции
10
Штатными средствами, например меню "Найти и заменить", невозможно заменить параметры текста: шрифт, размер и пр.
Можно ли это сделать средствами скрипта?
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Можно
 

catpaw

Топикстартер
12 лет на форуме
Сообщения
245
Реакции
10
Математически точный ответ.
Хорошо. Я нашла класс CharacterAttributes. Вижу, что он подчиняется(?) классу TextRange, но как на него выйти?
Строка
Код:
alert(app.selection[0].characters.parent.constructor.name);
выдает что весь массив characters находится в TextRange, а мне нужно работать с отдельным знаком characters[i].
 

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Не пойму вопроса - ну так работайте с одним элементом массива characters что мешает?
 

catpaw

Топикстартер
12 лет на форуме
Сообщения
245
Реакции
10
Не пойму вопроса - ну так работайте с одним элементом массива characters что мешает?
Потому что app.selection[0].characters[i].parent.CharacterAttributes) выдает ошибку. Если Вы здесь на форуме только для того, чтобы наводящие вопросы ставить, то я просто буду игнорировать Ваши вопросы.
 

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
во-первых, вам не нужен parent, так как characters - это и есть TextRange, во-вторых нужно писать characterAttributes с маленькой буквы, так как свойство называется именно так
 
  • Спасибо
Реакции: catpaw

Skvoznyak

15 лет на форуме
Сообщения
5 500
Реакции
2 168
*так как characters[i] - это и есть TextRange
 
  • Спасибо
Реакции: catpaw

catpaw

Топикстартер
12 лет на форуме
Сообщения
245
Реакции
10
Скрипт теперь не ругается, но и ничего не делает... где-то грамматика-пунктуация страдает?
Код:
var chrs =   app.selection[0].characters;
for ( var i = 0 ; i < chrs.length ; i++ ) {
      if ( chrs[i].characterAttributes.size == "5" ||
           chrs[i].characterAttributes.size == "7" )
      {
           chrs[i].characterAttributes.size = 10;
      } else {
        if ( chrs[i].characterAttributes.size == "4" ||
             chrs[i].characterAttributes.size == "5.5" )
        {
             chrs[i].characterAttributes.size = 8;
        }
      }
}
Кстати else..if явно не по JS. А как правильно?
 

catpaw

Топикстартер
12 лет на форуме
Сообщения
245
Реакции
10
Скрипт теперь не ругается, но и ничего не делает... где-то грамматика-пунктуация страдает?
Нашла ответ. Параметр characterAttributes.size выдает неокругленное значение.
JavaScript:
for ( var j = 0 ; j < app.selection.length ; j++ ) {
var myChars =   app.selection[j].characters;

for ( var i = 0 ; i < myChars.length ; i++ ) {
      var num = myChars[i].characterAttributes.size;
//округляем до десятых
      var num = num.toFixed(1);

//и всем условиям добавляем десятые
      if ( num == "5.0" || num == "7.0" )
      {
           myChars[i].characterAttributes.size = 10;
           myChars[i].characterAttributes.verticalScale = 70;
           myChars[i].characterAttributes.horizontalScale = 75;
           myChars[i].characterAttributes.tracking = 0;
      } else {
      if ( num == "4.0" || num == "5.5" )
      {
           myChars[i].characterAttributes.size = 8;
           myChars[i].characterAttributes.verticalScale = 70;
           myChars[i].characterAttributes.horizontalScale = 75;
           myChars[i].characterAttributes.tracking = 0;
      } else {
           myChars[i].characterAttributes.size = num;
           myChars[i].characterAttributes.tracking = 0;
      }
      }

      }
}
 
  • Спасибо
Реакции: dumbm1

_MBK_

Пикирующий бомбардировщик
15 лет на форуме
Сообщения
33 138
Реакции
10 835
Вот видите какая вы умница, сами разобрались