Сделать автозамену по тексту м2 на м(2 - суперскрипт)

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

zelo

Топикстартер
15 лет на форуме
Сообщения
224
Реакции
0
Текста много, нужно сделать переверстку чужих файлов.
Аналогичный вопрос по Registered Trademark. Но это из той же оперы.
Вообще, вопрос автозамены стилей нужных символов и выражений, как я понял, нереальный?
Спасибо!
 

Kostik

15 лет на форуме
Сообщения
977
Реакции
253
Нашел хитрое решение Вашей проблемы. см. скриншот.
В буфере соответсенно "М <суперскрипт> 2 ", замена на clipboard content, formated.
Так же можно и с трейдмарком.

оп, извиняюсь, это индизайн . К сожалению в Иллюстраторе видимо никак.
 

Вложения

  • M2.jpg
    M2.jpg
    144.2 КБ · Просм.: 888
Последнее редактирование:

andrejK

R.I.P.
Сообщения
10 300
Реакции
5 218
@Kostik, а ничего, что замена в иллюстраторе? не волнует???

если бы это был ИД - никаких "хитрых" решений не требовалось бы.
элементарная греп-замена. без всяких клипбоардов.
 

apg_777

15 лет на форуме
Сообщения
278
Реакции
81
Как вариант найти в глифах двойку как показатель степени и заменить м2 на м<2 как степень>. Но как цифра этот символ пропадет.
К сожалению с вариантами двоек придется поиграться — не все вставляются копипастом в строку замены как надо, тупо сбрасываются на обычную двойку. В Myriad Pro <U+00b2> проходит.
 
  • Спасибо
Реакции: zelo

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
а такое решение?
PHP:
//@target illustrator

alert ( superscriptSecondChar ( 'm', '2', 0 ) );

function superscriptSecondChar ( char1, char2, textFrameNum ) {
  var txtFrame = activeDocument.textFrames[ textFrameNum ];
  var charCount = txtFrame.textRange.characters.length;
  for ( var i = 0, j = 0; i < charCount; i++ ) {
    if ( txtFrame.textRange.characters[ i ].contents == char1 && txtFrame.textRange.characters[ i + 1 ].contents == char2 ) {
      if ( txtFrame.textRange.characters[ i + 1 ].characterAttributes.baselinePosition != FontBaselineOption.SUPERSCRIPT ) {
        txtFrame.textRange.characters[ i + 1 ].characterAttributes.baselinePosition = FontBaselineOption.SUPERSCRIPT;
        i++;
        j++;
      }
    }
  }
  return 'сделано ' + j + ' замен в текстовом блоке из ' + charCount + ' cимволов';
}
14000 символов обрабатывается за 6 секунд (358 замен)
 
Последнее редактирование:
  • Спасибо
Реакции: zelo

zelo

Топикстартер
15 лет на форуме
Сообщения
224
Реакции
0
Как вариант найти в глифах двойку как показатель степени и заменить м2 на м<2 как степень>. Но как цифра этот символ пропадет.
К сожалению с вариантами двоек придется поиграться — не все вставляются копипастом в строку замены как надо, тупо сбрасываются на обычную двойку. В Myriad Pro <U+00b2> проходит.
C "м2" вариант прошел сразу. Спасибо. Но с ® не хочет. А мне еще массу сносок в суперскрипт переводить ((( Получается только перетащив через clipboard в InDesign все заменить, и также вернуть обратно в готовом виде, но это не решение — слишком много фреймов ((
 

dumbm1

10 лет на форуме
Сообщения
421
Реакции
196
ф-ция для замены одного символа:
PHP:
superscriptOneChar('®', activeDocument.textFrames[0])

function superscriptOneChar ( latter, txtFrame ) {
  var date = new Date ();

  var charCount = txtFrame.textRange.characters.length;
  for ( var i = 0, j = 0; i < charCount; i++ ) {
    if ( txtFrame.textRange.characters[ i ].contents == latter ) {
      if ( txtFrame.textRange.characters[ i ].characterAttributes.baselinePosition != FontBaselineOption.SUPERSCRIPT ) {
        txtFrame.textRange.characters[ i ].characterAttributes.baselinePosition = FontBaselineOption.SUPERSCRIPT;
        j++;
      }
    }
  }
  return [ j, charCount, new Date () - date ];
}
Да, это, наверное, уже посложнее. А как выглядят эти сноски и по каким признакам (характерным только для этих сносок) их можно распознать?
 
  • Спасибо
Реакции: zelo

zelo

Топикстартер
15 лет на форуме
Сообщения
224
Реакции
0
только сочетания римских цифр i,ii,iii,iv... ix
Но я уже перелопатил их, что поделать, в ручную )
 
Статус
Закрыто для дальнейших ответов.