RTF - Описание формата файла

Данный формат был определен фирмой Microsoft как стандартный формат для обмена текстовыми документами. Следовательно, по назначению этот формат подобен SYLK-формату для электронных таблиц. RTF поддерживается многими продуктами фирмы Microsoft. Так, например, начиная с версии 2.0, он введен в Windows в качестве Clipboard-формата, благодаря чему возможен обмен данными между различными прикладными программами Windows. Кроме того, RT-формат поддерживается программами WORD для Macintosh, начиная с версии 3.X, и WORD для PC, начиная с версии 4. X.

В RTF для обмена документами используются только представимые символами коды из ASCII-, MAC- и PC-символьного набора. Кроме текста, файл в RT-формате в читаемой форме содержит команды управления.

Документ состоит преимущественно из команд управления настройки программы чтения файлов в RTF-формате. Эти команды можно разделить на управляющие слова (control words) и управляющие символы (control symbols).

Управляющее слово представляет собой последовательность символов с разделителем (delimiter) в конце:

\lettersequence <delimiter>

Перед управляющим словом вводится обратная косая черта "\" (backslash). В качестве разделяющих могут использоваться следующие символы:

В RT-формате для задания управляющей последовательности используются буквы от "А" до "Z" и от "а" до "z", а также цифры от "0" до "9". Национальные символы к управляющей информации не относятся.

В качестве, управляющих символов используются отдельные буквы. Перед каждым управляющим символом вводится обратная косая черта "\":

\control symbol

В настоящее время определены только некоторые из этих символов. Поэтому при чтении неизвестные символы могут быть пропущены.

В RT-формате существует возможность объединять отдельные последовательности в группы при помощи скобок:

{ начало группы

} конец группы

Такие группы создаются, например, при описании сносок, колонтитулов и т.п. Если необходимо разместить символы "\", "{" или "}" внутри обычного текста, то перед ними надлежит поставить обратную косую черту:

\\

\{

\}.

Это позволяет программе, читающей RTF-последовательность, распознать, что символ не следует интерпретировать как управляющий.

В RT-формате используются также некоторые символьные коды для управления печатью

КодЗначение
09НТабулятор
0АНСимвол CR
0СНСимвол LF

Символы CR и LF, расположенные внутри текста, будут пропущены. Microsoft использует эти символы для большей наглядности при представлении RTF-файла. Внутри управляющих слов символы CR и LF могут иметь особое значение, подробнее об этом будет сказано при описании команд.

Специальные управляющие слова (special control words)

В RTF имеются управляющие слова специального назначения. Рассмотрим кратко эти слова и их назначение.

\chpgn

Управляющее слово change page number выводит текущий номер страницы.

\chftn

Управляющее слово change footnote активизирует автоматическую нумерацию сносок.

\chdate

С помощью change date можно вывести текущую дату.

\chtime

С помощью change time можно вывести текущее время.

\chatn

Ссылка на примечание (текст следует в группе).

\chftnsep

Свидетельствует об изменении линии, отделяющей сноски от текста.

\/

С помощью данной последовательности вводится текст формулы.

\:

Обозначает подпункт индекса.

\*

Текст может быть пропущен при чтении RTF-формата.

\~

Задает жесткий (неразрываемый) пробел между двумя словами, т.е. в этой позиции предложение не может быть разделено при переносе на следующую строку.

\-

Символ обозначает мягкий перенос (nonrequired hyphen).

\_

Символ обозначает неразрываемый перенос (nonbreaking hyphen), на месте которого слово не может быть разделено.

\'hh

Последовательность позволяет прямой ввод в тексте шестнадцатеричных чисел. Они задаются вместо символов hh.

\page

Данная последовательность задает переход на новую страницу.

\line

Эта последовательность вызывает переход на новую строку в тексте.

\раr

С помощью данной последовательности в тексте отмечается конец абзаца. Последовательность \раr может заменяться последовательностью \10 или \13. При этом \10 соответствует ASCII-символу с кодом 10 (carriage return). Непосредственно ввести ASCII-код 10 (CR) нельзя, т.к. он игнорируется программой чтения.

\sect

Эта последовательность обозначает конец текстового фрагмента или текстового абзаца.

\tab

Данная последовательность заменяет табулятор. Можно также непосредственно задавать ASCII-код 09Н.

\сеll

Конец таблицы (столбец).

\row

Конец таблицы (строка).

Операторы настройки (destination control words)

