Вписать текст во фреймы. Нужны идеи

  • Автор темы Автор темы Satura
  • Дата начала Дата начала
Статус
Закрыто для дальнейших ответов.

Satura

Участник
Топикстартер
Сообщения
5
Реакции
0
Есть несколько связанных фреймов, допустим 28. В них размещен текст, разбитый на 28 частей, посредством 27ми Frame Break.

Задача: каждый огрызок текста, путем изменения Leading и размера шрифта, "вписать" в свой фрейм, _независимо_ от параметров других огрызков в других фреймах.

Что меня для начала интересует: предположим, что первая часть текста не вмещается в первый фрейм и в конце стоит frame break. Как выделить собственно этот текст? как от начала фрейма до frame break выделить?

Использую ID CS CE, в нем даже поиска нет для frame break, но это непринципиально, если легче сделать в CS3.

Спасибо.
 
Ответ: Вписать текст во фреймы. Нужны идеи

Поставить сильно маленький интерлиньяж и вертикальную выключку Justify. Все сделается само.
 
Ответ: Вписать текст во фреймы. Нужны идеи

Specialist сказал(а):
Поставить сильно маленький интерлиньяж и вертикальную выключку Justify. Все сделается само.

Смело.
Но нельзя делать слишком маленьким, нужно до опр. лимита, после которого надо уже изменять _размер шрифта_.
 
Ответ: Вписать текст во фреймы. Нужны идеи

Ну тогда идти по коллекции параграфов и проверять их все на предмет того не заканчиваются ли они фрейм-брейком.

Вариант номер 2 - использовать GREP. CS3, естественно.
 
Ответ: Вписать текст во фреймы. Нужны идеи

А что, двух идей мало?
 
Ответ: Вписать текст во фреймы. Нужны идеи

Specialist сказал(а):
А что, двух идей мало?

Да, в общем, легких путей не дождёмся, придется через коллекцию параграфов. К сожалению я пока не представляю, как определить в скрипте, есть ли в конце параграфа frame break.
 
Ответ: Вписать текст во фреймы. Нужны идеи

Используйте оператор условного перехода. Типа такого:
if (myParagraphs.characters.lastItem == SpecialCharacters.FRAME_BREAK) {}

Или типа такого:
if (myParagraphs.contents[length(myParagraphs.contents)] == SpecialCharacters.FRAME_BREAK) {}

Сам не пробовал, так что код не рабочий. Экспериментируйте.
 
Ответ: Вписать текст во фреймы. Нужны идеи

Написал однако я этот скрипт.
Однако попутно нашлась проблемка редкая, поиском найти не сумел.

Допустим, в Параграфе есть слово настолько длинное, что не помещается в ширину фрейма, а у стиля абзаца стоит "без переносов", — какое событие образуется в этом случае?

Как узнать какой это абзац и, соответственно, выставить ему переносы?

Я посидел и сделал "чтобы пока работало", но чую, что это коряво. А на уровне объектов ничего сносного не нашел.

try{

if (myParagraphs[myCounter].parentTextFrames[0].index){

}
}
catch(err){
myParagraphs[myCounter-1].hyphenation = true
}
 
Ответ: Вписать текст во фреймы. Нужны идеи

Ну это не такая уж и плохая идея на самом деле. ;)
 
Статус
Закрыто для дальнейших ответов.