Найти и присвоить символьный стиль

  • Автор темы Автор темы Antikwar
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Antikwar

Топикстартер
10 лет на форуме
Сообщения
88
Реакции
0
Давно и безуспешно пытаюсь найти скрипт, с помощью которого можно было бы найти и присвоить символьные стили тексту.

Например, найти Bold и присвоить символьный стиль BoldStyle.

Причем, хотелось бы, чтобы зону обработки можно было контролировать. То есть, только для выделенного текста, для Story и т.п.

Список символьных стилей нужен такой.
1. Начертание - Bold, Italic, BoldItalic, Underline
2. Положение - Subscript, Superscript
3. Символьные шрифты - Symbol, Wingdings (то есть, найти сиволы, отформатированные шрифтом Symbol и присвоить ему символьный стиль).

Попытался что-то сделать сам из найденных обрывков скриптов - удалось только п.1 списка. И абсолютно не знаю, как задать выполнение скрипта только для выделенного текста.

Подозреваю, что что-то подобное существует, так как неоднократно натыкался на обещания выложить скрипт, который это умеет.
 
Ответ: Найти и присвоить символьный стиль

Ооо! Это я уже разобрался как делать :) Щас кусочек кода напишу и скину :)
***неужели я тут тоже смогу ответить на чей-то вопрос, а не только задавать их***
:)
 
Ответ: Найти и присвоить символьный стиль

Не указана версия, но для CS2 у меня есть рабочий кусок кода.
Код:
with (app) { 
    myStory = selection[0].parentStory; 
     
    // Заменяем жирное форматирование символов на символьный стиль "Bold" 
    findPreferences = null; 
    changePreferences = null; 
    findPreferences.fontStyle = "Bold"; 
    changePreferences.appliedCharacterStyle = activeDocument.characterStyles.item("Bold"); 
    myStory.search("^?", false, false, ""); 
    findPreferences = null; 
    changePreferences = null; 
}


По поводу поиска в выделенном (для CS3):
app.selection[0].findText(false);
Вернет array of Text.

Вот только...
Рассказыли бы вы, в чем задумка, а то идея сброса атрибутов к абзацному стилю с сохранением атрибутов символа уже обсуждалась, но от идеи использования для этого символьных стилей отказались. Есть другая методика.
 
Ответ: Найти и присвоить символьный стиль

упс, уже и без меня все написали :)
Specialist, а разве строка
myStory.search("^?", false, false, "");
не заменит все символы на пустое мето (то бишь удалит)?
 
Ответ: Найти и присвоить символьный стиль

rist сказал(а):
а разве строка
myStory.search("^?", false, false, "");
не заменит все символы на пустое мето (то бишь удалит)?

А вы попробуйте. :)

Не удалит, а присвоит стиль. :) Вот кабы стиля не было, тогда бы удалила.
 
Ответ: Найти и присвоить символьный стиль

rist сказал(а):
Пробовал, удаляет...
Вот тут об этом говорили:
http://forum.rudtp.ru/showpost.php?p=339774&postcount=5

Я работал с этим скриптом под CS2 и все было Ок. Ну ежели хотиле - поправьте.
=======================================================

Хы. Толко что проверил, ничего не удаляет, все работает правильно. :)
 
Ответ: Найти и присвоить символьный стиль

Версия - CS2


Specialist сказал(а):
Рассказыли бы вы, в чем задумка, а то идея сброса атрибутов к абзацному стилю с сохранением атрибутов символа уже обсуждалась, но от идеи использования для этого символьных стилей отказались. Есть другая методика.

А задумка такая:

Есть книга (сборник статей). Статьи присылаются разными авторами, поэтому стили в ворде - полный атас.

Хочется забросить текст в ID, пройтись скриптом по статье, расставить символьные стили и потом можно смело применять абзацные стили с Clear Overrides.

А какая другая методика, если не секрет?

