Расширенная поддержка двунаправленного текста

Существует широкий набор свойств для включения поддержки двунаправленного текста в документах.

Свойства двунаправленного текста в шаблонах

Некоторые элементы шаблона имеют свойство direction. Значение этого свойства может быть ltr (слева направо), rtl (справа налево), contextual или empty (значение по умолчанию). Если значение этого свойства - empty, направление соответствующего элемента наследуется или используется значение по умолчанию для текущего документа.

Следующие элементы шаблона имеют свойство direction:
  • Контейнер, Абзац, Ячейка таблицы, Элемент списка - свойство влияет на каждый логический абзац текста, для которого направление не определено явно.
  • Таблица - свойство определяет способ отображения столбцов (слева направо или в обратном направлении) и влияет на каждую ячейку, для которой направление не указано явно.
  • Список - свойство влияет на каждый элемент списка, для которого направление не указано явно.
  • Текст - свойство влияет только на содержимое текущего элемента. Оно не наследуется от других элементов или другими элементами.

Свойство direction настраивается на панели Свойства в Document Studio.

Свойство direction настраивается на панели Свойства

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

Следующие свойства метаданных времени выполнения для двунаправленного текста управляют макетом создаваемого документа и базовым направлением текста в документе.

Тип Значение Описание
bidi true, false (по умолчанию) Включает/выключает функциональность для двунаправленного текста.
document direction ltr, rtl Определяет макет документа. Если не указано ни свойство document direction, ни свойство output locale, для документа задается направление ltr. Если свойство document direction не указано, его фактическое значение во время выполнения зависит от значения свойства output locale. Для локалей с двунаправленным письмом, это значение будет rtl. Для остальных локалей - ltr.
text direction ltr, rtl, contextual,empty (по умолчанию) Определяет базовое направление текста. empty означает, что направление текста по умолчанию совпадает с направлением документа.

В приложении Панель запуска свойства настраиваются на панели Свойства или в окне Настроить свойства метаданных:

Настройка свойств двунаправленного текста на панели Свойства для спецификаций документов

На свойства двунаправленного текста можно ссылаться из шаблонов Rational Publishing Engine через внутреннюю переменную _sessionInfo:

Информация о сеансе в выражении сценария

В продуктах, где используется встроенная служба RRDG, свойства двунаправленного текста можно задавать программно. Например, в случае Rational DOORS Next Generation можно использовать подобный код:
LocalDocumentGenerator docGen = new LocalDocumentGenerator(new RRDGEngineImpl());
    String config = docGen.getConfigurationPath(configFolder.toURI());
    DocumentSpecificationBuilder builder = new DocumentSpecificationBuilder();
    RPEDocumentSpecification docSpec = builder.create(config);
    RPEMetadata metadata = docSpec.getRuntime().getMetadata();
    metadata.addProperty(new Property(RPEConfigConstants.PROPERTY_DOCUMENT_DIRECTION, new Value("","rtl"));
Прим.: В предыдущей версии Rational Publishing Engine использовалось свойство bidi вывода Microsoft Word для включения/выключения функциональности двунаправленного текста. Это свойство больше не поддерживается, хотя все еще показывается на панели Свойства вывода.

Определение направления элементов и базового направления текста в них во время выполнения

Направление элемента влияет на выравнивание, макет и базовое направление текста в нем.

Контейнер, Абзац, Таблица, Ячейка таблицы, Список и Элемент списка имеют свое собственное свойство direction. Если значение этого свойства - empty, фактическое направление соответствующего элемента наследуется от ближайшего предка, у которого свойство direction не empty. Если оказывается, что наследовать нечего; направление элемента определяется свойством document direction документа.

Если элемент Контейнер, Абзац, Таблица, Ячейка таблицы, Список или Элемент списка имеет собственное или унаследованное свойство direction со значением contextual, то фактическое направление элемента определяется его текстовым содержимым. Но если это невозможно (текущий элемент не содержит текст, или в тексте только нейтральные символы), то фактическое направление наследуется от ближайшего предка, у которого значение свойства direction не empty и не contextual. Если оказывается, что наследовать нечего; направление элемента определяется свойством text direction документа.

Если Контейнер, Абзац, Таблица, Ячейка таблицы, Список или Элемент списка содержит в качестве первого дочернего элемента элемент Текст, у которого свойство direction не empty; фактическое направление такого элемента определяется вычисленным направлением элемента Текст.

Если Таблица или Список имеет собственное или унаследованное свойство direction со значением contextual, фактическое направление такого элемента наследуется от ближайшего предка, у которого свойство direction не empty и не contextual. Если оказывается, что наследовать нечего; направление элемента определяется свойством document direction документа.

Если значение свойства direction элемента Текст не empty, содержимое этого элемента (может быть только частью логического абзаца) добавляется в создаваемый документ как изолированный фрагмент текста, отформатированный согласно этому свойству. Если у элемента Текст собственное свойство direction - contextual, базовое направление соответствующего фрагмента текста определяется его содержимым. Если фрагмент текста содержит только нейтральные символы, базовое направление текста определяется свойством text direction документа.

Направление элементов Оглавление, Список таблиц и Список иллюстраций определяется свойством document direction документа. Оно определяет только макет, например относительное положение номеров разделов, их имен и номеров страниц. Текст в именах раздела (для любого направления этих элементов) должен выглядеть так же, как в теле документа.

Направление элементов Название таблицы и Подпись рисунка определяется свойством document direction документа. Оно задает макет элемента, например относительное положение надписей и содержимого. Базовое направление каждой части названия (подписи) определяется свойством text direction документа.

Направление элемента Сноска определяется свойством document direction документа. Оно задает макет содержимого, например относительное положение номера сноски, ее текста и их выравнивание. Базовое направление текста сноски определяется свойством text direction документа.

Направление элемента Комментарий не определено. Базовое направление его текста определяется свойством text direction документа.

Направление элементов Верхний колонтитул и Нижний колонтитул определяется свойством document direction документа.

Обработка отформатированного текста (XHTML)

Содержимое элемента Текст может быть представлено фрагментами XHTML. Эти фрагменты анализируются и обрабатываются как наборы элементов шаблона:
  • P, H1-H6 - как абзацы с различными стилями
  • DIV - как контейнер
  • TABLE - как таблица
  • TD - как ячейка таблицы
  • OL,UL - как списки
  • LI - как элемент списка

Значения стиля direction и атрибута dir в элементах html уровня блока, таких как P, DIV, H1-H6, LI, TD, и в элементах TABLE, OL и UL распознаются и преобразуются в свойство форматирования direction Rational Publishing Engine. Если для текущего элемента html заданы и стиль и атрибут, используется значение dir.Заданное содержимое текущего элемента

Содержимое элементов html уровня блока обрабатывается как последовательность текстовых элементов с различными стилями. Можно использовать элементы SPAN html со стилем direction. Эти элементы SPAN обрабатываются как текстовые элементы, имеющие свойство стиля direction. (Однако эти элементы не должны содержать никаких дополнительных тегов HTML внутри себя. Элементы SPAN с дополнительными тегами HTML не поддерживаются и могут привести к непредсказуемым результатам.)


Комментарии