© 2001-2003
Алексей Алишевских
alexeya at gmail-dot-com

Last Modified:
01/24/2006 14:01:27

FOP и русские переносы

Начиная с версии 0.19 FOP распространяется скомпилированным с поддержкой русских переносов. Паттерны этих переносов основываются на public domain русских паттернах для TeX, разработанных Дмитрием Вулисом. Оригинал этих паттернов (BRHYPHEN.TEX) можно найти на http://www.ctan.org/tex-archive/language/cyrtug/.

Для того, чтобы переносы работали, необходимо выполнение следующих условий:

  • Должен быть указан язык текста. Для этого укажите атрибут XSL language="ru" у элемента root или элементов block (последнее требуется в случае мультиязычных документов).

  • У документа в целом (элемент root) или у отдельных блоков необходимо включить переносы и указать их параметры:

    hyphenate="true"
    hyphenation-push-character-count="2"
    hyphenation-remain-character-count="2"

  • Тем блокам, в которых необходимы переносы необходимо задать text-align="justify".

Использование собственных паттернов

Вы можете использовать альтернативные паттерны переносов, создав их конфигурацию для FOP из какого-нибудь файла паттернов TeX. Эти файлы можно найти в упомянутом архиве CyrTUG, на http://www.ctan.org/tex-archive/language/hyphenation/ruhyphen/ или взять из любого дистрибутива русифицированного ТеХа. Для того чтобы включить эти паттерны в FOP, необходимо:

  • Конвертировать паттерны в UTF-8 (обычно они находятся в KOI8 или Cp866)
  • Создать XML-документ, соответствующий hyphenation.dtd (в каталоге src/hyph сорсового дистрибутива FOP) и включить в него эти паттерны. Можно просто открыть существующий файл ru.xml (в том же каталоге) и заменить паттерны в нем на свои.

Далее можно

  • Заменить файл src/hyph/ru.xml своим файлом.
  • Перекомпилировать FOP

или

  • Сохранить файл под именем ru.xml в произвольном каталоге
  • Указать этот каталог в секции "hyphenation-dir" файла userconfig.xml (предварительно раскомментарив эту секцию).
  • Компилировать не нужно.

В каталоге src/hyph лежит множество паттернов для разных языков. Если вы уверены, что они вам не нужны, можете удалить их для ускорения компиляции.