Для этих целей и создавался скрипт CompactTXT
/** Скрипт для размещения текстов внутри выбранных фреймов. Автоматически растягивает/уменьшает размер шрифта в фрейме (c) Eugeny Borisov a.k.a. kstati 2008. */ var myApp = app; var myDoc = myApp.activeDocument; var myObj = myDoc.selection[0]; var myTexts; var myText; var MixTextPointSize = 1; var MaxTextPointSize = 200; var InitPointSize = 9; var selCount = myDoc.selection.length; var currSelect = myDoc.selection; var objects2Work=Array(); while (selCount--) CalcObjectForHandle(currSelect[selCount]); /** Добавляю уникальные объекты в массив */ function AddToArrayUnique(obj,Iarray) { var i = Iarray.length; while (i--) if (Iarray[i] == obj) return; Iarray.push(obj); } /** objects2Work -- массив объектов с которыми нужно работать */ function CalcObjectForHandle(inputObject) { switch (String(inputObject)) { // HandleTextFrame(inputObject); // ('handled'); break; case "[object Story]" : AddToArrayUnique(inputObject, objects2Work); break; case "[object TextFrame]": case "[object Text]": case "[object TextColumn]": case '[object InsertionPoint]': case '[object Character]': AddToArrayUnique(inputObject.parentStory,objects2Work); break; case '[object Group]': var i = inputObject.allPageItems.length; while (i--) CalcObjectForHandle(inputObject.allPageItems[i]); break; case '[object Rectangle]': case '[object GraphicLine]': break; default: alert ("Выделенный объект неподдерживается Type : "+ String(inputObject)); } } var WorkLen = objects2Work.length; // alert(WorkLen); while (WorkLen--) HandleStory(objects2Work[WorkLen]); /** Функция, изменяющая размер текста, на указанную единицу (в процентах), пока не поменяется статус overflow если процент отрицательный - то ждем overflow==false, если положительный - true, // Использует значения MinTextPoinSize и MaxTextPointSize. При выходе за их рамки функция генерирует исключения 'StoryOverflowControl_MinTextPoinSize' и 'StoryOverflowControl_MaxTextPointSize' При percent = 0 генерирует исключение 'StoryOverflowControl_zeroPercent'; */ function StoryOverflowControl(inpStory, percent) { percent = percent/100;
if ( percent == 0) throw ('StoryOverflowControl_zeroPercent'); var waitForOverflow = (percent > 0) ? true: false; if (inpStory.overflows == waitForOverflow) return true; var newPointSize = inpStory.pointSize*percent; newPointSize = Math.round(newPointSize*20)/20; while (1) { inpStory.pointSize = newPointSize; if (inpStory.overflows == waitForOverflow) return true; var newPointSize = inpStory.pointSize*percent; newPointSize = Math.round(newPointSize*20)/20; if (inpStory.pointSize < MixTextPointSize) throw ('StoryOverflowControl_MinTextPoinSize'); if (inpStory.pointSize > MaxTextPointSize) throw ('StoryOverflowControl_MaxTextPointSize'); } } function HandleStory (inputSory) { inputSory.clearOverrides(); inputSory.autoLeading = 130; /** Процент автолеадинга */ inputSory.leading = Leading.auto; inputSory.pointSize = InitPointSize; inputSory.pointSize = InitPointSize; StoryOverflowControl(inputSory,+100); StoryOverflowControl(inputSory,-50); StoryOverflowControl(inputSory,+25); StoryOverflowControl(inputSory,-10); StoryOverflowControl(inputSory,+5); StoryOverflowControl(inputSory,-2.5); StoryOverflowControl(inputSory,+1); StoryOverflowControl(inputSory,-0.5); }
Комментариев нет:
Отправить комментарий