TLF - поток текста через несколько контейнеров и разрывы строк - PullRequest
0 голосов
/ 21 ноября 2010

Я использую TLF для размещения словарной статьи.Он работает довольно хорошо, но мне нужно более детальное управление макетом, чем я могу добиться, задав свойства стиля в FlowElements, в первую очередь для горизонтального разнесения и установки отступов в SpanElements независимо от их родителей.

Решение, котороеНаиболее перспективным представляется разделение различных элементов записи на отдельные контейнеры и передача текста через них путем постепенного добавления новых контейнеров и ContainerControllers для каждого нового элемента с размером, установленным для их границ содержимого, чтобы текст перетек в каждый новый контейнер.

Это ПОЧТИ работает, но текст будет правильно перетекать в следующий контейнер, только если между двумя разделами текста будет вставлен дополнительный разрыв строки, который должен идти в разные контейнеры.Без разрыва строки контейнеры имеют правильный размер, но текст не отображается.

В этих примерах я добавил границы для спрайтов контейнера, чтобы вы могли видеть, где они рисуются.Помимо разрыва строки, текст точно такой же.Поле слога является SpanElement внутри ParagraphElement.Метка и текст произношения являются отдельными SpanElements внутри другого ParagraphElement.

Без разрыва строки:

no line break

С разрывом строки между 'rab-bit' и 'Sounds Like: ':

1 break

С разрывом строки ПОСЛЕ' rae biht '(предварительный разрыв строки не оказывает влияния):

2 breaks

Как видите, произношение не отображается, если после текста не добавлен разрыв строки, но выравнивание отключено.Кажется, что никакая комбинация разрывов строк не выровняет их правильно.

Есть идеи?Эти ошибки в TLF?Должен ли я попробовать другой метод?Мне бы очень хотелось, чтобы весь текст можно было выбирать как единое целое, и мне нравится лучший рендеринг и контроль, которые предлагает TLF, но мне также нужна гибкость компоновки.Я предполагаю, что возможно, что я мог бы взломать что-то подобное, с помощью разрывов строк и смещений позиционирования, но это, конечно, не было бы красиво (или ремонтопригодно).Спасибо за чтение.

1 Ответ

1 голос
/ 21 ноября 2010

Некоторое время назад я написал рецепт для Adobe Cookbooks, который может помочь вам в этом. по сути, я обнаружил, что намного проще полностью отказаться от использования элементов span и абзаца в пользу сосредоточения в основном на контроллерах контейнеров. надеюсь, это поможет:

Создание отформатированного макета TextFlow для простых текстовых ресурсов


Обновление

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

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().width;

//and/or

targetFlow.flowComposer.getControllerAt(controllerIndex).getContentBounds().height;

вот еще один рецепт, который я написал, который автоматически изменяет размер шрифта текстового потока, чтобы он помещался внутри его контейнера: Автоматизация размера шрифта для контейнеров TextFlow

но вместо изменения размера шрифта, как я сделал, вы можете изменить размер контейнера, чтобы он соответствовал вашему тексту.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...