Задание свойств тексту

Статус
Закрыто для дальнейших ответов.

Сергий Задонский

Участник
Топикстартер
Сообщения
251
Реакции
4
Опять часть примера из той же книжки: М.Борисов "Скрипты в InDesign"
Код:
#targetengine "test"
myDocument = app.documents.add();
myTextFrame = myDocument . textFrames.add();
myTextFrame.geometricBounds = ["6p", "6p", "24p", "24p"];
myTextFrame.contents = "Пример задания свойств тексту";

var myTextObject = myTextFrame.words [0];

with (myTextObject) {
    appliedFont= app.fonts ["School"];
    }
Почему-то в CS4 этот пример не работает? (гарнитура не меняется на "School") В чем ошибка?
Пишет: объект не может поддерживать свойство или метод "School"
 
Все равно не работает :( Ошибки не выдает, но гарнитура по прежнему Times New Roman :(
 
Назначьте шрифт вручную, выделите этот текст, запустите скрипт:
Код:
alert(app.activeDocument.selection[0].appliedFont.name);
Это и будет то, что надо указать вместо "School".
Screenshot_3.png
 
Назначьте шрифт вручную, выделите этот текст, запустите скрипт:
Код:
alert(app.activeDocument.selection[0].appliedFont.name);
Это и будет то, что надо указать вместо "School".
Посмотреть вложение 73881
Как в сказке - чем дальше, тем страшнее :). Как тут новичку не схватиться за голову? Теперь выдает ошибку: запрашиваемая гарнитура не доступна. Как же она не доступна, если я вручную ее назначаю ???
Простите. Вложение не посмотрел. Теперь стало понятно.
 
Назначьте шрифт вручную, выделите этот текст, запустите скрипт:
Код:
alert(app.activeDocument.selection[0].appliedFont.name);
Это и будет то, что надо указать вместо "School".
Посмотреть вложение 73881
Теперь еще интереснее - заработало...но :( только применительно к первому слову текста...:(
Кажется догадываюсь - это потомучто стоит ноль в
Код:
var myTextObject = myTextFrame.words [0];
??? А что нужно поставить, чтобы действовало на весть текст?
 
Последнее редактирование:
это только на первый абзац назначает
чтобы на все - paragraphs.everyItem();
Да, я догадался, что по аналогии с words, paragraphs тоже будет назначаться только первый. Но тут у меня еще круче штучки начались :)
Код:
#targetengine "test"
myDocument = app.documents.add();
myTextFrame = myDocument . textFrames.add();
myTextFrame.geometricBounds = ["6p", "6p", "24p", "24p"];
myTextFrame.contents = "Пример задания свойств тексту";

var myTextObject = myTextFrame.paragraphs[0];

with (myTextObject) {
    appliedFont = app.fonts.itemByName ("SPSL New Cyrillic    Regular");
    pointSize = 36;
   
}
alert (pointSize + appliedFont.name)

Вставляю в конце скрипта алерт для вывода переменных, которым только что присвоил значения. Меняю шрифт со School Plain, кегль 18 на SPSL New Cyrillic Regular, кегль 36, но алерт упорно выдает мне School Plain 18 (при том,что во фрейме атрибуты текста исправно поменялись) . Дальше больше, убираю таргетинджин, мне выдает ошибку №2 - нет определения pointSize, но скрипт при том исправно работает. Если убрать алерт то и не догадаешься, что что-то не так...Я с ума сойду :( В чем дело?
 
Дальше еще интересней!!! Вношу алерт внутрь фигурных скобок, меняю атрибуты снова на School Plain, кегль 18. Скрипт отлично работает, но алерт выдает 18,18,18,18undefined ... Это вообще непонятно о чем...
 
Нет, там написано выводить неизвестно что. Повнимательней нужно

Если внутри with, то нормально, но есть подозрение что еще чего то там не совсем так
 
Нет, там написано выводить неизвестно что. Повнимательней нужно

Если внутри with, то нормально, но есть подозрение что еще чего то там не совсем так

Но что ??? Код перед Вами.
 
Ах, да, четыре раза 18, это когда
Код:
words.everyItem();
, а когда
Код:
paragraphs.everyItem();
, то просто 18undefined.
 
вам бы разобраться для начала с #targetengine — для чего и зачем это нужно.
потом разберитесь с тем, что, в вашем случае, такое pointSize, и почему алерт выдает ошибку на него,
и почему не выдает, если поместить алерт внутрь with.
 

Не по теме:
@Skvoznyak, не даёте человеку подумать ))
 
Статус
Закрыто для дальнейших ответов.