[ID CC2022] Как найти все розовые квадратики с помощью GREP?

unpro

Топикстартер
12 лет на форуме
Сообщения
64
Реакции
3
Здравствуйте.
Понимаю, что сабж — классика. В поиске по форуму не нашел ответа.

У меня в тексте, набранном одним шрифтом, некоторые глифы — те самые розовые квадратики. Хочу присвоить им символьный стиль другого шрифта, в котором они не розовые, и не квадратики.

Пока не нашёл ответа на вопрос топика, делаю поиск всех возможных символов (в квадратных скобках и через символ «или» — | ). Получается громоздко и объём замены очень большой, больше 1000 совпадений, в общем, есть подозрение, что частые зависы ИнДизайна вызваны моим корявым написанием GREP-запроса.

Есть ли какой-то волшебный код символа, указав который, GREP будет искать сразу всех розовых единорогов?
 
Последнее редактирование:

К.Т.

Участник
Сообщения
315
Реакции
329
Волшебного нет.
Скорее всего, будет эффективнее вместо перечисления нужных символов, наоборот, исключить ненужные, причём использовать диапазоны символов и метасимволы.
Например: [^\w\s] означает любой символ, кроме всех словесных (буквы, цифры и "_" ) и всех пробельных.
 
  • Спасибо
Реакции: unpro и ~RA~

Eugenyus

Модератор
12 лет на форуме
Сообщения
1 960
Реакции
3 588
JavaScript:
var myDocument=app.activeDocument;
var allFound = [];
var numFonts = myDocument.fonts.length;
for (var z=0;z<numFonts;z++) {
    allFound = [];
    app.findGlyphPreferences = NothingEnum.nothing;
    app.findGlyphPreferences = NothingEnum.nothing;
    app.findGlyphPreferences.glyphID  = 0;
    app.findGlyphPreferences.appliedFont = myDocument.fonts[z].name;
    app.findGlyphPreferences.fontStyle = myDocument.fonts[z].fontStyleNameNative;
//$.writeln(myDocument.fonts[z].fullNameNative);
    allFound = myDocument.findGlyph ();
    if (allFound.length>0) {
     //   $.writeln(allFound.length+ ' Unassigned Glyphs in ' + myDocument.fonts[z].name );

        for (var y=0;y<allFound.length;y++) {
      //       $.writeln( allFound[y].contents+ '   ' +allFound[y].contents.charCodeAt(0) );
     
/****************************************     'wingdings'          заменить на свой стиль                 *******************************************************/    
             allFound[y].appliedCharacterStyle = 'wingdings';
          
        }
   }
}

alert('--done--');

//$.writeln('--done--');

(Найдено здесь, адаптировано под задачу.)