С помощью описанных ниже управляющих слов можно произвести основную настройку программы чтения RTF. Они могут встречаться только в начале документа или в начале группы. Все операторы вместе с параметрами должны быть заключены в скобки, например:

{\rtf0\pc.......}

Ниже описан формат некоторых операторов.

\rtf <параметр>

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

{\rtf0.......}

Метка должна стоять в начале файла. После этого оператора могут следовать другие операторы или закрывающая скобка.

Установка вида кодировки для сохраняемого текста осуществляется с помощью следующих операторов:

Для передачи текстов между различными системами должна использоваться кодировка \ansi.

\colortbl

Windows и другие программы пользуются палитрами для определения используемых цветов. Чаще всего палитра состоит из 16 различных цветов, получаемых путем комбинации основных цветов — красного, зеленого и синего. Команда \colortbl позволяет изменить отдельные определения в палитре. Для каждого цвета в таблице указывается величина красной, зеленой и синей составляющей. Каждый цвет описывается тремя параметрами:

\red000

\green000

\blue000

Вместо 000 указывается величина доли цвета в диапазоне от 0 до 255. Пример: в таблице, состоящей из 16 цветов, должны быть заново определены цвета 0-й и 2-й. Для переопределения цветов может быть задана следующая последовательность:

{ \colortbl \red128\green64\blue128\;;\red0\green64\blue128; }

Определение цвета завершается точкой с запятой. Поскольку 1-й цвет остается без изменений, в последовательности два символа ";" следуют один за другим. Последовательность завершается закрывающей скобкой.

Оператор \cfn определяет цвет фона (при стандартной настройке n=0), а оператор \cbn - цвет символа (при стандартной настройке n=0).

\fonttbl

Данный оператор используется для построения таблицы шрифтов и соотносит имя шрифта (группы шрифтов) с номером шрифта. При определении шрифта можно использовать следующие операторы:

Команда для создания группы шрифтов может состоять из таких операторов:

{\fonttbl\f0\fnil default;}

{\fl\froman roman h;}

{\f2\fswiss helvetica;}

После ключевого слова \fonttbl следует первый номер шрифта \f0. Далее идет определение группы шрифтов. Здесь после номера 0 указано \fnil, т.е. имя группы неизвестно. Следующий параметр обозначает имя выбираемого шрифта (например, roman h). Указание default говорит считывающей программе о том, что следует использовать стандартный шрифт. После имени шрифта стоит точка с запятой. В приведенном примере определены только шрифты с номерами 1 и 2. Вся последовательность может быть объединена фигурными скобками в группу.

Таблица шрифтов должна быть заполнена значениями до того, как встретится оператор \stylesheet или текст. Стандартный шрифт вводится оператором \deffn.

\stylesheet

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

Оператор может иметь, например, следующий вид:

{\stylesheet\s0\f3\fs20\qj Normal;}

{\sl\f3\fs30\b\qc Heading Level 3;}

Шрифты нумеруются числами от 0 до n (\s0...). В первой строке стилю абзаца 0 (\s0) предписывается имя Normal. Вывод текста выполняется шрифтом 3 (\f3), размером 10 пунктов (\fs20). Параметр \qj говорит о том, что надпись должна выравниваться по формату. Вторая строка определяет стиль шрифта 1, который получает имя Heading Level 3. Шрифт имеет размер 15 пунктов, жирное начертание (= bold) и при выводе надпись центрируется (\qc).

\pict

Этот оператор используется при описании рисунка в формате битовой карты (bitmap). Следующие параметры содержат описание рисунка в виде шестнадцатеричных значений. Параметры могут быть выборочно использованы для определения геометрии рисунка или его формата:

\footnote

Оператор должен следовать непосредственно после отметки сноски и относиться к тексту.

\header

Оператор определяет верхний колонтитул текущего фрагмента текста и поэтому должен указываться в начале текста.

\headerl

Оператор определяет верхний колонтитул четной страницы (left hand header), на которой колонтитул выводится с выравниванием влево.

\headerr

Оператор устанавливает верхний колонтитул нечетной страницы, на которой колонтитул выводится с выравниванием вправо (right hand header).

\headerf

Оператор устанавливает верхний колонтитул первой страницы (first page header).

\footer

Оператор устанавливает нижний колонтитул текущего фрагмента и должен указываться перед началом текста.

\footerl

Оператор устанавливает нижний колонтитул четной страницы (left hand footer), на которой колонтитул выводится с выравниванием влево.

\footerr