Да, с Bold и Italic у меня получилось, не получается сделать:
1- в выделенном тексте
2- Sub/Superscript и всякие Symbol
 
Ответ: Найти и присвоить символьный стиль

Antikwar сказал(а):
А какая другая методика, если не секрет?

Ну Бутрин продает скрипт который это делает, уж не знаю каким образом, но стилей вроде не плодит. А я, когда у меня встала такая задача просто прошелся скриптом по всем атрибутам текста кроме символьных и сбросил их к установкам стиля абзаца. (Я бы у Бутрина купил, но не смог с ним связаться.)


Antikwar сказал(а):
Да, с Bold и Italic у меня получилось, не получается сделать:
1- в выделенном тексте
2- Sub/Superscript и всякие Symbol

А у меня, в свое время, получилось. Код лежит дома, так что скину только завтра.
А насчет выделенного текста - увы ничем не помогу. Для CS2 скриптов не пишу, ибо мой интерес к скриптингу проснулся только с выходом CS3.
 
Ответ: Найти и присвоить символьный стиль

А как называется продающийся скрипт? Где о нем можно информацию найти?
 
Ответ: Найти и присвоить символьный стиль

Для того чтоб было не для всей story, а только для выделенного фрагмента нужно строчку в начале заменить на:
PHP:
myStory = selection[0];
 
Ответ: Найти и присвоить символьный стиль

Antikwar сказал(а):
А как называется продающийся скрипт? Где о нем можно информацию найти?

Так, во-первых ссылка на обсуждение аналогичной проблемы. Вот.
Прочитайте в особенности коментарий Бутрина.



Во-вторых скрипт. Называется Style ReChanger и лежит тут.


rist сказал(а):
Для того чтоб было не для всей story, а только для выделенного фрагмента

Спасибо, я не разбирался особо в этом скрипте, версия CS2 для меня уже давно стала историей.
 
Ответ: Найти и присвоить символьный стиль

Спасибо за ссылки. А ведь искал.

Комментарий прочитал, но не совсем с ним согласен, ведь на самом деле не такое уж большое количество этих символьных стилей. А если вдруг попадется какой-то не входящий в набор, то его можно и вручную сделать.

Описание Style ReChanger посмотрел, но описание краткое и не совсем понятно что и как они делает.
К тому же символьный стиль мне представляется более надежным, так как случайно он не слетит в отличии от локального форматирования текста.

для CS2 у меня есть рабочий кусок кода

Это-то работает, но я так и не понял как сделать, чтобы менять еще и Sub/Superscript и сам шрифт (Symbol, Wingdings и т.п.). Что надо написать? FontPosition?

PS. Странно вообщето - задача-то кажется простой, так как это все можно делать стандартными средствами Find/Change, нужно просто это автоматизировать, а вод подиж ты...
 
Ответ: Найти и присвоить символьный стиль

Antikwar сказал(а):
Спасибо за ссылки. А ведь искал.

Комментарий прочитал, но не совсем с ним согласен, ведь на самом деле не такое уж большое количество этих символьных стилей. А если вдруг попадется какой-то не входящий в набор, то его можно и вручную сделать.

Дело ваше, конечно.

Antikwar сказал(а):
Описание Style ReChanger посмотрел, но описание краткое и не совсем понятно что и как они делает.
К тому же символьный стиль мне представляется более надежным, так как случайно он не слетит в отличии от локального форматирования текста.

Тоже может быть, хотя "само по себе" ничего не летает. :)



Antikwar сказал(а):
Это-то работает, но я так и не понял как сделать, чтобы менять еще и Sub/Superscript и сам шрифт (Symbol, Wingdings и т.п.). Что надо написать? FontPosition?

Туда надо записать те самые "хитрые цифирки из мануала". Приду домой - откопаю этот труп и выложу вам на поругание. :)

Просто у меня сейчас под рукой нету даже референсов от CS2.

