Добрый день!
Есть скрипт "Текст Автоужимка", который ужимает выделеный параграф или параграф, в котором стоит курсор до тех пор пока параграф не ужмется на 1 строку, но не менее мин. значения трекинга. Если ужать не удалось - возвращается начальное значение трекинга.
А можно ли в этот скрипт к трекингу добавить еще ужатие букв по горизонтали (Horizontal Scale) до определнного минимального значения и разрешить переносы слов? А потом также отменить, если не удалось ужать?
Вот скрипт:
// v.1.00
//Ужимает выделеный параграф или параграф, в котором стоит курсор до тех пор пока параграф не ужмется на 1 строку, но не менее мин. значения трекинга.
//Если ужать не удалось - возвращается начальное значение трекинга
//Если параграф уже имеет минусовой трекинг - просто обнуляет трекинг; это можно оключить (resetTracking = false)
var resetTracking = true;
var minTracking = -20;//минимальный трекинг
var step = 2;//шаг ужимки
var mySelect = app.selection[0];
switch (mySelect.constructor){
case InsertionPoint:
setTracking( mySelect.insertionPoints[0].paragraphs[0] );
break;
case Paragraph:
setTracking( mySelect );
break;
case Text:
for( i = 0; i < mySelect.paragraphs.length; i++ )
setTracking( mySelect.paragraphs );
break;
default:
alert("Необходимо выделить параграф");
exit();
}
function setTracking( paragraph ){
if(resetTracking && paragraph.tracking <0){
paragraph.tracking = 0;
exit();
}
var lastUndoIndex = app.activeDocument.undoHistory.length;//длинна массива отмен на момент запуска скрипта
var thisParaLines = paragraph.lines.length;//запоминаем исходное кол-во строк
var thisParaTracking = paragraph.tracking;//запоминаем исходный трекинг
var thisTracking = 0;
while(paragraph.tracking >-20){
paragraph.tracking = (thisTracking -= step);//уменьшаем трекинг
if(paragraph.lines.length<thisParaLines)//если кол-во линий стало меньше - заканчиваем и выходим
return;
}
if( lastUndoIndex < app.activeDocument.undoHistory.length )
for(var i = app.activeDocument.undoHistory.length; i > lastUndoIndex; i--)
app.activeDocument.undo();
//paragraph.tracking = thisParaTracking;//восстанавливаем исходный трекинг если ужать не удалось
}
//=================================================
/*
var win = new Window('dialog');
win.sText = win.add('statictext', undefined, 'ТРЕКИНГ ОБНУЛЕН');
win.center();
win.show();
$.sleep(100);
win.close();
*/
Есть скрипт "Текст Автоужимка", который ужимает выделеный параграф или параграф, в котором стоит курсор до тех пор пока параграф не ужмется на 1 строку, но не менее мин. значения трекинга. Если ужать не удалось - возвращается начальное значение трекинга.
А можно ли в этот скрипт к трекингу добавить еще ужатие букв по горизонтали (Horizontal Scale) до определнного минимального значения и разрешить переносы слов? А потом также отменить, если не удалось ужать?
Вот скрипт:
// v.1.00
//Ужимает выделеный параграф или параграф, в котором стоит курсор до тех пор пока параграф не ужмется на 1 строку, но не менее мин. значения трекинга.
//Если ужать не удалось - возвращается начальное значение трекинга
//Если параграф уже имеет минусовой трекинг - просто обнуляет трекинг; это можно оключить (resetTracking = false)
var resetTracking = true;
var minTracking = -20;//минимальный трекинг
var step = 2;//шаг ужимки
var mySelect = app.selection[0];
switch (mySelect.constructor){
case InsertionPoint:
setTracking( mySelect.insertionPoints[0].paragraphs[0] );
break;
case Paragraph:
setTracking( mySelect );
break;
case Text:
for( i = 0; i < mySelect.paragraphs.length; i++ )
setTracking( mySelect.paragraphs );
break;
default:
alert("Необходимо выделить параграф");
exit();
}
function setTracking( paragraph ){
if(resetTracking && paragraph.tracking <0){
paragraph.tracking = 0;
exit();
}
var lastUndoIndex = app.activeDocument.undoHistory.length;//длинна массива отмен на момент запуска скрипта
var thisParaLines = paragraph.lines.length;//запоминаем исходное кол-во строк
var thisParaTracking = paragraph.tracking;//запоминаем исходный трекинг
var thisTracking = 0;
while(paragraph.tracking >-20){
paragraph.tracking = (thisTracking -= step);//уменьшаем трекинг
if(paragraph.lines.length<thisParaLines)//если кол-во линий стало меньше - заканчиваем и выходим
return;
}
if( lastUndoIndex < app.activeDocument.undoHistory.length )
for(var i = app.activeDocument.undoHistory.length; i > lastUndoIndex; i--)
app.activeDocument.undo();
//paragraph.tracking = thisParaTracking;//восстанавливаем исходный трекинг если ужать не удалось
}
//=================================================
/*
var win = new Window('dialog');
win.sText = win.add('statictext', undefined, 'ТРЕКИНГ ОБНУЛЕН');
win.center();
win.show();
$.sleep(100);
win.close();
*/