Оператор устанавливает нижний колонтитул нечетной страницы, на которой он выводится с левосторонним выравниванием (right hand footer).

\footerf

Оператор устанавливает нижний колонтитул первой страницы (first page footer).

\ftnsep

Оператор определяет символ-разделитель для сносок.

\ftnsepc

Оператор определяет разделитель для сноски, которая продолжается на следующей странице (continued footnote).

\ftncn

Этот оператор применяется для обозначения продолжения текста сноски.

\info

С помощью данного ключевого слова в начале документа открывается информационный блок. Он может содержать информацию о заголовке документа, дате его составления и т.д. Внутри информационного блока, который начинается оператором \info, могут встречаться следующие операторы:

Автор, название документа и т.п.

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

\vern000

Вместо 000 в операторе записывается номер версии программы, в которой составлен документ.

\creatim

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

\revtim

Определяет время и дату последней корректировки документа. Оба параметра задаются так, как указано в описании оператора \creatim.

\printtim

Определяет время и дату последней распечатки документа. Оба параметра задаются так, как указано в описании оператора \creatim.

\buptim

Определяет время и дату последнего сохранения документа (backup). Оба параметра задаются так, как указано в описании оператора \creatim.

\edmins000

Хранит длительность (в минутах) последнего сеанса редактирования.

Уточняющая информация о документе

Вышеуказанные операторы содержат уточняющую информацию о документе (количество страниц, количество слов и количество символов), а также внутренний идентификационный номер.

\comment

В заголовке может встретиться текст, помеченный ключевым словом \comment. В этом случае речь идет о комментарии в тексте, который пропускается программой чтения данных в RTF-формате.

\field

Имеется группа операторов, при помощи которых описываются поля, вставляемые в WORD. Группа начинается ключевым словом \field, за которым могут следовать такие операторы:

\xe

Эта группа операторов начинается последовательностью символов \xe и может содержать следующие ключевые слова:

\tc

Группа содержит элементы данных для таблиц и может состоять из следующих ключевых слов:

Закладки

В группу операторов, определяющих закладки, входят только два оператора:

Операторы форматирования (document formatting)

В следующую группу входят команды для форматирования текста. Эти команды могут быть разделены на подгруппы:

В этом разделе описываются операторы форматирования всего документа.

\sectdОператор устанавливает стандартную настройку параметров секции.
\sbknoneОператор подавляет переход на новую страницу перед началом секции (section break continuous).
\sbkcolПри указании этой команды в начале секции осуществляется переход на новую колонку (section break new column).
\sbkpageПри указании этой команды (section break new page) в начале секции происходит переход к новой странице.
\sbkevenПри указании этой команды в начале секции выполняется переход к новой странице, если номер страницы четный (section break even).
\sbkoddПри указании этой команды в начале секции выполняется переход к новой странице, если номер страницы нечетный (section break odd).
\pgostartsnНумерация страниц начинается с номера n.
\pgnrestartКоманда устанавливает временную нумерацию страниц, начиная со значения 1. Параметр 0 восстанавливает прежний порядок нумерации.
\pgndecНомера страниц выводятся в десятичном формате.
\pgnucrmНомера страниц выводятся большими римскими цифрами (upper case roman).
\pgnlcrmНомера страниц выводятся маленькими римскими цифрами (lower case roman).
\pgncontСквозная нумерация страниц (стандартная настройка).
\pgnucltrНомера страниц выводятся прописными символами (upper case letter).
\pgnlcltrНомера страниц выводятся строчными символами (lower case letter).
\pgnx000С помощью этой команды задается X-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips.
\pgny000С помощью этой команды задается Y-координата номера страницы при автоматической нумерации. Значение указывается относительно верхнего левого угла страницы и по умолчанию устанавливается равным 720 twips.
\linemod000Оператор устанавливает величину интервала при нумерации строк.
\linex000Оператор устанавливает расстояние между строками. По умолчанию оно равно 360 twips.
\linestartnНумерация строк начинается со значения n.
\linerestartВозвращает номер строки к значению 1. Команда устанавливает, что нумерация строк начинается с 1.
\linepageНа каждой странице нумерация строк начинается со значения 1.
\linecontНумерация строк продолжается с предыдущей секции (предыдущей главы).
\headery000Команда задает Y-координату верхнего колонтитула. Значение указывается относительно верхнего края страницы и по умолчанию принимается равным 720 twips.
\footery000Команда задает Y-координату нижнего колонтитула. Значение указывается относительно нижнего края страницы и по умолчанию принимается равным 720 twips.
\vertaltТекст по вертикали выравнивается к верхнему краю страницы. Текст располагается в верхней части страницы (vertically align at top of page).
\vertalcТекст размещается посредине страницы. Вертикальное выравнивание текста выполняется по центру страницы (vertical align centered).
\vertaljТекст по вертикали размещается так, чтобы заполнить всю страницу (vertical align justified).
\vertalbВертикальное выравнивание текста выполняется по нижнему краю страницы (vertical align bottom).
\cols000С помощью этой команды можно задать количество столбцов в строке. Стандартное значение равно 1.
\colsx000С помощью этой команды устанавливается расстояние между двумя столбцами в twips. Стандартное значение равно 720 twips.
\endnhereПри указании этого оператора послетекстовые сноски выводятся в конце секции. Такой вывод можно подавить путем задания параметра 0.
\titlepgОператор задает вывод титульной страницы. Параметр 0 подавляет вывод титульной страницы.