PS
Попробуйте вот эти цифирки: 1936749411
Они из мануала по CS3, но вдруг совпадают.
Код:
findPreferences.position = 1936749411
или
Код:
findPreferences.position = Position.SUPERSCRIPT
 
Ответ: Найти и присвоить символьный стиль

Спасибо большое.

В общем, скрипт, меняющий болды с италиками в выделенном фрагменте у меня теперь есть, так что 50% проблемы решено. Осталось разобраться с позицией символа и другми фонтами (типа Symbol).

Буду очень благодарен за "хитрые цифирки", все же хочется решить проблему на 100%. Тем более, что при этом какие-никакие знания приобретаются. :)
 
Ответ: Найти и присвоить символьный стиль

Цифирки - смотрите выше.

Гм. Да. Работает вот это:
Код:
findPreferences.position = Position.SUPERSCRIPT

Аналогично остальное:
Position.NORMAL (Read only)
Data Type: number
Normal position
Default Value: 1852797549

Position.SUPERSCRIPT (Read only)
Data Type: number
Superscripts the text.
Default Value: 1936749411

Position.SUBSCRIPT (Read only)
Data Type: number
Subscripts the text.
Default Value: 1935831907

Position.OT_SUPERSCRIPT (Read only)
Data Type: number
For OpenType fonts, uses--if available--raised glyphs that are sized correctly relative to the surrounding characters.
Default Value: 1884247155

Position.OT_SUBSCRIPT (Read only)
Data Type: number
For OpenType fonts, uses--if available--lowered glyphs that are sized correctly relative to the surrounding characters.
Default Value: 1884247138

Position.OT_NUMERATOR (Read only)
Data Type: number
For OpenType fonts, shrinks the text but keeps the top of the characters aligned with the top of the main text. Note: Valid only for numeric characters.
Default Value: 1884247150

Position.OT_DENOMINATOR (Read only)
Data Type: number
For OpenType fonts, shrinks the text but keeps text on the main text baseline. Note: Valid only for numeric characters.
Default Value: 1884247140
 
Ответ: Найти и присвоить символьный стиль

Superscript:
PHP:
findPreferences.position = 1936749411; 
changePreferences.appliedCharacterStyle = activeDocument.characterStyles.item("SuperscriptStyle");
Subscript:
PHP:
findPreferences.position = 1935831907; 
changePreferences.appliedCharacterStyle = activeDocument.characterStyles.item("SubscriptStyle");
Font:
PHP:
findPreferences.appliedFont = "FontName"; 
changePreferences.appliedCharacterStyle = activeDocument.characterStyles.item("FontStyle");
 
Ответ: Найти и присвоить символьный стиль


Не по теме:
Надо же! Цифирки совпадают.


Antikwar

Наслаждайтесь. :) И переходите с антиквариата на CS3. :)
 
Ответ: Найти и присвоить символьный стиль

Спасибо. На CS3 пока перейти не могу - все мои клиенты требуют именно CS2.

По поводу суперскрипта - что-то не работает. Сделал это:
Код:
findPreferences.position = 1936749411;
changePreferences.appliedCharacterStyle = activeDocument.characterStyles.item("SuperscriptSt");
myStory.search("^?", false, false, "");

И ничего не происходит. Где ошибка?
 
Ответ: Найти и присвоить символьный стиль

Antikwar сказал(а):
И ничего не происходит. Где ошибка?

Не знаю, но вот этот код точно работает. Только что пробовал.

Код:
findPreferences.position = Position.SUPERSCRIPT; 
    changePreferences.appliedCharacterStyle = activeDocument.characterStyles.item("SuperscriptStyle"); 
    myStory.search("^?", false, false, "");

Проверьте наличие соответствующего стиля - это раз.
Проверьте не забываете ли вы обNULLять findPreferences и changePreferences - это два.
 
Статус
Закрыто для дальнейших ответов.