[ID CS4-CS6] Конвертировать старую публикацию PageMaker в Indesign

1996 год это Mac OS 7. Если файл открывается PageMaker'ом то можно попробовать подгрузить те самые ATM шрифты и открыть. Может помочь.
 
полный коллект публикации со всеми оригинальными шрифтами?
Достаточно классических шрифтов чтобы понять. Я так со своим же PDF'ом воевал, открывался в иллюстраторе с аналогичным текстом. Подлянка была в том, что вьюер показывал нормально, а после пропускания через вёрстку в ID Mac OS X получался тот же бардак.
Заменил шрифт на классический и всё прошло. Шанс во всяком случае есть.
 
Открылся в Win CS3. Видимо здесь использовался шрифт с кириллицей на месте латинской группы. Это становится понятно, если предположить что справа написано "Жизнь Мартина Лютера" ( ":bpym Vfhnbyf K/nthf" ). Нужно либо искать такие шрифты, либо перекодировать текст.
 

Вложения

  • 2018-01-17_17-40-56.png
    2018-01-17_17-40-56.png
    28.2 КБ · Просм.: 832
Примерно так, но я имею дело с текстом, вырванном из исходного документа как из текстового. Буква "ю" где-то гуляет, но её нет и в исходном "тексте".
Прошу гуру от JavaScript ногами не бить, я больше по AppleScript. Надеюсь поможете ТС со строками to_String и from_String, заодно оптимизировав то, что сделано через пятую точку, и будет человеку счастье. Набросок работает со всем текстом в документе!
Снимок экрана 2018-01-18 в 20.43.46.png

Код:
var to_String = "юйцукенгшщзхъфывапролджэёячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЁЯЧСМИТЬБ,э\"\":—"

var from_String = "/qwertyuiop[]asdfghjkl;’\\zxcvbnm,nQWERTYUIOP{}ASDFGHJKL:«|ZXCVBNM<>‘ÇÈ%Ñ"
var AD = app.activeDocument;
var all_Page_Items = AD.textFrames;
var itemsCount = all_Page_Items.length;
if (itemsCount>0){
for ( i = 0; i < itemsCount; i++ ) {
var theItem = all_Page_Items[i];
theKind = "TextFrame";
if (theKind=="TextFrame"){
theString="";
theString = theItem.contents;
theLength = theString.length;
newString = "";
if (theLength>0){
for (j = 0; j < theLength; j++){
thenewChar = theString[j];
newChar=theString[j];
findChar=true
for (k=0; k< from_String.length;k++){
thisChar = from_String[k];
if ((thisChar==newChar) && (findChar)){
thenewChar=to_String[k];
findChar=false
} // theChar = newChar
} // for k < from_String.length
newString = newString + thenewChar;
} // for j < theLength
if (theString != newString)
theItem.contents = newString;
} // theLength >0
} // Kind = TextFrame
} // for itemsCount
} // itemsCount > 0
 
  • Спасибо
Реакции: Валера1966 и LeonidB
а зачем каждый символ индивидуально менять, быстрее прогнать 72 глобальные замены по всему документу. через findchangebylist, например.
 
зачем каждый символ индивидуально менять
Для надёжности. При глобальной замене нет никакой гарантии, что новый символ не окажется в списке заменяемых позже. Для русских букв не актуально, а вот знаки препинания здесь тоже под замену идут, как минимум двоеточие и запятая. Индивидуальная замена позволяет не обращать внимания на порядок замены.
 
  • Спасибо
Реакции: LeonidB
Вдобавок, лично я не уверен, что 72 глобальные замены будут работать быстрее одной посимвольной замены 'hmmm'
 
Для надёжности. При глобальной замене нет никакой гарантии, что новый символ не окажется в списке заменяемых позже. Для русских букв не актуально, а вот знаки препинания здесь тоже под замену идут, как минимум двоеточие и запятая. Индивидуальная замена позволяет не обращать внимания на порядок замены.

а, понял. стилем можно пометить. ну и порядок можно выставить, один раз же на всю жизнь :)

Вдобавок, лично я не уверен, что 72 глобальные замены будут работать быстрее одной посимвольной замены 'hmmm'

одной? их тут не одна, а столько, сколько символов в тексте, еще и с перебором вариантов каждый раз


вместо переборов конечно проще использовать словари, на худой конец indexOf()


Код:
var changes = {
"a":"b",
"c":"d"
}

var srcString = "ac";
for(var i=0;i<srcString.length;i++) {
 var currChar = srcString[i];
 if(changes[currChar]) srcString[i]=changes[currChar];
}
 
Последнее редактирование:
их тут не одна, а столько, сколько символов в тексте, еще и с перебором вариантов каждый раз
Cходу не заметил, я думал там как раз словарем и реализовано. Тогда, согласен, идиотизм
 
их тут не одна, а столько, сколько символов в тексте
Раскрою страшную тайну - глобальная замена работает точно так же, как и посимвольная здесь. Поиск последовательно просматривает весь текст на совпадение символа и заменяет если найдено. Не так тупо как у меня, конечно, но мои познания в JavaScript и сейчас близки к нулю, а этот скрипт я писал ещё при переходе с классической системы Mac OS на Mac OS X, причём для иллюстратора. Как раз для решения проблемы разных кодировок в разных системах.
Зато пару строк заменил и пользуйся.
 
Раскрою страшную тайну - глобальная замена работает точно так же, как и посимвольная здесь. Поиск последовательно просматривает весь текст на совпадение символа и заменяет если найдено. Не так тупо как у меня, конечно, но мои познания в JavaScript и сейчас близки к нулю, а этот скрипт я писал ещё при переходе с классической системы Mac OS на Mac OS X, причём для иллюстратора. Как раз для решения проблемы разных кодировок в разных системах.
Зато пару строк заменил и пользуйся.

одно дело когда он это внутри делает одним обращением из скрипта, а когда их из скрипта тысячи - это займет вполне ощутимое время
 
ну как-то так если даже. на одном фрейме в одну страницу уже скорость в 6 раз больше )

Код:
var to_String = "юйцукенгшщзхъфывапролджэёячсмитьбюЙЦУКЕНГШЩЗХЪФЫВАПРОЛДЖЭЁЯЧСМИТЬБ,э\"\":—"

var from_String = "/qwertyuiop[]asdfghjkl;’\\zxcvbnm,nQWERTYUIOP{}ASDFGHJKL:«|ZXCVBNM<>‘ÇÈ%Ñ"
var AD = app.activeDocument;
var all_Page_Items = AD.textFrames;
var itemsCount = all_Page_Items.length;

for ( i = 0; i < itemsCount; i++ ) {
var theItem = all_Page_Items[i];


var theString = theItem.contents;
var theLength = theString.length;
var newString = "";

for (j = 0; j < theLength; j++){

newChar=theString[j];
var charIndex = from_String.indexOf(newChar);
if(charIndex!=-1)
    newString+=to_String[charIndex];
    else newString+=newChar;



} 

if (theString != newString)
theItem.contents = newString;

}
 
  • Спасибо
Реакции: Валера1966