Форматирование абзаца (paragraph formatting)

Следующие команды управляют форматированием абзаца (paragraph).

\pardОператор устанавливает стандартную настройку для абзаца.
\s000Команда определяет шрифт для данного абзаца. С помощью подставляемого вместо 000 значения осуществляется выбор в таблице шрифтов.
\qlПри задании команды quad left текст выравнивается по левому краю страницы.
\qrПри задании команды quad right текст выравнивается по правому краю страницы.
\qcПри задании команды quad centered текст размещается по центру страницы.
\qjПри задании команды quad justified текст выравнивается по формату страницы.
\fi000Оператор определяет величину отступа первой строки абзаца (first line indent). Стандартное значение равно 0.
\li000Оператор определяет величину втяжки абзаца слева (left indent). Стандартное значение равно 0.
\ri000Оператор определяет величину втяжки абзаца справа (right indent). Стандартное значение равно 0.
\sb000Оператор задает количество пустых строк, вставляемых перед абзацем (spaces before). Стандартное значение равно 0.
\sa000Оператор задает количество пустых строк, вставляемых после абзаца (spaces after). Стандартное значение равно 0.
\sl000Команда устанавливает расстояние между строками в пунктах. Стандартное значение равно одной строке (12 пунктам). Команда \sl000 включает auto line mode.
\intblАбзац является частью некоторой таблицы.
\keepПри указании этой команды фиксируется принадлежность текста к текущему абзацу. Команда отключается указанием параметра 0.
\kеерnПри указании этой команды текст ставится в соответствие следующему (next) абзацу. Команда отключается указанием параметра 0.
\sbysУказанием этого оператора может быть включен режим side by side. При задании параметра 0 режим отключается.
\pagebbУказанием этого оператора может быть включена команда page break before. При задании параметра 0 команда отключается.
\nоlinеПри задании этой команды отключается нумерация строк. Указание параметра 0 подавляет команду.
\brdrtЗадает линию над абзацем (boarder top).
\brdrbЗадает линию под абзацем (boarder bottom)..
\brdrlЗадает линию слева от абзаца (boarder left).
\brdrrЗадает линию справа от абзаца (boarder right).
\boxЗадает рамку вокруг абзаца.
\brdrsЗадает нормальную линию (single thickness) для рамки.
\brdrtbЗадается толстую (thick) линию для рамки.
\brdsuЗадает оттененную рамку (boarder).
\brdrdbЗадается двойную рамку (boarder).
\brdrdotРамка обозначается пунктирной линией.
\brdrbairРамка обозначается тонкой линией.
\brspnРасстояние в twips между рамкой и объектом.
\tqrОбозначает табулятор, относительно которого текст выравнивается вправо (right flush tab).
\tgcОбозначает табулятор, относительно которого текст выравнивается по центру (centered tab).
\tqdecОбозначает десятичный табулятор (decimal aligned tab).
\tldotОбозначает табулятор, для которого пустое пространство заполняется точками (tab leader dot).
\tibypbenОбозначает табулятор, для которого пустое пространство заполняется дефисами (tab leader hyphen).
\tlulОбозначает табулятор, для которого пустое пространство заполняется символами подчеркивания (tab leader underline).
\tith Обозначает табулятор, для которого пустое пространство заполняется жирной чертой (tab leader thick line). \
\tx000С помощью этой команды задается положение табулятора.
\tb000С помощью команды задается положение вертикального табулятора. При этом по всей длине текущего абзаца проводится вертикальная линия.

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

\posxnПозиционирует абзац на расстоянии n twips от левого края.
\posxcАбзац по горизонтали размещается по центру относительно указанного элемента (страницы, колонки).
\posxiАбзац по горизонтали размещается внутри указанного элемента.
\posxlАбзац по горизонтали размещается слева относительно указанного элемента.
\posxoАбзац по горизонтали размещается вне указанного элемента.
\posxrАбзац по горизонтали размещается справа относительно указанного элемента.
\posysiПозиционирует абзац на расстоянии "n" twips от верхнего края.
\posyilПозиционирует абзац в текущей позиции (inline).
\posytАбзац по вертикали размещается в верхней части указанного элемента (страницы, колонки).
\posycАбзац по вертикали размещается в центре указанного элемента.
\posybАбзац по вертикали размещается в нижней части указанного элемента.
\abswnАбсолютная ширина текста абзаца в twips.
\dxfrtextnРасстояние в twips по горизонтали между основным текстом и абсолютно позиционированным объектом (рамкой с текстом или рисунком).
\pvmrgПозиция по вертикали относительно полей.
\pvpgПозиция по вертикали относительно страницы.
\phmrgПозиция по горизонтали относительно полей.
\рhpgПозиция по горизонтали относительно страницы.
\рhсоlПозиция по горизонтали относительно столбца.

Для форматирования таблиц определены следующие команды.

\clbrdrbНижний край таблицы.
\clbrdrtВерхний край таблицы.
\clbrdrlЛевый край таблицы.
\clbrdrrПравый край таблицы.
\trowdУстанавливает стандартные значения строк таблицы.
\trqlЛевостороннее выравнивание при размещении строк таблицы (с учетом столбцов).
\trqrПравостороннее выравнивание при размещении строк таблицы (с учетом столбцов).
\trqcЦентрирование строк таблицы (с учетом столбцов).
\trgaphoПоловина расстояния между ячейками таблицы (в twips).
\trrbnВысота строки в twips.
\trleftmРасположение левого угла таблицы.
\cellxnСмещение правой границы таблицы.
\clmgfОбъединение (merge) первой ячейки с остальными ячейками таблицы.
\clmrgОбъединение ячейки с предыдущей ячейкой.

Форматирование символов (character formatting)

Данная группа операторов используется для форматирования символов (жирное начертание, подчеркивание и т.д.).

\plainС помощью этой команды устанавливаются стандартные параметры форматирования.
\bУстановка жирного начертания (bold) для печатаемого текста. Для отмены необходимо указать параметр 0.
\iЗадание курсивного начертания (italic) для печатаемого текста. Установка отменяется указанием параметра 0.
\strikeПечатаемый текст будет зачеркнутым (strikethrough). Для отмены следует выбрать параметр 0.
\outlУстановка контурного шрифта (outline) для печатаемого текста. Для отмены надлежит выбрать параметр 0.
\shadПечатаемый текст будет оттенен. Для отмены необходимо установить параметр 0.
\scapsУстановка печати текста строчными буквами (small caps). Для отмены нужно выбрать параметр 0.
\capsУстановка печати текста прописными и строчными буквами. Для отмены необходимо выбрать параметр 0.
\vПечатаемый текст будет заменен пробелами (invisible). Для отмены следует установить параметр 0.
\f000Установка настройки шрифта с указанием в качестве параметра номера фонта.
\fs000Оператор в качестве параметра содержит высоту символов, заданную в единицах по 1/2 пункта. Стандартное значение высоты равно 24 единицам (12 пунктам).
\expnd000Параметр позволяет изменить расстояние между символами путем указания количества интервалов величиной по 1/4 пункта каждый.
\ulУстановка режима подчеркивания текста. Для отмены необходимо выбрать параметр 0.
\ulwОператор позволяет задать подчеркивание только слов.
\uldЗадание пунктирного подчеркивания текста (dotted underline).
\uldbУстановка режима двойного подчеркивания текста (double underline).
\ulnoneОтмена подчеркивания текста.
\up000Установка режима надстрочного написания символов (superscript). Размер задается в единицах 1/2 пункта.
\dn000Установка режима подстрочного написания символов (subscript). Размер задается в единицах 1/2 пункта.
\cf000Указание номера цвета в палитре.
\сb000Задание цвета фона путем указания номера в палитре.

Последующие версии RT-формата могут быть дополнены новыми командами. Если программа не распознает команду, то она может быть пропущена. Конец каждой команды отмечается одним из описанных выше разделяющих символов (чаще всего -точкой с запятой).