previous next Title

CONTENTS OF AN RTF FILE


An RTF file has the following syntax:

<File>

'{' <header> <document>'}'
This syntax is the standard RTF syntax; any RTF reader must be able to correctly interpret RTF written to this syntax. It is worth mentioning again that RTF readers do not have to use all control words, but they must be able to harmlessly ignore unknown (or unused) control words, and they must correctly skip over destinations marked with the \* control symbol. There may, however, be RTF writers that generate RTF that does not conform to this syntax, and as such, RTF readers should be robust enough to handle some minor variations. Nonetheless, if an RTF writer generates RTF conforming to this specification, then any correct RTF reader should be able to interpret it.

Header

The header has the following syntax:

<header>

\rtf <charset> \deff? <fonttbl> <filetbl>? <colortbl>? <stylesheet>? <revtbl>?

RTF Version

An entire RTF file is considered a group and must be enclosed in braces. The control word \rtfN must follow the opening brace. The numeric parameter N identifies the major version of the RTF Specification used. The RTF standard described in this Application Note, although titled as version 1.4, continues to correspond syntactically to RTF Specification Version 1. Therefore, the numeric parameter N for the \rtf control word should still be emitted as 1.

Character Set

After specifying the RTF version, you must declare the character set used in this document. The control word for the character set must precede any plain text or any table control words. The RTF Specification currently supports the following character sets.

Control word

Character set
\ansi
ANSI (the default)
\mac
Apple Macintosh
\pc
IBM PC code page 437
\pca
IBM PC code page 850, used by IBM Personal System/2Æ (not implemented in version 1 of Microsoft Word for OS/2)

Font Table

The \fonttbl control word introduces the font table group. Unique \fN control words define each font available in the document, and are used to reference that font throughout the document. This group has the following syntax:

<fonttbl>

'{' \fonttbl (<fontinfo> | ('{' <fontinfo> '}'))+ '}'
<fontinfo>
<fontnum><fontfamily><fcharset>?<fprq>?<nontaggedname>?<fontemb>?<codepage>? <fontname><fontaltname>? ';'
<fontnum>
\f
<fontfamily>
\fnil | \froman | \fswiss | \fmodern | \fscript | \fdecor | \ftech | \fbidi
<fcharset>
\fcharset
<fprq>
\fprq
<nontaggedname>
\*\fname
<fontname>
#PCDATA
<fontaltname>
'{\*' \falt #PCDATA '}'
<fontemb>
'{\*' \fontemb <fonttype> <fontfname>? <data>? '}'
<fonttype>
\ftnil | \fttruetype
<fontfname>
'{\*' \fontfile <codepage>? #PCDATA '}'
<codepage>
\cpg
Note for <fontemb> that either <fontfname> or <data> must be present, although both may be present.

All fonts available to the RTF writer can be included in the font table, even if the document doesn't use all the fonts.

RTF also supports font families, so that applications can attempt to intelligently choose fonts if the exact font is not present on the reading system. RTF uses the following control words to describe the various font families.

Control word

Font family
Examples
\fnil
Unknown or default fonts (the default)

\froman
Roman, proportionally spaced serif fonts
Times New RomanÆ, PalatinoÆ
\fswiss
Swiss, proportionally spaced sans serif fonts
ArialÆ
\fmodern
Fixed-pitch serif and sans serif fonts
Courier NewÆ, Pica
\fscript
Script fonts
Cursive
\fdecor
Decorative fonts
Old English, ITC Zapf ChanceryÆ
\ftech
Technical, symbol, and mathematical fonts
Symbol
\fbidi
Arabic, Hebrew, or other bidirectional font
Miriam
If an RTF file uses a default font, the default font number is specified with the \deffN control word, which must precede the font-table group. The RTF writer supplies the default font number used in the creation of the document as the numeric argument N. The RTF reader then translates this number through the font table into the most similar font available on the reader's system.

The following control words specify the character set, alternative font name, pitch of a font in the font table, and non-tagged font name.

Control word

Definition
\fcharsetN
Specifies the character set of a font in the font table.
\falt
Indicates alternate font name to use if the specified font in the font table is not available. '{\*' \falt <Alternate Font Name>'}'
\fprqN
Specifies the pitch of a font in the font table.
\f*\fname
This is an optional control word in the font table to define the non-tagged font name. This is the actual name of the font without the tag, used to show which character set is being used. For example, Arial is a non-tagged font name, and Arial (Cyrillic) is a tagged font name. This control word is used by WordPad. Word ignores this control word (and never creates it).
If \fcharset is specified, the N argument can be one of the following types.

Character set

N Value
ANSI_CHARSET
0
SYMBOL_CHARSET
2
SHIFTJIS_CHARSET
128
GREEK_CHARSET
161
TURKISH_CHARSET
162
HEBREW_CHARSET
177
ARABICSIMPLIFIED_CHARSET
178
ARABICTRADITIONAL_CHARSET
179
ARABICUSER_CHARSET
180
HEBREWUSER_CHARSET
181
CYRILLIC_CHARSET
204
EASTERNEUROPE_CHARSET
238
PC437_CHARSET
254
OEM_CHARSET
255
If \fprq is specified, the N argument can be one of the following values.

Pitch

Value
Default pitch
0
Fixed pitch
1
Variable pitch
2

Font Embedding

RTF supports embedded fonts with the \fontemb group located inside a font definition. An embedded font can be specified by a filename, or the actual font data may be located inside the group. If a filename is specified, it is contained in the \fontfile group. The \cpg control word can be used to specify the character set for the filename.

RTF supports TrueType and other embedded fonts. The type of the embedded font is described by the following control words.

Control word

Embedded font type
\ftnil
Unknown or default font type (the default)
\fttruetype
TrueType font

Code Page Support

A font may have a different character set from the character set of the document. For example, the Symbol font has the same characters in the same positions both on the Macintosh and in Windows. RTF describes this with the \cpg control word, which names the character set used by the font. In addition, filenames (used in field instructions and in embedded fonts) may not necessarily be the same as the character set of the document; the \cpg control word can change the character set for these filenames as well. However, all RTF documents must still declare a character set (that is, \ansi, \mac, \pc, or \pca) to maintain backwards compatibility with earlier RTF readers.

The table below describes valid values for \cpg.

Value

Description
437
United States IBM
708
Arabic (ASMO 708)
709
Arabic (ASMO 449+, BCON V4)
710
Arabic (transparent Arabic)
711
Arabic (Nafitha Enhanced)
720
Arabic (transparent ASMO)
819
Windows 3.1 (United States and Western Europe)
850
IBM multilingual
852
Eastern European
860
Portuguese
862
Hebrew
863
French Canadian
864
Arabic
865
Norwegian
866
Soviet Union
932
Japanese
1250
Windows 3.1 (Eastern European)
1251
Windows 3.1 (Cyrillic)

File Table

The \filetbl control word introduces the file table destination. This group defines the files referenced in the document and has the following syntax:

<filetbl>

'{\*' \filetbl ('{' <fileinfo> '}')+ '}'
<fileinfo>
\file <filenum><relpath>?<osnum>? <filesource>+ <filename>
<filenum>
\fid
<relpath>
\frelative
<osnum>
\fosnum
<filesource>
\fvalidmac | \fvaliddos | \fvalidntfs | \fvalidhpfs | \fnetwork
<filename>
#PCDATA
Note that the filename can be any valid alphanumeric string for the named file system, indicating the complete path and filename.

Control word

Definition
\filetbl
A list of documents referenced by the current document. The file table has a structure analogous to the style or font table. This is a destination control word output as part of the document header.
\file
Marks the beginning of a file group, which lists relevant information about the referenced file. This is a destination control word.
\fidN
File ID number. Files are referenced later in the document using this number.
\frelativeN
The character position within the path (starting at 0 [zero]) where the referenced file's path starts to be relative to the path of the owning document. For example, a document is saved to the path C:\PRIVATE\RESUME\FILE1.DOC and its file table contains the path C:\PRIVATE\RESUME\EDU\FILE2.DOC, then that entry in the file table will be \frelative18, to point at the character "e" in "edu". This allows preservation of relative paths.
\fosnumN
Currently only filled in for paths from the Macintosh file system. It is an operating-system-specific number for identifying the file, which may be used to speed up access to the file, or find it if the file has been moved to another folder or disk. The Macintosh operating system name for this number is the "file id." Additional meanings of the \fosnumN control word may be defined for other file systems in the future.
\fvalidmac
Macintosh file system.
\fvaliddos
MS-DOS file system.
\fvalidntfs
NTFS file system.
\fvalidhpfs
HPFS file system.
\fnetwork
Network file system. This control word may be used in conjunction with any of the previous file source control words.

Color Table

The \colortbl control word introduces the color table group, which defines screen colors, character colors, and other color information. This group has the following syntax:

<colortbl>

'{' \colortbl <colordef>+ '}'
<colordef>
\red ? & \green ? & \blue ? ';'
The following are valid control words for this group.

Control word

Meaning
\redN
Red index
\greenN
Green index
\blueN
Blue index
Each definition must be delimited by a semicolon, even if the definition is omitted. If a color definition is omitted, the RTF reader uses its default color. In the example below, three colors are defined. The first color is omitted, as shown by the semicolon following the \colortbl control word.
{\colortbl;\red0\green0\blue0;\red0\green0\blue255;}

The foreground and background colors use indexes into the color table to define a color. For more information on color setup, see your Windows documentation.

The following example defines a block of text in color (where supported). Note that the cf/cb index is the index of an entry in the color table, which represents a red/green/blue color combination.

{\f1\cb1\cf2 This is colored text. The background is color
1 and the foreground is color 2.}
If the file is translated for software that does not display color, the reader ignores the color-table group.

Style Sheet

The \stylesheet control word introduces the style sheet group, which contains definitions and descriptions of the various styles used in the document. All styles in the document's style sheet can be included, even if not all the styles are used. In RTF, a style is a form of shorthand used to specify a set of character, paragraph, or section formatting.

The style-sheet group has the following syntax:

<stylesheet>

'{' \stylesheet <style>+ '}'
<style>
'{' <styledef>?<keycode>? <formatting> <additive>? <based>? <next>? <stylename>? ';' '}'
<styledef>
\s | \cs | \ds
<keycode>
'{' \keycode <keys> '}'
<additive>
\additive
<based>
\sbasedon
<next>
\snext
<formatting>
(<brdrdef> | <parfmt> | <apoctl> | <tabdef> | <shading> | <chrfmt>)+
<stylename>
#PCDATA
<keys>
( \shift? & \ctrl? & \alt?) <key>
<key>
\fn | #PCDATA
For <style>, both <styledef> and <stylename> are optional; the default is paragraph style 0. Note for <stylename> that Microsoft Word for the Macintosh interprets commas in #PCDATA as separating style synonyms. Also, for <key>, the data must be exactly one character.

Control word

Meaning
\csN
Designates character style.
\sN
Designates paragraph style.
\dsN
Designates section style.
\additive
Used in a character style definition ('{\*'\cs...'}'). Indicates that character style attributes are to be added to the current paragraph style attributes, rather than setting the paragraph attributes to only those defined in the character style definition.
\sbasedonN
Defines the number of the style on which the current style is based (the default is 222--no style).
\snextN
Defines the next style associated with the current style; if omitted, the next style is the current style.
\keycode
This group is specified within the description of a style in the style sheet in the RTF header. The syntax for this group is '{\*'\keycode <keys>'}' where <keys> are the characters used in the key code. For example, a style, Normal, may be defined {\s0 {\*\keycode \shift\ctrl n}Normal;} within the RTF style sheet. See the Special Character control words for the characters outside the alphanumeric range that may be used.
\alt
The ALT modifier key. Used to describe shortcut-key codes for styles.
\shift
The SHIFT modifier key. Used to describe shortcut-key codes for styles.
\ctrl
The CTRL modifier key. Used to describe shortcut-key codes for styles.
\fnN
Specifies a function key where N is the function key number. Used to describe shortcut-key codes for styles.
The following is an example of an RTF style sheet

{\stylesheet{\fs20 \sbasedon222\snext0{\*\keycode \shift\ctrl n} 
Normal;}{\s1\qr \fs20 \sbasedon0\snext1 FLUSHRIGHT;}{\s2\fi-720\li720\fs20\ri2880\sbasedon0\snext2 IND;}}
and RTF paragraphs to which the styles are applied:
\widowctrl\ftnbj\ftnrestart \sectd \linex0\endnhere \pard\plain 
\fs20 This is Normal style.
\par \pard\plain \s1\qr\fs20
This is right justified. I call this style FLUSHRIGHT.
\par \pard\plain \s2\fi-720\li720\fs20\ri2880
This is an indented paragraph. I call this style IND. It produces
a hanging indent.
\par}
Some of the control words in this example are discussed in later sections. In the example, note that the properties of the style were emitted following the application of the style. This was done for two reasons: 1) to allow RTF readers that don't support styles to still retain all formatting, and 2) to allow the additive model for styles, where additional property changes are "added" on top of the defined style. Some RTF readers may not "apply" a style upon only encountering the style number without the accompanying formatting information because of this.

Revision Marks

This table allows tracking of multiple authors and reviewers of a document, and is used in conjunction with the character properties for revision marks.

Control word

Definition
\revtbl
This group consists of subgroups that each identify the author of a revision in the document, as in {Author1;}. This is a destination control word.

Revision conflicts, such as one author deleting another's additions, are stored as one group, in the following form:

CurrentAuthor\'00\'<length of previous author's name>PreviousAuthor\'00
PreviousRevisionTime

The 4 bytes of the Date/Time (DTTM) structure are emitted as ASCII characters, so values greater than 127 should be emitted as quoted hexadecimal values.

All time references for revision marks use the following bit field structure, DTTM.

Bit numbers

Information
Range
0-5
Minute
0-59
6-10
Hour
0-23
11-15
Day of month
1-31
16-19
Month
1-12
20-28
Year
= Year - 1900
29-31
Day of week
0 (Sun)-6 (Sat)

Document Area

Once the RTF header is defined, the RTF reader has enough information to correctly read the actual document text. The document area has the following syntax.

<document>

<info>? <docfmt>* <section>+

Information Group

The \info control word introduces the information group, which contains information about the document. This can include the title, author, keywords, comments, and other information specific to the file. This information is for use by a document-management utility, if available.

This group has the following syntax.

<info>

'{' <title>? & <subject>? & <author>? & <manager>? & <company>? <operator>? & <category>? & <keywords>? & <comment>? & \version? & <doccomm>? & \vern? & <creatim>? & <revtim>? & <printim>? & <buptim>? & \edmins? & \nofpages? & \nofwords? \nofchars? & \id? '}'
<title>
'{' \title #PCDATA '}'
<subject>
'{' \subject #PCDATA '}'
<author>
'{' \author #PCDATA '}'
<manager>
{' \manager #PCDATA '}'
<company>
{' \company #PCDATA '}'
<operator>
'{' \operator #PCDATA '}'
<category>
{' \category #PCDATA '}'
<keywords>
'{' \keywords #PCDATA '}'
<comment>
'{' \comment #PCDATA '}'
<doccomm>
'{' \doccomm #PCDATA '}'
<creatim>
'{' \creatim <time> '}'
<revtim>
'{' \revtim <time> '}'
<printim>
'{' \printim <time> '}'
<buptim>
'{' \buptim <time> '}'
<time>
\yr? \mo? \dy? \hr? \min? \sec?
Some applications, such as Word, ask the user to type this information when saving the document in its native format. If the document is then saved as an RTF file or translated into RTF, the RTF writer specifies this information using the following control words. These control words are destinations and both the control words and the text should be enclosed in braces ({ }).

Control word

Meaning
\title
Title of the document. This is a destination control word.
\subject
Subject of the document. This is a destination control word.
\author
Author of the document. This is a destination control word.
\manager
Manager of the author. This is a destination control word.
\company
Company of the author. This is a destination control word
\operator
Person who last made changes to the document. This is a destination control word.
\category
Category of the document. This is a destination control word.
\keywords
Selected keywords for the document. This is a destination control word.
\comment
Comments; text is ignored. This is a destination control word.
\versionN
Version number of the document.
\doccomm
Comments displayed in Word's Edit Summary Info dialog box. This is a destination control word.
The \userprops control word introduces the user-defined document properties. Unique \propname control words define each user-defined property in the document. The group has the following syntax.

\userprops

`{\*' \userprops (`{' <propinfo> `}'*) `}'
<propinfo>
<propname><proptype><staticval><linkval>?
<propname>
`{' \propname #PCDATA `}'
<proptype>
\proptype
<staticval>
\staticval
<linkval>
\linkval
Control Word
Definition
\propname
The name of the user-defined property.
\staticval
The value of the property.
\linkval
The name of a bookmark that contains the text to display as the value of the property.
\proptype
\proptypeN Specifies the type of the property.
For \proptype,, the N argument can have the following values.

Value

Description
3
Integer
5
Real number
7
Date
11
Boolean
30
Text
The RTF writer may automatically enter other control words, including the following.

Control word

Meaning
\vernN
Internal version number
\creatim
Creation time
\revtim
Revision time
\printim
Last print time
\buptim
Backup time
\edminsN
Total editing time (in minutes)
\yrN
Year
\moN
Month
\dyN
Day
\hrN
Hour
\minN
Minute
\secN
Seconds
\nofpagesN
Number of pages
\nofwordsN
Number of words
\nofcharsN
Number of characters
\idN
Internal ID number
Any control word described in the previous table that does not have a numeric parameter specifies a date; all dates are specified with the \yr \mo \dy \hr \min \sec controls.

An example of an information group follows:

{\info{\title The Panda's Thumb}{\author Stephen J Gould}{\keywords 
science natural history }}

Document Formatting Properties

After the information group (if any), there may be some document formatting control words (described as <docfmt> in the document area syntax description). These control words specify the attributes of the document, such as margins and footnote placement. These attributes must precede the first plain-text character in the document.

The control words that specify document formatting are listed in the following table (measurements are in twips; a twip is one-twentieth of a point). For omitted control words, RTF uses the default values.

Control word

Meaning
\deftabN
Default tab width in twips (the default is 720).
\hyphhotzN
Hyphenation hot zone in twips (the amount of space at the right margin in which words are hyphenated).
\hyphconsecN
N is the maximum number of consecutive lines that will be allowed to end in a hyphen. 0 means no limit.
\hyphcaps
Toggles hyphenation of capitalized words (the default is on). Append 1 or leave control word by itself to toggle property on; append 0 (zero) to turn it off.
\hyphauto
Toggles automatic hyphenation (the default is off). Append 1 or leave control word by itself to toggle property on; append 0 (zero) to turn it off.
\linestartN
Beginning line number (the default is 1).
\fracwidth
Uses fractional character widths when printing (QuickDrawô only).
\*\nextfile
Destination; the argument is the name of the file to print or index next; it must be enclosed in braces. This is a destination control word.
\*\template
Destination; the argument is the name of a related template file; it must be enclosed in braces. This is a destination control word.
\makebackup
Backup copy is made automatically when the document is saved.
\defformat
Tells the RTF reader that the document should be saved in RTF format.
\psover
Prints PostScriptÆ over the text.
\doctemp
Document is a boilerplate document. For Word for Windows, this is a template; for Word for the Macintosh, this is a stationery file.
\deflangN
Defines the default language used in the document used with a \plain control word. See the section "Character Formatting Properties" on page 34 of this Application Note for a list of possible values for N.

Footnotes and Endnotes


\fetN
Footnote/endnote type. This indicates what type of notes are present in the document.

0 Footnotes only or nothing at all (the default).

1 Endnotes only.

2 Footnotes and endnotes both.

For backward compatibility, if \fet1 is emitted, \endnotes or \enddoc will be emitted along with \aendnotes or \aenddoc. RTF readers that understand \fet will need to ignore the footnote-positioning control words, and use the endnote control words instead.

\ftnsep
Text argument separates footnotes from the document. This is a destination control word.
\ftnsepc
Text argument separates continued footnotes from the document. This is a destination control word.
\ftncn
Text argument is a notice for continued footnotes. This is a destination control word.
\aftnsep
Text argument separates endnotes from the document. This is a destination control word.
\aftnsepc
Text argument separates continued endnotes from the document. This is a destination control word.
\aftncn
Text argument is a notice for continued endnotes. This is a destination control word.
\endnotes
Footnotes at the end of the section (the default).
\enddoc
Footnotes at the end of the document.
\ftntj
Footnotes beneath text (top justified).
\ftnbj
Footnotes at the bottom of the page (bottom justified).
\aendnotes
Endnotes at end of section (the default).
\aenddoc
Endnotes at end of document.
\aftnbj
Endnotes at bottom of page (bottom justified).
\aftntj
Endnotes beneath text (top justified).
\ftnstartN
Beginning footnote number (the default is 1).
\aftnstartN
Beginning endnote number (the default is 1).
\ftnrstpg
Restart footnote numbering each page.
\ftnrestart
Footnote numbers restart at each section. Microsoft Word for the Macintosh uses this control to restart footnote numbering at each page.
\ftnrstcont
Continuous footnote numbering (the default).
\aftnrestart
Restart endnote numbering each section.
\aftnrstcont
Continuous endnote numbering (the default).
\ftnnar
Footnote numbering--Arabic numbering (1, 2, 3, ...)
\ftnnalc
Footnote numbering--Alphabetic lowercase (a, b, c, ...)
\ftnnauc
Footnote numbering--Alphabetic uppercase (A, B, C, ...)
\ftnnrlc
Footnote numbering--Roman lowercase (i, ii, iii, ...)
\ftnnruc
Footnote numbering--Roman uppercase (I, II, III, ...)
\ftnnchi
Footnote numbering--Chicago Manual of Style (*, Ü, á, ß)
\aftnnar
Endnote numbering--Arabic numbering (1, 2, 3, ...)
\aftnnalc
Endnote numbering--Alphabetic lowercase (a, b, c, ...)
\aftnnauc
Endnote numbering--Alphabetic uppercase (A, B, C, ...)
\aftnnrlc
Endnote numbering--Roman lowercase (i, ii, iii, ...)
\aftnnruc
Endnote numbering--Roman uppercase (I, II, III, ...)
\aftnnchi
Endnote numbering--Chicago Manual of Style (*, Ü, á, ß)

Page Information


\paperwN
Paper width in twips (the default is 12,240).
\paperhN
Paper height in twips (the default is 15,840).
\pszN
Used to differentiate between paper sizes with identical dimensions under Windows NTô. Values 1-41 correspond to paper sizes defined in DRIVINI.H in the Windows 3.1 SDK (DMPAPER_ values). Values greater than or equal to 42 correspond to user-defined forms under Windows NT.
\marglN
Left margin in twips (the default is 1800).
\margrN
Right margin in twips (the default is 1800).
\margtN
Top margin in twips (the default is 1440).
\margbN
Bottom margin in twips (the default is 1440).
\facingp
Facing pages (activates odd/even headers and gutters).
\gutterN
Gutter width in twips (the default is 0).
\margmirror
Switches margin definitions on left and right pages. Used in conjunction with \facingp.
\landscape
Landscape format.
\pgnstartN
Beginning page number (the default is 1).
\widowctrl
Enable widow and orphan control.

Linked Styles


\linkstyles
Update document styles automatically based on template.

Compatibility Options


\notabind
Don't add automatic tab stop for hanging indent.
\wraptrsp
Wrap trailing spaces onto the next line.
\prcolbl
Print all colors as black.
\noextrasprl
Don't add extra space to line height for showing raised/lowered characters.
\nocolbal
Don't balance columns.
\cvmme
Treat old-style escaped quotation marks (\") as current style ("") in mail merge data documents.
\sprstsp
Suppress extra line spacing at top of page. Basically, this means to ignore any line spacing larger than Auto at the top of a page.
\sprsspbf
Suppress space before paragraph property after hard page or column break.
\otblrul
Combine table borders as done in Word 5.x for the Macintosh. Contradictory table border information is resolved in favor of the first cell.
\transmf
Metafiles are considered transparent; don't blank the area behind metafiles.
\ swpbdr
If a paragraph has a left border (not a box) and the Different Odd And Even or Mirror Margins check box is selected, Word will print the border on the right for odd-numbered pages.
\brkfrm
Show hard (manual) page breaks and column breaks in frames.
\sprslnsp
Suppress extra line spacing like WordPerfect version 5.x.
\subfontby
size

Substitute fonts based on size first.
\truncatefont
height

Round down to the nearest font size instead of rounding up.

Forms


\formprot
This document is protected for forms.
\allprot
This document has no unprotected areas.
\formshade
This document has form field shading on.
\formdisp
This document currently has a forms drop down or check box selected.
\printdata
This document has print form data only on.

Revision Marks


\revprot
This document is protected for revisions. The user can edit the document, but revision marking cannot be disabled.
\revisions
Turns on revision marking.
\revpropN
Argument indicates how revised text will be displayed: 0 for no properties shown; 1 for bold; 2 for italic; 3 for underline (the default); 4 for double underline.
\revbarN
Vertical lines mark altered text, based on the argument: 0 for no marking; 1 for left margin; 2 for right margin; 3 for outside (the default: left on left pages, right on right pages).

Annotations


\annotprot
This document is protected for annotations. The user cannot edit the document but can insert annotations.

Bidirectional Controls


\rtldoc
This document will be formatted to have Arabic-style pagination.
\ltrdoc
This document will have English-style pagination (the default).

Note that the three document-protection control words (\formprot, \revprot, and \annotprot) are mutually exclusive; only one of the three can apply to any given document. Also, there is currently no method for storing passwords in RTF, so any document that associates a password with a protection level will lose the password protection in RTF.

For more information about bidirectional controls, see "Bidirectional Language Support" on page 55 of this Application Note.

Section Text

Each section in the RTF file has the following syntax:

<section>

<secfmt>* <hdrftr>? <para>+ ( \sect <section>)?

Section Formatting Properties

At the beginning of each section, there may be some section-formatting control words (described as <secfmt> in the section text syntax description). These control words specify section-formatting properties, which apply to the text following the control word, with the exception of the section-break control words (those beginning with \sbk). Section-break control words describe the break preceding the text. These control words can appear anywhere in the section, not just at the start.

Note that if the \sectd control word is not present, the current section inherits all section properties defined in the previous section.

The section-formatting control words are listed in the following table.

Control word

Meaning
\sect
New section.
\sectd
Reset to default section properties.
\endnhere
Endnotes included in the section.
\binfsxnN
N is the printer bin used for the first page of the section. If this control is not defined then the first page uses the same printer bin as defined by the \binsxnN control.
\binsxnN
N is the printer bin used for the pages of the section.
\dsN
Designates section style; if a section style is specified, style properties must be specified with the section.
\pnseclvlN
Used for multilevel lists. This property sets the default numbering style for each corresponding \pnlvlN control word (bullets and numbering property for paragraphs) within that section. This is a destination control word.
\sectunlocked
This section is unlocked for forms.

Section Break


\sbknone
No section break.
\sbkcol
Section break starts a new column.
\sbkpage
Section break starts a new page (the default).
\sbkeven
Section break starts at an even page.
\sbkodd
Section break starts at an odd page.

Columns


\colsN
Number of columns for "snaking" (the default is 1).
\colsxN
Space between columns in twips (the default is 720).
\colnoN
Column number to be formatted; used to specify formatting for variable-width columns.
\colsrN
Space to right of column in twips; used to specify formatting for variable-width columns.
\colwN
Width of column in twips; used to override the default constant width setting for variable-width columns.
\linebetcol
Line between columns.

Line Numbering


\linemodN
Line-number modulus amount to increase each line number (the default is 1).
\linexN
Distance from the line number to the left text margin in twips (the default is 360). The automatic distance is 0.
\linestartsN
Beginning line number (the default is 1).
\linerestart
Line numbers restart at \linestarts value.
\lineppage
Line numbers restart on each page.
\linecont
Line numbers continue from the preceding section.

Page Information


\pgwsxnN
N is the page width in twips. A \sectd resets the value to that specified by \paperwN in the document properties.
\pghsxnN
N is the page height in twips. A \sectd resets the value to that specified by \paperhN in the document properties.
\marglsxnN
N is the left margin of the page in twips. A \sectd resets the value to that specified by \marglN in the document properties.
\margrsxnN
N is the right margin of the page in twips. A \sectd resets the value to that specified by \margrN in the document properties.
\margtsxnN
N is the top margin of the page in twips. A \sectd resets the value to that specified by \margtN in the document properties.
\margbsxnN
N is the bottom margin of the page in twips. A \sectd resets the value to that specified by \margbN in the document properties.
\guttersxnN
N is the width of the gutter margin for the section in twips. A \sectd resets the value to that specified by \gutterN from the document properties. If Facing Pages is turned off, the gutter will be added to the left margin of all pages. If Facing Pages is turned on, the gutter will be added to the left side of odd-numbered pages and the right side of even-numbered pages.
\lndscpsxn
Page orientation is in landscape format. To mix portrait and landscape sections within a document, the \landscape control should not be used so that the default for a section is portrait, which may be overridden by the \lndscpsxn control.
\titlepg
First page has a special format.
\headeryN
Header is N twips from the top of the page (the default is 720).
\footeryN
Footer is N twips from the bottom of the page (the default is 720).

Page Numbers


\pgnstartsN
Beginning page number (the default is 1).
\pgncont
Continuous page numbering (the default).
\pgnrestart
Page numbers restart at \pgnstarts value.
\pgnxN
Page number is N twips from the right margin (the default is 720). This control word is understood but not used by current versions (6.0 or later) of Word.
\pgnyN
Page number is N twips from the top margin (the default is 720). This control word is understood but not used by current versions (6.0 or later) of Word.
\pgndec
Page-number format is decimal.
\pgnucrm
Page-number format is uppercase roman numeral.
\pgnlcrm
Page-number format is lowercase roman numeral.
\pgnucltr
Page-number format is uppercase letter.
\pgnlcltr
Page-number format is lowercase letter.
\pgnhnN
Indicates which heading level is used to prefix a heading number to the page number. This control word can only be used in conjunction with numbered heading styles. 0 specifies to not show heading level (the default). Values 1-9 correspond to heading levels 1 through 9.
\pgnhnsh
Hyphen separator character. This separator and the successive ones appear between the heading level number and the page number.
\pgnhnsp
Period separator character.
\pgnhnsc
Colon separator character.
\pgnhnsm
Em-dash (--) separator character.
\pgnhnsn
En-dash (-) separator character.

Vertical Alignment


\vertalt
Text is top-aligned (the default).
\vertalb
Text is bottom-aligned.
\vertalc
Text is centered vertically.
\vertalj
Text is justified vertically.

Bidirectional Controls


\rtlsect
This section will snake (newspaper style) columns from right to left.
\ltrsect
This section will snake (newspaper style) columns from left to right (the default).

Headers and Footers

Headers and footers are RTF destinations. Each section in the document can have its own set of headers and footers. If no headers or footers are defined for a given section, the headers and footers from the previous section (if any) are used. Headers and footers have the following syntax:

<hdrftr>

'{' <hdrctl> <para>+ '}' <hdrftr>?
<hdrctl>
\header | \footer | \headerl | \headerr | \headerf | \footerl | \footerr | \footerf
Note that each separate <hdrftr> group must have a distinct <hdrctl> introducing it.

Control word

Meaning
\header
Header on all pages. This is a destination control word.
\footer
Footer on all pages. This is a destination control word.
\headerl
Header on left pages only. This is a destination control word.
\headerr
Header on right pages only. This is a destination control word.
\headerf
Header on first page only. This is a destination control word.
\footerl
Footer on left pages only. This is a destination control word.
\footerr
Footer on right pages only. This is a destination control word.
\footerf
Footer on first page only. This is a destination control word.
The \headerl, \headerr, \footerl, and \footerr control words are used in conjunction with the \facingp control word, and the \headerf and \footerf control words are used in conjunction with the \titlepg control word. Many RTF readers will not function correctly if the appropriate document properties are not set. In particular, if \facingp is not set, then only \header and \footer should be used; if \facingp is set, then only \headerl, \headerr, \footerl, and \footerr should be used. Combining both \facingp and \titlepg is allowed. You should not use \header to set the headers for both pages when \facingp is set. You can use \headerf if \titlepg is not set, but no header will appear. For more information, see "Document Formatting Properties" on page 16 and "Section Formatting Properties" on page 20 of this Application Note.

If the previous section had a first page header or footer and had \titlepg set, and the current section does not, then the previous section's first page header or footer is disabled. However, it is not destroyed; if subsequent sections have \titlepg set, then the first page header or footer is restored.

Paragraph Text

There are two kinds of paragraphs: plain and table. A table is a collection of paragraphs, and a table row is a continuous sequence of paragraphs partitioned into cells. The \intbl paragraph-formatting control word identifies the paragraph as part of a table. For more information, see "Table Definitions" on page 31 of this Application Note. This control is inherited between paragraphs that do not have paragraph properties reset with \pard.

<para>

<textpar> | <row>
<textpar>
<pn>? <brdrdef>? <parfmt>* <apoctl>* <tabdef>? <shading>? (\subdocument | <char>+) ( \par <para>)?
<row>
<tbldef> <cell>+ \row
<cell>
<textpar>+ \cell

Paragraph Formatting Properties

These control words (described as <parfmt> in the paragraph-text syntax description) specify generic paragraph formatting properties. These control words can appear anywhere in the body of the paragraph, not just at the beginning.

Note that if the \pard control word is not present, the current paragraph inherits all paragraph properties defined in the previous paragraph.

The paragraph-formatting control words are listed in the following table.

Control word

Meaning
\par
New paragraph.
\pard
Resets to default paragraph properties.
\sN
Designates paragraph style; if a paragraph style is specified, style properties must be specified with the paragraph. N references an entry in the stylesheet.
\hyphpar
Toggles automatic hyphenation for the paragraph. Append 1 or nothing to toggle property on; append 0 (zero) to turn it off.
\intbl
Paragraph is part of a table.
\keep
Keep paragraph intact.
\nowidctlpar
No widow/orphan control. This is a paragraph-level property and is used to override the document-level \widowctrl.
\widctlpar
Widow/orphan control is used for the current paragraph. This is a paragraph property used to override the absence of the document-level \widowctrl
\keepn
Keep paragraph with the next paragraph.
\levelN
N is the outline level of the paragraph.
\noline
No line numbering.
\pagebb
Break page before the paragraph.
\sbys
Side-by-side paragraphs.

Alignment


\ql
Left-aligned (the default).
\qr
Right-aligned.
\qj
Justified.
\qc
Centered.

Indentation


\fiN
First-line indent (the default is 0).
\liN
Left indent (the default is 0).
\riN
Right indent (the default is 0).

Spacing


\sbN
Space before (the default is 0).
\saN
Space after (the default is 0).
\slN
Space between lines: if this control word is missing or if \sl1000 is used, the line spacing is automatically determined by the tallest character in the line; if N is a positive value, this size is used only if it is taller than the tallest character (otherwise the tallest character is used); if N is a negative value, the absolute value of N is used, even if it is shorter than the tallest character.
\slmultN
Line spacing multiple; indicates that the current line spacing is a multiple of "Single" line spacing. This control word can follow only the \sl control word and works in conjunction with it.

0 "At Least" or "Exactly" line spacing.

1 Multiple line spacing, relative to "Single."

Subdocuments


\subdocumentN
This indicates that a subdocument in a master document/subdocument relationship should occur here. N represents an index into the file table. This control word must be the only item in a paragraph.

Bidirectional Controls


\rtlpar
Text in this paragraph will be displayed with right-to-left precedence.
\ltrpar
Text in this paragraph will be displayed with left-to-right precedence (the default).

Tabs

Any paragraph may have its own set of tabs. Tabs must follow this syntax:

<tabdef>

(<tab> | <bartab>) +
<tab>
<tabkind>? <tablead>? \tx
<bartab>
<tablead>? \tb
<tabkind>
\tqr | \tqc | \tqdec
<tablead>
\tldot | \tlhyph | \tlul | \tlth | \tleq

Control word

Meaning
\txN
Tab position in twips from the left margin.
\tqr
Flush-right tab.
\tqc
Centered tab.
\tqdec
Decimal tab.
\tbN
Bar tab position in twips from the left margin.
\tldot
Leader dots.
\tlhyph
Leader hyphens.
\tlul
Leader underline.
\tlth
Leader thick line.
\tleq
Leader equal sign.

Bullets and Numbering

To provide compatibility with existing RTF readers, all applications that can automatically bullet or number paragraphs will also emit the generated text as plain text in the \pntext group. This will allow existing RTF readers to capture the plain text and safely ignore the autonumber instructions. This group precedes all bulleted or numbered paragraphs, and will contain all the text and formatting that would be auto-generated. It should precede the '{'\*\pn ... '}' destination, and it is the responsibility of RTF readers that understand the '{'\*\pn ... '}' destination to ignore the \pntext group.

<pn>

<pnseclvl> | <pnpara>
<pnseclvl>
'{\*' \pnseclvl <pndesc>'}'
<pnpara>
<pntext> <pnprops>
<pntext>
'{' \pntext <char> '}'
<pnprops>
'{\*' \pn <pnlevel> <pndesc>'}'
<pnlevel>
\pnlvl | \pnlvlblt | \pnlvlbody | \pnlvlcont
<pndesc>
<pnnstyle> & <pnchrfmt> & <pntxtb> & <pntxta> & <pnfmt>
<pnnstyle>
\pncard | \pndec | \pnucltr | \pnucrm | \pnlcltr | \pnlcrm | \pnord | \pnordt
<pnchrfmt>
\pnf? & \pnfs? & \pnb? & \pni? & \pncaps? & \pnscaps? & <pnul>? & \pnstrike? & \pncf?
<pnul>
\pnul | \pnuld | \pnuldb | \pnulnone | \pnulw
<pnfmt>
\pnnumonce? & \pnacross? & \pnindent? & \pnsp? & \pnprev? & <pnjust>? & \pnstart? & \pnhang? & \pnrestart?
<pnjust>
\pnqc | \pnql | \pnqr
<pntxtb>
'{' \pntxtb #PCDATA'}'
<pntxta>
'{' \pntxta #PCDATA'}'
Settings below marked with an asterisk can be turned off by appending 0 (zero) to the control word.

Control word

Definition
\pntext
This group precedes all numbered/bulleted paragraphs, and contains all auto-generated text and formatting. It should precede the '{\*'\pn ... '}' destination, and it is the responsibility of RTF readers that understand the '{\*'\pn ... '}' destination to ignore this preceding group. This is a destination control word.
\pn
Turns on paragraph numbering. This is a destination control word.
\pnlvlN
Paragraph level, where N is a level from 1 to 9. Default set by \pnseclvlN section formatting property.
\pnlvlblt
Bulleted paragraph (corresponds to level 11). The actual character used for the bullet is stored in the \pntxtb group.
\pnlvlbody
Simple paragraph numbering (corresponds to level 10).
\pnlvlcont
Continue numbering but do not display number ("skip numbering").
\pnnumonce
Number each cell only once in a table (the default is to number each paragraph in a table).
\pnacross
Number across rows (the default is to number down columns).
\pnhang
Paragraph uses a hanging indent.
\pnrestart
Restart numbering after each section break. Note that this control word is used only in conjunction with the Heading Numbering feature (applying multilevel numbering to Heading style definitions).
\pncard
Cardinal numbering (One, Two, Three).
\pndec
Decimal numbering (1, 2, 3).
\pnucltr
Uppercase alphabetic numbering (A, B, C).
\pnucrm
Uppercase roman numbering (I, II, III).
\pnlcltr
Lowercase alphabetic numbering (a, b, c).
\pnlcrm
Lowercase roman numbering. (i, ii, iii).
\pnord
Ordinal numbering (1st, 2nd, 3rd).
\pnordt
Ordinal text numbering (First, Second, Third).
\pnb
Bold numbering.*
\pni
Italic numbering.*
\pncaps
All Caps numbering.*
\pnscaps
Small Caps numbering.*
\pnul
Continuous underline.*
\pnuld
Dotted underline.
\pnuldb
Double underline.
\pnulnone
Turns off underlining.
\pnulw
Word underline.
\pnstrike
Strikethrough numbering.*
\pncfN
Foreground color--index into color table (the default is 0).
\pnfN
Font number.
\pnfsN
Font size (in half-points).
\pnindentN
Minimum distance from margin to body text.
\pnspN
Distance from number text to body text.
\pnprev
Used for multilevel lists. Include information from previous level in this level; for example, 1, 1.1, 1.1.1, 1.1.1.1
\pnqc
Centered numbering.
\pnql
Left-justified numbering.
\pnqr
Right-justified numbering.
\pnstartN
Start At number.
\pntxta
Text after. This group contains the text that succeeds the number. This is a destination control word.
\pntxtb
Text before. This group contains the text that precedes the number. This is a destination control word.
Note that there is a limit of 32 characters total for the sum of text before and text after for simple numbering. Multilevel numbering has a limit of 64 characters total for the sum of all levels.

Paragraph Borders

Paragraph borders have the following syntax:

<brdrdef>

(<brdrseg> <brdr> )+
<brdrseg>
\brdrt | \brdrb | \brdrl | \brdrr | \brdrbtw | \brdrbar | \box
<brdr>
<brdrk> \brdrw? \brsp? \brdrcf?
<brdrk>
\brdrs | \brdrth | \brdrsh | \brdrdb | \brdrdot | \brdrdash | \brdrhair

Control word

Meaning
\brdrt
Border top.
\brdrb
Border bottom.
\brdrl
Border left.
\brdrr
Border right.
\brdrbtw
Consecutive paragraphs with identical border formatting are considered part of a single group with the border information applying to the entire group. To have borders around individual paragraphs within the group, the \brdrbtw control must be specified for that paragraph.
\brdrbar
Border outside (right side of odd-numbered pages, left side of even-numbered pages).
\box
Border around the paragraph (box paragraph).
\brdrs
Single-thickness border.
\brdrth
Double-thickness border.
\brdrsh
Shadowed border.
\brdrdb
Double border.
\brdrdot
Dotted border.
\brdrdash
Dashed border.
\brdrhair
Hairline border.
\brdrwN
N is the width in twips of the pen used to draw the paragraph border line. N cannot be greater than 75. To obtain a larger border width, the \brdth control word can be used to obtain a width double that of N.
\brdrcfN
N is the color of the paragraph border; specified as an index into the color table in the RTF header.
\brspN
Space in twips between borders and the paragraph.

Paragraph Shading

Paragraph shading has the following syntax:

<shading>

( \shading | <pat>) \cfpat? \cbpat?
<pat>
\bghoriz | \bgvert | \bgfdiag | \bgbdiag | \bgcross | \bgdcross | \bgdkhoriz | \bgdkvert | \bgdkfdiag | \bgdkbdiag | \bgdkcross | \bgdkdcross

Control word

Meaning
\shadingN
N is the shading of the paragraph in hundredths of a percent.
\bghoriz
Specifies a horizontal background pattern for the paragraph.
\bgvert
Specifies a vertical background pattern for the paragraph.
\bgfdiag
Specifies a forward diagonal background pattern for the paragraph ( \\\\).
\bgbdiag
Specifies a backward diagonal background pattern for the paragraph (//// ).
\bgcross
Specifies a cross background pattern for the paragraph.
\bgdcross
Specifies a diagonal cross background pattern for the paragraph.
\bgdkhoriz
Specifies a dark horizontal background pattern for the paragraph.
\bgdkvert
Specifies a dark vertical background pattern for the paragraph.
\bgdkfdiag
Specifies a dark forward diagonal background pattern for the paragraph ( \\\\).
\bgdkbdiag
Specifies a dark backward diagonal background pattern for the paragraph (//// ).
\bgdkcross
Specifies a dark cross background pattern for the paragraph.
\bgdkdcross
Specifies a dark diagonal cross background pattern for the paragraph.
\cfpatN
N is the line color of the background pattern, specified as an index into the document's color table.
\cbpatN
N is the background color of the background pattern, specified as an index into the document's color table.

Positioned Objects and Frames

The following paragraph-formatting control words specify the location of a paragraph on the page. Consecutive paragraphs with the same frame formatting are considered to be part of the same frame. For two framed paragraphs to appear at the same position on a page, they must be separated by a paragraph with different or no frame information.

Note that if any paragraph in a table row has any of these control words specified, then all paragraphs in the table row must have the same control words specified, either by inheriting the properties from the previous paragraph or by respecifying the controls.

Paragraph positioning has the following syntax:

<apoctl>

<framesize> & <horzpos> & <vertpos> & <txtwrap> & <dropcap>
<framesize>
\absw? & \absh?
<horzpos>
<hframe> & <hdist>
<vertpos>
<vframe> & <vdist>
<txtwrap>
\nowrap? & \dxfrtext? & \dfrmtxtx? &\dfrmtxty?
<dropcap>
\dropcapli? & \dropcapt?
<hframe>
\phmrg? | \phpg? | \phcol?
<hdist>
\posx? | \posnegx? | \posxc? | \posxi? | \posxo? | \posxl? | \posxr?
<vframe>
\pvmrg? | \pvpg? | \pvpara?
<vdist>
\posy? | \posnegy? | \posyt? | \posyil? | \posyb? | \posyc? & \abslock
Control word
Meaning
\abswN
N is the width of the frame in twips.
\abshN
N is the height of the frame in twips. A positive number indicates the minimum height of the frame and a negative number indicates the exact height of the frame. A value of zero indicates that the height of the frame adjusts to the contents of the frame. This is the default for frames where no height is given.

Horizontal Position


\phmrg
Use the margin as the horizontal reference frame.
\phpg
Use the page as the horizontal reference frame.
\phcol
Use the column as the horizontal reference frame. This is the default if no horizontal reference frame is given.
\posxN
Positions the frame N twips from the left edge of the reference frame.
\posnegxN
Same as \posx but allows arbitrary negative values.
\posxc
Centers the frame horizontally within the reference frame.
\posxi
Positions the paragraph horizontally inside the reference frame.
\posxo
Positions the paragraph horizontally outside the reference frame.
\posxr
Positions the paragraph to the right within the reference frame.
\posxl
Positions the paragraph to the left within the reference frame. This is the default if no horizontal positioning information is given.

Vertical Position


\pvmrg
Positions the reference frame vertically relative to the margin. This is the default if no vertical frame positioning information is given.
\pvpg
Positions the reference frame vertically relative to the page.
\pvpara
Positions the reference frame vertically relative to the top of the top left corner of the next unframed paragraph in the RTF stream.
\posyN
Positions the paragraph N twips from the top edge of the reference frame.
\posnegyN
Same as \posy but allows arbitrary negative values.
\posyil
Positions the paragraph vertically to be in-line.
\posyt
Positions the paragraph at the top of the reference frame.
\posyc
Centers the paragraph vertically within the reference frame.
\posyb
Positions the paragraph at the bottom of the reference frame.
\abslock
Locks a frame anchor to the current paragraph that it is associated with.

Text Wrapping


\nowrap
Prevents text from flowing around the positioned object.
\dxfrtextN
Distance in twips of a positioned paragraph from text in the main text flow in all directions.
\dfrmtxtxN
N is the horizontal distance in twips from text on both sides of the frame.
\dfrmtxtyN
N is the vertical distance in twips from text on both sides of the frame.

Drop Caps


\dropcapliN
Number of lines drop cap is to occupy. The range is 1 through 10.
\dropcaptN
Type of drop cap:

1 In-text drop cap

2 Margin drop cap

The following is an example of absolute-positioned text in a document:

\par \pard \pvpg\phpg\posxc\posyt\absw5040\dxfrtest173 First APO para
\par \pard \phmrg\posxo\posyc\dxfrtext1152 Second APO para

Table Definitions

There is no RTF table group; instead, tables are specified as paragraph properties. A table is represented as a sequence of table rows. A table row is a continuous sequence of paragraphs partitioned into cells. The table row begins with the \trowd control word and ends with the \row control word. Every paragraph that is contained in a table row must have the \intbl control word specified or inherited from the previous paragraph. A cell may have more than one paragraph in it; the cell is terminated by a cell mark (the \cell control word), and the row is terminated by a row mark (the \row control word). Table rows can also be positioned. In this case, every paragraph in a table row must have the same positioning controls (see the <apoctl> controls on page 29 of this Application Note). Table properties may be inherited from the previous row; therefore, a series of table rows may be introduced by a single <tbldef>.

An RTF table row has the following syntax, as shown in the general paragraph-text syntax shown on page 23 of this Application Note.

<row>

<tbldef> <cell>+ \row
<cell>
<textpar>+ \cell
A table definition has the following syntax:

<tbldef>

\trowd \trgaph <rowjust>? & <rowwrite>? <rowtop>? & <rowbot>? & <rowleft>? & <rowright>? & <rowhor>? & <rowvert>? & \trleft? & \trrh? \trhdr? & \trkeep? <celldef>+
<rowjust>
\trql | \trqr | \trqc
<rowwrite>
\ltrrow | \rtlrow
<rowtop>
\trbrdrt <brdr>
<rowbot>
\trbrdrl <brdr>
<rowleft>
\trbrdrb <brdr>
<rowright>
\trbrdrr <brdr>
<rowhor>
\trbrdrh <brdr>
<rowvert>
\trbrdrv <brdr>
<celldef>
( \clmgf? & \clmrg? <celltop>? & <cellleft>? & <cellbot>? & <cellright>? & <cellshad>?) \cellx
<celltop>
\clbrdrt <brdr>
<cellleft>
\clbrdrl <brdr>
<cellbot>
\clbrdrb <brdr>
<cellright>
\clbrdrr <brdr>
<cellshad>
<cellpat>? \clcfpat? & \clcbpat? & \clshdng
<cellpat>
\clbghoriz | \clbgvert | \clbgfdiag | \clbgbdiag | \clbgcross | \clbgdcross | \clbgdkhor | \clbgdkvert | \clbgdkfdiag | \clbgdkbdiag | \clbgdkcross | \clbgdkdcross
Note for <tbldef> that the number of \cellxs must match the number of \cells in the \row.

The following control words further define options for each row of the table.

Control word

Meaning
\trowd
Sets table row defaults.
\trgaphN
Half the space between the cells of a table row in twips.
\cellxN
Defines the right boundary of a table cell, including its half of the space between cells.
\clmgf
The first cell in a range of table cells to be merged.
\clmrg
Contents of the table cell are merged with those of the preceding cell.

Row Formatting


\trql
Left-justifies a table row with respect to its containing column.
\trqr
Right-justifies a table row with respect to its containing column.
\trqc
Centers a table row with respect to its containing column.
\trleftN
Position of the leftmost edge of the table with respect to the left edge of its column.
\trrhN
Height of a table row in twips; when 0 (zero), the height is sufficient for all the text in the line; when positive, the height is guaranteed to be at least the specified height; when negative, the absolute value of the height is used, regardless of the height of the text in the line.
\trhdr
Table row header; this row should appear at the top of every page the current table appears on.
\trkeep
Table row keep together; this row cannot be split by a page break. This property is assumed off unless the control word is present.

Bidirectional Controls


\rtlrow
Cells in this table row will have right-to-left precedence.
\ltrrow
Cells in this table row will have left-to-right precedence (the default).

Row Borders


\trbrdrt
Table row border top.
\trbrdrl
Table row border left.
\trbrdrb
Table row border bottom.
\trbrdrr
Table row border right.
\trbrdrh
Table row border horizontal (inside).
\trbrdrv
Table row border vertical (inside).

Cell Borders


\clbrdrb
Bottom table cell border.
\clbrdrt
Top table cell border.
\clbrdrl
Left table cell border.
\clbrdrr
Right table cell border.

Cell Shading and Background Pattern


\clshdngN
N is the shading of a table cell in hundredths of a percent. This control should be included in RTF along with cell border information.
\clbghoriz
Specifies a horizontal background pattern for the cell.
\clbgvert
Specifies a vertical background pattern for the cell.
\clbgfdiag
Specifies a forward diagonal background pattern for the cell ( \\\\).
\clbgbdiag
Specifies a backward diagonal background pattern for the cell (//// ).
\clbgcross
Specifies a cross background pattern for the cell.
\clbgdcross
Specifies a diagonal cross background pattern for the cell.
\clbgdkhor
Specifies a dark horizontal background pattern for the cell.
\clbgdkvert
Specifies a dark vertical background pattern for the cell.
\clbgdkfdiag
Specifies a dark forward diagonal background pattern for the cell ( \\\\).
\clbgdkbdiag
Specifies a dark backward diagonal background pattern for the cell (//// ).
\clbgdkcross
Specifies a dark cross background pattern for the cell.
\clbgdkdcross
Specifies a dark diagonal cross background pattern for the cell.
\clcfpatN
N is the line color of the background pattern.
\clcbpatN
N is the background color of the background pattern.
The following is an example of table text:

\par \trowd \trqc\trgaph108\trrh280\trleft36
\clbrdrt\brdrth \clbrdrl\brdrth \clbrdrb\brdrdb
\clbrdrr\brdrdb \cellx3636\clbrdrt\brdrth
\clbrdrl\brdrdb \clbrdrb\brdrdb \clbrdrr\brdrdb
\cellx7236\clbrdrt\brdrth \clbrdrl\brdrdb
\clbrdrb\brdrdb \clbrdrr\brdrdb \cellx10836\pard \intbl
\cell \pard \intbl \cell \pard \intbl \cell \pard \intbl \row
\trowd \trqc\trgaph108\trrh280\trleft36 \clbrdrt\brdrdb
\clbrdrl\brdrth \clbrdrb \brdrsh\brdrs \clbrdrr\brdrdb
\cellx3636\clbrdrt\brdrdb \clbrdr \brdrdb
\clbrdrb\brdrsh\brdrs \clbrdrr\brdrdb
\cellx7236\clbrdrt\brdrdb \clbrdr \brdrdb
\clbrdrb\brdrsh\brdrs \clbrdrr\brdrdb \cellx10836\pard
\intbl \cell \pard \intbl \cell \pard \intbl \cell \pard
\intbl \row \pard

Character Text

Character text has the following syntax:

<char>

<ptext> | <atext> | '{' <char> '}'
<ptext>
(<chrfmt>* <data>+ )+
<data>
#PCDATA | <spec> | <pict> | <obj> | <do> | <foot> | <annot> | <field> | <idx> | <toc> | <book>

Character Formatting Properties

These control words (described as <chrfmt> in the syntax description) change character formatting properties. A control word preceding plain text turns on the specified attribute. Some control words (indicated in the following table by an asterisk following the description) can be turned off by the control word followed by 0 (zero). For example, \b turns on bold, while \b0 turns off bold.

The character-formatting control words are listed in the following table.

Control word

Meaning
\plain
Reset character formatting properties to a default value defined by the application. The associated character formatting properties (described in the section "Associated Character Properties" on page 37 of this Application Note) are also reset.
\b
Bold.*
\caps
All capitals.*
\deleted
Marks the text as deletion revision marked.*
\dnN
Subscript position in half-points (the default is 6).
\sub
Subscripts text and shrinks point size according to font information.
\nosupersub
Turns off superscripting or subscripting.
\expndN
Expansion or compression of the space between characters in quarter-points; a negative value compresses (the default is 0).
\expndtwN
Expansion or compression of the space between characters in twips; a negative value compresses. For backward compatibility, both \expndtw and \expnd should be emitted.
\kerningN
Point size (in half-points) above which to kern character pairs. \kerning0 turns off kerning.
\fN
Font number. N refers to an entry in the font table.
\fsN
Font size in half-points (the default is 24).
\i
Italic.*
\outl
Outline.*
\revised
Text has been added since revision marking was turned on.
\revauthN
Index into the revision table. The content of the Nth group in the revision table is considered to be the author of that revision.
\revdttmN
Time of the revision. The 32-bit DTTM structure is emitted as a long integer.
\scaps
Small capitals.*
\shad
Shadow.*
\strike
Strikethrough.*
\ul
Continuous underline. \ul0 turns off all underlining.
\uld
Dotted underline.
\uldb
Double underline.
\ulnone
Stops all underlining.
\ulw
Word underline.
\upN
Superscript position in half-points (the default is 6).
\super
Superscripts text and shrinks point size according to font information.
\v
Hidden text.*
\cfN
Foreground color (the default is 0).
\cbN
Background color (the default is 0).
\rtlch
The character data following this control word will be treated as a right-to-left run.
\ltrch
The character data following this control word will be treated as a left-to-right run (the default).
\csN
Designates character style; if a character style is specified, style properties must be specified with the character run. N refers to an entry in the style table.
\cchsN
Indicates any characters not belonging to the default document character set and tells which character set they do belong to. Macintosh character sets are represented by values greater than 255. The values for N correspond to the values for the \ fcharset control word.
\langN
Applies a language to a character. N is a number corresponding to a language. The \plain control word resets the language property to the language defined by \deflangN in the document properties.
The following table defines the standard languages used by Microsoft. This table was generated by the Unicodeô group for use with TrueType and Unicode.

Language name

Language ID
No language
0x0400
Albanian
0x041c
Arabic
0x0401
Bahasa
0x0421
Belgian Dutch
0x0813
Belgian French
0x080c
Brazilian Portuguese
0x0416
Bulgarian
0x0402
Catalan
0x0403
Croato-Serbian (Latin)
0x041a
Czech
0x0405
Danish
0x0406
Dutch
0x0413
English (Australian)
0x0c09
English (U.K.)
0x0809
English (U.S.)
0x0409
Finnish
0x040b
French
0x040c
French (Canadian)
0x0c0c
German
0x0407
Greek
0x0408
Hebrew
0x040d
Hungarian
0x040e
Icelandic
0x040f
Italian
0x0410
Japanese
0x0411
Korean
0x0412
Norwegian (Bokmal)
0x0414
Norwegian (Nynorsk)
0x0814
Polish
0x0415
Portuguese
0x0816
Rhaeto-Romanic
0x0417
Romanian
0x0418
Russian
0x0419
Serbo-Croatian (Cyrillic)
0x081a
Simplified Chinese
0x0804
Slovak
0x041b
Spanish (Castilian)
0x040a
Spanish (Mexican)
0x080a
Swedish
0x041d
Swiss French
0x100c
Swiss German
0x0807
Swiss Italian
0x0810
Thai
0x041e
Traditional Chinese
0x0404
Turkish
0x041f
Urdu
0x0420
Sesotho (Sotho)
0x0430
Afrikaans
0x0436
Zulu
0x0435
Xhosa
0x0434
Venda
0x0433
Tswana
0x0432
Tsonga
0x0431
Farsi (Persian)
0x0425
To read negative \expnd values from Word for the Macintosh, an RTF reader should use only the low-order 6 bits of the value read. Word for the Macintosh does not emit negative values for \expnd. Instead, it treats values from 57 through 63 as -7 through -1, respectively (the low-order 6 bits of 57 through 63 are the same as -7 through -1).

Associated Character Properties

Bidirectional-aware text processors often need to associate a Latin (or other left-to-right) font with an Arabic or Hebrew (or other right-to-left) font. The association is needed to match commonly used pairs of fonts in name, size, and other attributes. While RTF defines a broad variety of associated character properties, any implementation may choose to not implement a particular associated character property and share the property between the Latin and Arabic fonts.

Property association uses the following syntax:

<atext>

<ltrrun> | <rtlrun>
<ltrrun>
\rtlch \af & <aprops>* \ltrch <ptext>
<rtlrun>
\ltrch \af & <aprops>* \rtlch <ptext>
Here are some examples of property association:

\ltrch\af2\ab\au\rtlch\u Sample Text
This is a right-to-left run. Text will use the default bidirectional font, and will be underlined. The left-to-right font associated with this run is font 2 (in the font table) with bolding and underlining.
\plain\rtlch\ltrch Sample Text 
This is a left-to-right run. The right-to-left font and the left-to-right font use the default font (specified by \deff).
\rtlch\af5\ab\ai\ltrch\u Sample Text
This is a left-to-right run. The right-to-left font is font 5, bold and italicized. The left-to-right font is the default font, underlined. If the reader does not support underlining in the associated font, both fonts will be underlined.

The property association control words (described as <aprops> in the syntax description) are listed in the following table. Some control words (indicated in the following table by an asterisk following the description) can be turned off by the control word followed by 0 (zero).

Control word

Meaning
\ab
Associated font is bold.*
\acaps
Associated font is all capitals.*
\acfN
Associated foreground color (the default is 0).
\adnN
Associated font is subscript position in half-points (the default is 6).
\aexpndN
Expansion or compression of the space between characters in quarter-points; a negative value compresses (the default is 0).
\afN
Associated font number (the default is 0).
\afsN
Associated font size in half-points (the default is 24).
\ai
Associated font is italic.*
\alangN
Language ID for the associated font. (This uses the same language ID codes described on page 35 of this Application Note.)
\aoutl
Associated font is outline.*
\ascaps
Associated font is small capitals.*
\ashad
Associated font is shadow.*
\astrike
Associated font is strikethrough.*
\aul
Associated font is continuous underline. \aul0 turns off all underlining for the alternate font.
\auld
Associated font is dotted underline.
\auldb
Associated font is double underline.
\aulnone
Associated font is no longer underlined.
\aulw
Associated font is word underline.
\aupN
Superscript position in half-points (the default is 6).

Highlighting

This property applies highlighting to text. The formatting is not a character format, so it cannot be part of a style definition.

Control Word

Definition
\highlightN
Highlights the specified text. N specifies the color.
For \highlight, the N argument can have the following values:

Value

Description
1
Black
2
Blue
3
Cyan
4
Green
5
Magenta
6
Red
7
Yellow
8
Unused
9
Dark Blue
10
Dark Cyan
11
Dark Green
12
Dark Magenta
13
Dark Red
14
Dark Yellow
15
Dark Gray
16
Light Gray

Special Characters

The RTF Specification includes control words for special characters (described as <spec> in the character-text syntax description). If a special-character control word is not recognized by the RTF reader, it is ignored, and the text following it is considered plain text. The RTF Specification is flexible enough to allow new special characters to be added for interchange with other software.

The special RTF characters are listed in the following table.

Control word

Meaning
\chdate
Current date (as in headers).
\chdpl
Current date in long format (for example, Thursday, October 28, 1993).
\chdpa
Current date in abbreviated format (for example, Thu, Oct 28, 1993).
\chtime
Current time (as in headers).
\chpgn
Current page number (as in headers).
\sectnum
Current section number (as in headers).
\chftn
Automatic footnote reference (footnotes follow in a group).
\chatn
Annotation reference (annotation text follows in a group).
\chftnsep
Anchoring character for footnote separator.
\chftnsepc
Anchoring character for footnote continuation.
\cell
End of table cell.
\row
End of table row.
\par
End of paragraph.
\sect
End of section and paragraph.
\page
Required page break.
\column
Required column break.
\line
Required line break (no paragraph break).
\softpage
Nonrequired page break. Emitted as it appears in galley view.
\softcol
Nonrequired column break. Emitted as it appears in galley view.
\softline
Nonrequired line break. Emitted as it appears in galley view.
\softlheightN
Nonrequired line height. This is emitted as a prefix to each line.
\tab
Tab character.
\emdash
Em-dash (--).
\endash
En-dash (-).
\emspace
Nonbreaking space equal to width of character "m" in current font.
\enspace
Nonbreaking space equal to width of character "n" in current font.
\bullet
Bullet character.
\lquote
Left single quotation mark.
\rquote
Right single quotation mark.
\ldblquote
Left double quotation mark.
\rdblquote
Right double quotation mark.
\|
Formula character. (Used by Word 5.1 for the Macintosh as the beginning delimiter for a string of formula typesetting commands.)
\~
Nonbreaking space.
\-
Optional hyphen.
\_
Nonbreaking hyphen.
\:
Specifies a subentry in an index entry.
\*
Marks a destination whose text should be ignored if not understood by the RTF reader.
\'hh
A hexadecimal value, based on the specified character set (may be used to identify 8-bit values).
\ltrmark
The following characters should be displayed from left to right; usually found at the start of \ltrch runs.
\rtlmark
The following characters should be displayed from right to left; usually found at the start of \rtlch runs.
\zwj
Zero-width joiner. This is used to ligate (join) characters.
\zwnj
Zero-width nonjoiner. This is used for unligating a characters.
A carriage return (character value 13) or linefeed (character value 10) will be treated as a \par control if the character is preceded by a backslash. You must include the backslash, or RTF ignores the control word. (You may also want to insert a carriage-return/linefeed pair without backslashes at least every 255 characters for better text transmission over communication lines.)

The following are the code values for the special characters listed.

Control word

Word for Windows and OS/2
Apple Macintosh
\bullet
149
0xA5
\endash
150
0xD1
\emdash
151
0xD0
\lquote
145
0xD4
\rquote
146
0xD5
\ldblquote
147
0xD2
\rdblquote
148
0xD3

Document Variables

Document variables are definable and accessed through macros. The group has the following syntax.

<variables>

`{\*' <docvar>`{' <varname> `}' `{' <vartext> `}' `}'*
<docvar>
\docvar
<varname>
#PCDATA
<vartype>
#PCDATA
Control Word
Definition
\docvar
A group that defines a document variable name and its value.

Bookmarks

This destination may specify one of two control words: \*\bkmkstart, which indicates the start of the specified bookmark, and \*\bkmkend, which indicates the end of the specified bookmark.

Bookmarks have the following syntax:

<book>

<bookstart> | <bookend>
<bookstart>
'{\*' \bkmkstart ( \bkmkcolf? & \bkmkcoll?) #PCDATA '}'
<bookend>
'{\*' \bkmkend #PCDATA '}'
A bookmark is shown in the following example:

\pard\plain \fs20 Kuhn believes that science, rather than 
discovering in experience certain structured 
relationships, actually creates (or already participates in) 
a presupposed structure to which it fits the data. 
{\bkmkstart paradigm} Kuhn calls such a presupposed 
structure a paradigm.{\bkmkend paradigm}
The bookmark start and the bookmark end are matched with the bookmark tag. In the example, the bookmark tag was "paradigm." Each bookmark start should have a matching bookmark end; however, the bookmark start and the bookmark end may be in any order.

\bkmkcolfN is used to denote the first column of a table covered by a bookmark. If it is not included, the first column is assumed. \bkmkcollN is used to denote the last column. If it is not used, the last column is assumed. These controls are used within the \*\bkmkstart destination following the \bkmkstart control. For example, {\*\bkmkstart\bkmkcolf2\bkmkcoll5 Table1} places the bookmark "Table1" on columns 2 through 5 of a table.

Pictures

An RTF file can include pictures created with other applications. These pictures can be in hexadecimal (the default) or binary format. Pictures are destinations, and begin with the \pict control word. A picture destination has the following syntax:

<pict>

'{' \pict (<brdr>? & <shading>? & <picttype> & <pictsize> & <metafileinfo>?) <data> '}'
<picttype>
\macpict | \pmmetafile | \wmetafile | \dibitmap <bitmapinfo> | \wbitmap <bitmapinfo>
<bitmapinfo>
\wbmbitspixel & \wbmplanes & \wbmwidthbytes
<pictsize>
( \picw & \pich) \picwgoal? & \pichgoal? \picscalex? & \picscaley? & \picscaled? & \piccropt? & \piccropb? & \piccropr? & \piccropl?
<metafileinfo>
\picbmp & \picbpp
<data>
( \bin #BDATA) | #SDATA
These control words are described in the following table (some measurements in this table are in twips; a twip is one-twentieth of a point).

Control word

Meaning
\macpict
Source of the picture is QuickDraw.
\pmmetafileN
Source of the picture is an OS/2 metafile; the N argument identifies the metafile type. The N values are descibed on page 43 of this Application Note.
\wmetafileN
Source of the picture is a Windows metafile; the N argument identifies the metafile type (the default is 1).
\dibitmapN
Source of the picture is a Windows device-independent bitmap; the N argument identifies the bitmap type (must equal 0).

The information to be included in RTF from a Windows device-independent bitmap is the concatenation of the BITMAPINFO structure followed by the actual pixel data.

\wbitmapN
Source of the picture is a Windows device-dependent bitmap; the N argument identifies the bitmap type (must equal 0).

The information to be included in RTF from a Windows device-dependent bitmap is the result of the GetBitmapBits function.

For more information on the GetDIBits and GetBitmapBits functions and the structure of Windows device-independent and device-dependent bitmaps, see Volume 1 and Volume 2 of the Programmer's Reference in the Microsoft Windows 3.1 Software Development Kit. For best device-independence and interoperability with Microsoft products, however, use of the \wbitmap and \dibitmap control words is discouraged. Rather, bitmaps should be embedded within Windows metafiles and the \wmetafile control word used. For more information on embedding bitmaps within metafiles, see Volume 1 and Volume 2 of the Programmer's Reference in the Microsoft Windows 3.1 Software Development Kit.

Control word

Meaning

Bitmap Information


\wbmbitspixelN
Number of adjacent color bits on each plane needed to define a pixel (the default is 1). Possible values are 1 (monochrome), 4 (16 colors), 8 (256 colors) and 24 (RGB).
\wbmplanesN
Number of bitmap color planes (must equal 1).
\wbmwidthbytesN
Specifies the number of bytes in each raster line. This value must be an even number since the Windows graphics device interface (GDI) assumes that the bit values of a bitmap form an array of integer (two-byte) values. In other words, \wbmwidthbytes times 8 must be the next multiple of 16 greater than or equal to the \picw (bitmap width in pixels) value.

Picture Size, Scaling, and Cropping


\picwN
xExt field if the picture is a Windows metafile; picture width in pixels if the picture is a bitmap or from QuickDraw.
\pichN
yExt field if the picture is a Windows metafile; picture height in pixels if the picture is a bitmap or from QuickDraw.
\picwgoalN
Desired width of the picture in twips.
\pichgoalN
Desired height of the picture in twips.
\picscalexN
Horizontal scaling value; the N argument is a value representing a percentage (the default is 100).
\picscaleyN
Vertical scaling value; the N argument is a value representing a percentage (the default is 100).
\picscaled
Scales the picture to fit within the specified frame; used only with \macpict pictures.
\piccroptN
Top cropping value in twips; a positive value crops toward the center of the picture; a negative value crops away from the center, adding a space border around picture (the default is 0).
\piccropbN
Bottom cropping value in twips; a positive value crops toward the center of the picture; a negative value crops away from the center, adding a space border around picture (the default is 0).
\piccroplN
Left cropping value in twips; a positive value crops toward the center of the picture; a negative value crops away from the center, adding a space border around picture (the default is 0).
\piccroprN
Right cropping value in twips; a positive value crops toward the center of the picture; a negative value crops away from the center, adding a space border around picture (the default is 0).

Metafile Information


\picbmp
Specifies whether a metafile contains a bitmap.
\picbppN
Specifies the bits per pixel in a metafile bitmap. The valid range is 1-32, with 1, 4, 8, and 24 being recognized.

Picture Data


\binN
The picture is in binary format; the numeric parameter N is the number of bytes that follow. Unlike all other controls, this control word takes a 32-bit parameter.
The \wbitmap control word is optional; if no other picture type is specified, the picture is assumed to be a Windows bitmap. If \wmetafile is specified, the N argument can be one of the following types.

Type

N argument
MM_TEXT
1
MM_LOMETRIC
2
MM_HIMETRIC
3
MM_LOENGLISH
4
MM_HIENGLISH
5
MM_TWIPS
6
MM_ISOTROPIC
7
MM_ANISOTROPIC
8
For more information about these types, see volume 1 of the Programmer's Reference in the Microsoft Windows 3.1 Software Development Kit.

If \pmmetafile is specified, the N argument can be one of the following types.

Type

N argument
PU_ARBITRARY
0x0004
PU_PELS
0x0008
PU_LOMETRIC
0x000C
PU_HIMETRIC
0x0010
PU_LOENGLISH
0x0014
PU_HIENGLISH
0x0018
PU_TWIPS
0x001C
For more information about these types, see volume 2 of the OS/2 Programmer's Reference.

Be careful with spaces following control words when dealing with pictures in binary format. When reading files, RTF considers the first space after a control word the delimiter and subsequent spaces part of the document text. Therefore, any extra spaces are attached to the picture, with unpredictable results.

RTF writers should not use the carriage-return/linefeed (CR/LF) combination to break up pictures in binary format. If they do, the CR/LF combination is treated as literal text and considered part of the picture data.

The picture in hexadecimal or binary format follows the picture-destination control words. The following example illustrates the destination format:

{\pict\wbitmap0\picw170\pich77\wbmbitspixel1\wbmplanes1\wbmwidthbytes22
\picwgoal505
\pichgoal221
\picscalex172
\picscaley172
49f2000000000273023d1101a030
3901000a000000000273023d98
0048000200000275
02040000200010275023e000000000
273023d000002b90002b90002
b90002b90002b9
0002b90002b90002b90002b90002b90002
b92222b90002b90002b90
002b90002b9
0002b90002b90002b90002b9000

Objects

Microsoft OLE links, Microsoft OLE embedded objects, and Macintosh Edition Manager subscriber objects are represented in RTF as objects. Objects are destinations that contain a data part and a result part. The data part is generally hidden to the application that produced the document. A separate application uses the data and supplies the appearance of the data. This appearance is the result part of the object.

The representation of objects in RTF is designed to allow RTF readers that don't understand objects or don't use a particular type of object to use the current result in place of the object. This allows the appearance of the object to be maintained through the conversion even though the object functionality is lost. Each object comes with optional information about the object, a required destination that contains the object data, and an optional result that contains the current appearance of the object. This result contains standard RTF. It is an important responsibility of the RTF writer to provide the result so that existing RTF readers that either do not support objects or that do not support the particular type of object will be able to display the object.

When the object is an OLE embedded or linked object, the data part of the object is the structure produced by the OLESaveToStream function. Some OLE clients rely on the OLE system to render the object and a copy of the result is not available to the RTF writer for that application. For these cases, the object result can be extracted from the structure produced by the OLESaveToStream function. For information about the OLESaveToStream function, see the Microsoft Object Linking and Embedding Software Development Kit.

The syntax for this destination is:

<obj>

( '{' \object (<objtype> & <objmod>? & <objclass>? & <objname>? & <objtime>? & <objsize>? & <rsltmod>?) <objdata> <result> '}' ) | <pubobject>
<objtype>
\objemb | \objlink | \objautlink | \objsub | \objpub | \objicemb
<objmod>
\linkself? & \objlock? | \objupdate?
<objclass>
'{\*' \objclass #PCDATA '}'
<objname>
'{\*' \objname #PCDATA '}'
<objtime>
'{\*' \objtime <time> '}'
<rsltmod>
\rsltmerge? & <rslttype>?
<rslttype>
\rsltrtf | \rslttxt | \rsltpict | \rsltbmp
<objsize>
\objsetsize? & \objalign? & \objtransy? & <objhw>? & \objcropt? & \objcropb? & \objcropl? & \objcropr? & \objscalex? & \objscaley?
<objhw>
\objh & \objw
<objdata>
'{\*' \objdata (<objalias>? & <objsect>?) <data> '}'
<objalias>
'{\*' \objalias <data> '}'
<objsect>
'{\*' \objsect <data> '}'
<result>
'{' \result <para>+ '}'

Control word

Meaning

Object Type


\objemb
An object type of OLE embedded object. If no type is given for the object, the object is assumed to be of type \objemb.
\objlink
An object type of OLE link.
\objautlink
An object type of OLE autolink.
\objsub
An object type of Macintosh Edition Manager subscriber.
\objpub
An object type of Macintosh Edition Manager publisher.
\objicemb
An object type of MSÆ Word for the Macintosh Installable Command (IC) Embedder.

Object Information


\linkself
The object is a link to another part of the same document.
\objlock
Locks the object from any updates.
\objupdate
Forces an update to the object before displaying it. Note that this will override any values in the <objsize> control words, but reasonable values should always be provided for these to maintain backwards compatibility.
\objclass
The text argument is the object class to use for this object; ignore the class specified in the object data. This is a destination control word.
\objname
The text argument is the name of this object. This is a destination control word.
\objtime
Describes the time that the object was last updated.

Object Size, Position, Cropping, and Scaling


\objhN
N is the original object height in twips, assuming the object has a graphical representation.
\objwN
N is the original object width in twips, assuming the object has a graphical representation.
\objsetsize
Forces the object server to set the object's dimensions to that specified by the client.
\objalignN
N is the distance in twips from the left edge of the objects that should be aligned on a tab stop. This is needed to place Equation Editor equations correctly in line.
\objtransyN
N is the distance in twips the objects should be moved vertically with respect to the baseline. This is needed to place Math Type equations correctly in line.
\objcroptN
N is the top cropping distance in twips.
\objcropbN
N is the bottom cropping distance in twips.
\objcroplN
N is the left cropping distance in twips.
\objcroprN
N is the right cropping distance in twips.
\objscalexN
N is the horizontal scaling percentage.
\objscaleyN
N is the vertical scaling percentage.

Object Data


\objdata
This subdestination contains the data for the object in the appropriate format; OLE objects are in OLESaveToStream format. This is a destination control word.
\objalias
This subdestination contains the Alias Record for the publisher object for the Macintosh Edition Manager. This is a destination control word.
\objsect
This subdestination contains the Section Record for the publisher object for the Macintosh Edition Manager. This is a destination control word.

Object Result


\rsltrtf
Forces the result to be rich-text format, if possible.
\rsltpict
Forces the result to be a Windows metafile or MacPict image format, if possible.
\rsltbmp
Forces the result to be a bitmap, if possible.
\rslttxt
Forces the result to be plain text, if possible.
\rsltmerge
Uses the formatting of the current result whenever a new result is obtained.
\result
The result destination is optional in the \object destination. It contains the last update of the result of the object. The data of the result destination should be standard RTF so that RTF readers that don't understand objects or the type of object represented can use the current result in the object's place to maintain appearance. This is a destination control word.
When Word is used as an editor for Mail, the following control word can be emitted. It is not seen in other situations.

Control Word

Definition
\objattph
Object attachment placeholder. Used in the RTF stream when Word is started up as a mail editor and the message contains attachments. The control word tells where in the text stream the attachment should be placed. It does not define the actual attachment.

Macintosh Edition Manager Publisher Objects

Word for the Macintosh writes publisher objects for the Macintosh Edition Manager in terms of bookmarks (see "Bookmarks" on page 41 of this Application Note). The range of publisher objects are marked as bookmarks, so these controls are all used within the \bkmkstart destination. The RTF syntax for a publisher object is:

<pubobject>

'{\*' \bkmkstart \bkmkpub \pubauto? (<objalias>? & <objsect>) #PCDATA '}'
Control word
Meaning
\bkmkpub
The bookmark marks a Macintosh Edition Manager publisher object.
\pubauto
The publisher object updates all Macintosh Edition Manager subscribers of this object automatically whenever it is edited.

Drawing Objects

Drawing objects and the drawing primitives enumerated within drawing object groups use the syntax described by the following tables.

<do>

'{\*' \do <dohead> <dpinfo>'}'
<dohead>
<dobx> <doby> <dodhgt> <dolock>?
<dobx>
\dobxpage | \dobxcolumn | \dobxmargin
<doby>
\dobypage | \dobypara | \dobymargin
<dodhgt>
\dodhgt
<dolock>
\dolock
<dpinfo>
<dpgroup> | <dpcallout> | <dpsimple>
<dpgroup>
\dpgroup \dpcount <dphead> <dpinfo>+ \dpendgroup <dphead>
<dpcallout>
\dpcallout <cotype> <coangle>? <coaccent>? <cosmartattach>? <cobestfit>? <cominusx>? <cominusy>? <coborder>? <codescent>? \dpcooffset \dpcolength <dphead> <dppolyline> <dphead> <dpprops> <dptextbox> <dphead> <dpprops>
<dpsimple>
<dpsimpledpk> <dphead> <dpprops>
<dpsimpledpk>
<dpline> | <dprect> | <dptextbox> | <dpellipse> | <dppolyline> | <dparc>
<dpline>
\dpline <dppt> <dppt>
<dprect>
\dprect (\dproundr)?
<dptextbox>
\dptxbx \dptxbxmar '{' \dptxbxtext <para>+'}'
<dpellipse>
\dpellipse
<dparc>
\dparc \dparcflipx? \dparcflipy?
<dppolyline>
\dppolyline (\dppolygon)? \dppolycount <dppt>+
<dppt>
\dpptx \dppty
<dphead>
\dpx \dpy \dpxsize \dpysize
Note that in <dpgroup> the number of <dpinfo>s is equal to the argument of \dpcount, while in <dppolyline> the number of <dppt>s is equal to the argument of \dppolycount.

The following elements of the drawing-object syntax pertain specifically to callout objects:

<cotype>

\dpcotright | \dpcotsingle | \dpcotdouble | \dpcottriple
<coangle>
\dpcoa
<coaccent>
\dpcoaccent
<cosmartattach>
\dpcosmarta
<cobestfit>
\dpcobestfit
<cominusx>
\dpcominusx
<cominusy>
\dpcominusy
<coborder>
\dpcoborder
<codescent>
\dpcodtop | \dpcodcenter | \dpcodbottom | \dpcodabs
The remaining elements of the drawing object syntax are properties applied to individual drawn primitives:

<dpprops>

<lineprops>? <fillprops>? <endstylestart>? <endstyleend>? <shadow>?
<lineprops>
<linestyle> <linecolor> \dplinew
<linestyle>
\dplinesolid | \dplinehollow | \dplinedash | \dplinedot | \dplinedado | \dplinedadodo
<linecolor>
<linegray> | <linergb>
<linegray>
\dplinegray
<linergb>
\dplinecor \dplinecog \dplinecob<linepal>?
<linepal>
\dplinepal
<fillprops>
<fillcolorfg> <fillcolorbg> \dpfillpat
<fillcolorfg>
<fillfggray> | <fillfgrgb>
<fillfggray>
\dpfillfggray
<fillfgrgb>
\dpfillfgcr \dpfillfgcg \dpfillfgcb<fillfgpal>?
<fillfgpal>
\dpfillfgpal
<fillcolorbg>
<fillbggray> | <fillbgrgb>
<fillbggray>
\dpfillbggray
<fillbgrgb>
\dpfillbgcr \dpfillbgcg \dpfillbgcb<fillbgpal>?
<fillbgpal>
\dpfillbgpal
<endstylestart>
<arrowstartfill> \dpastartl \dpastartw
<arrowstartfill>
\dpastartsol | \dpastarthol
<endstyleend>
<arrowendfill> \dpaendl \dpaendw
<arrowendfill>
\dpaendsol | \dpaendhol
<shadow>
\dpshadow \dpshadx \dpshady
The following table describes the control words for the drawing object group in detail. All color values are RGB values between 0-255. All distances are in twips. All other values are as indicated.

Control word

Definition
\do
Indicates a drawing object is to be inserted at this point in the character stream. This is a destination control word.
\dolock
The drawing object's anchor is locked and cannot be moved.
\dobxpage
The drawing object is page relative in the x-direction.
\dobxcolumn
The drawing object is column relative in the x-direction.
\dobxmargin
The drawing object is margin relative in the x-direction.
\dobypage
The drawing object is page relative in the y-direction.
\dobypara
The drawing object is paragraph relative in the y-direction.
\dobymargin
The drawing object is margin relative in the y-direction.
\dodhgtN
The drawing object is positioned at the following numeric address in the z-ordering.

Drawing Primitives


\dpgroup
Begin group of drawing primitives.
\dpcountN
Number of drawing primitives in the current group.
\dpendgroup
End group of drawing primitives.
\dparc
Arc drawing primitive.
\dpcallout
Callout drawing primitive, which consists of both a polyline and a text box.
\dpellipse
Ellipse drawing primitive.
\dpline
Line drawing primitive.
\dppolygon
Polygon drawing primitive (closed polyline).
\dppolyline
Polyline drawing primitive.
\dprect
Rectangle drawing primitive.
\dptxbx
Text box drawing primitive.

Position and Size


\dpxN
X-offset of the drawing primitive from its anchor.
\dpxsizeN
X-size of the drawing primitive.
\dpyN
Y-offset of the drawing primitive from its anchor.
\dpysizeN
Y-size of the drawing primitive.

Callouts


\dpcoaN
Angle of callout's diagonal line is restricted to one of the following: 0, 30, 45, 60, or 90. If this control word is absent, the callout has an arbitrary angle, indicated by the coordinates of its primitives.
\dpcoaccent
Accent bar on callout (vertical bar between polyline and text box).
\dpcobestfit
Best fit callout (x-length of each line in callout is similar).
\dpcoborder
Visible border on callout text box.
\dpcodabs

Absolute distance-attached polyline.

\dpcodbottom
Bottom-attached polyline.
\dpcodcenter
Center-attached polyline.
\dpcodtop
Top-attached callout.
\dpcodescentN
The descent of the callout
\dpcolengthN
Length of callout.
\dpcominusx
Text box falls in quadrants II or III relative to polyline origin.
\dpcominusy
Text box falls in quadrants III or IV relative to polyline origin.
\dpcooffsetN
Offset of callout. This is the distance between the end of the polyline and the edge of the text box.
\dpcosmarta
Auto-attached callout. Polyline will attach to either the top or bottom of the text box depending on the relative quadrant.
\dpcotdouble
Double line callout.
\dpcotright
Right angle callout.
\dpcotsingle
Single line callout.
\dpcottriple
Triple line callout.

Text Boxes and Rectangles


\dptxbxmarN
Internal margin of the text box.
\dptxbxtext
Group that contains the text of the text box.
\dproundr
Rectangle is a round rectangle.

Lines and Polylines


\dpptxN
X-coordinate of the current vertex (only for lines and polylines). The coordinate order for a point must be x, y.
\dpptyN
Y-coordinate of the current vertex (only for lines and polylines). The coordinate order for a point must be x, y.
\dppolycountN
Number of vertices in polyline drawing primitive.

Arcs


\dparcflipx
This indicates that the end point of the arc is to the right of the start point. Arcs are
drawn counter-clockwise.
\dparcflipy
This indicates that the end point of the arc is below the start point. Arcs are drawn counter-clockwise.

Line Style


\dplinecobN
Blue value for line color.
\dplinecogN
Green value for line color.
\dplinecorN
Red value for line color.
\dplinepal
Render line color using the PALETTERGB macro instead of the RGB macro in Windows.
\dplinedado
Dashed-dotted line style.
\dplinedadodo
Dashed-dotted-dotted line style.
\dplinedash
Dashed line style.
\dplinedot
Dotted line style.
\dplinegrayN
Grayscale value for line color (in half-percentages).
\dplinehollow
Hollow line style (no line color).
\dplinesolid
Solid line style.
\dplinewN
Thickness of line (in twips).

Arrow Style


\dpaendhol
Hollow end arrow (lines only).
\dpaendlN
Length of end arrow, relative to pen width:

1 Small

2 Medium

3 Large

\dpaendsol
Solid end arrow (lines only).
\dpaendwN
Width of end arrow, relative to pen width:

1 Small

2 Medium

3 Large

\dpastarthol
Hollow start arrow (lines only).
\dpastartlN
Length of start arrow, relative to pen width:

1 Small

2 Medium

3 Large

\dpastartsol
Solid start arrow (lines only).
\dpastartwN
Width of start arrow, relative to pen width:

1 Small

2 Medium

3 Large

Fill Pattern


\dpfillbgcbN
Blue value for background fill color.
\dpfillbgcgN
Green value for background fill color.
\dpfillbgcrN
Red value for background fill color.
\dpfillbgpal
Render fill background color using the PALETTERGB macro instead of the RGB macro in Windows.
\dpfillbggrayN
Grayscale value for background fill (in half-percentages).
\dpfillfgcbN
Blue value for foreground fill color.
\dpfillfgcgN
Green value for foreground fill color.
\dpfillfgcrN
Red value for foreground fill color.
\dpfillfgpal
Render fill foreground color using the PALETTERGB macro instead of the RGB macro in Windows.
\dpfillfggrayN
Grayscale value for foreground fill (in half-percentages).
\dpfillpatN
Index into a list of fill patterns. See below for list.

Shadow


\dpshadow
Current drawing primitive has a shadow.
\dpshadxN
X-offset of the shadow.
\dpshadyN
Y-offset of the shadow.
The following values are available for specifying fill patterns in drawing objects with the \dpfillpat control word.

Value

Fill pattern
0 (zero)
Clear (no pattern)
1
Solid (100%)
2
5%
3
10%
4
20%
5
25%
6
30%
7
40%
8
50%
9
60%
10
70%
11
75%
12
80%
13
90%
14
Dark horizontal lines
15
Dark vertical lines
16
Dark left-diagonal lines (\\\)
17
Dark right-diagonal lines (///)
18
Dark grid lines
19
Dark trellis lines
20
Light horizontal lines
21
Light vertical lines
22
Light left-diagonal lines (\\\)
23
Light right-diagonal lines (///)
24
Light grid lines
25
Light trellis lines

Footnotes

The \footnote control word introduces a footnote. Footnotes are destinations in RTF. A footnote is anchored to the character that immediately precedes the footnote destination (that is, the footnote moves with the character to which it is anchored). If automatic footnote numbering is defined, the destination can be preceded by a footnote reference character, identified by the control word \chftn. No Microsoft product supports footnotes within headers, footers, or annotations. Placing a footnote within headers, footers, or annotations will often result in a corrupt document.

Footnotes have the following syntax.

<foot>

'{\*' \footnote <para>+ '}'
Here is an example of a destination containing footnotes:

\ftnbj\ftnrestart \sectd \linemod0\linex0\endnhere \pard\plain
\ri1170 \fs20 {\pu6 Mead's landmark study has been amply annotated.\chftn
{\*\footnote \pard\plain \s246 \fs20 {\up6\chftn }See Sahlins, Bateson, and 
Geertz for a complete bibliography.}
It was her work in America during the Second World War, however, that forms
the basis for the paper. As others have noted, \chftn
{\*\footnote \pard\plain \s246 \fs20 {\up6\chftn}
A complete bibliography will be found at the end of this chapter.}
this period was a turning point for Margaret Mead.}
\par
To indicate endnotes, the following combination is emitted: \footnote\ftnalt. Existing readers will ignore the \ftnalt control word and treat everything as a footnote.

For other control words relating to footnotes, see the sections titled "Document Formatting Properties" (page 16), "Section Formatting Properties" (page 20), and "Special Characters" (page 38) in this Application Note.

Annotations

RTF annotations have two parts; the author ID (introduced by the control word \atnid) and the annotation text (introduced by the control word \annotation); there is no group enclosing both parts. No Microsoft product supports annotations within headers, footers, or footnotes. Placing an annotation within headers, footers, or footnotes will often result in a corrupt document. Each part of the annotation is an RTF destination. Annotations are anchored to the character that immediately precedes the annotation.

If an annotation is associated with an annotation bookmark, the following two destination control words precede and follow the bookmark. The alphanumeric string N, such as a long integer, represents the bookmark name.

<atrfstart>

'{\*' \atrfstart N '}'
< atrfend>
'{\*' \atrfend N '}'
Annotations have the following syntax:

<annot>

<annotid> <atnauthor> <atntime>? \chatn <atnicn>? <annotdef>
<annotid>
'{\*' \atnid #PCDATA '}'
< atnauthor>
'{\*' \atnauthor #PCDATA '}'
<annotdef>
'{\*' \annotation <atnref> <para>+ '}'
< atnref>
'{\*' \atnref N '}'
<atntime>
'{\*' \atntime <time> '}'
<atnicn>
'{\*' \atnicn <pict> '}'
An example of annotation text follows:

An example of a paradigm might be Newtonian physics or
Darwinian biology.{\v\fs16 {\atnid bz}\chatn{\*\annotation
\pard\plain \s224 \fs20 {\field{\fldinst page \\#'"Page: 
'#'\line'"}{\fldrslt}}{\fs16 \chatn }
How about some examples that deal with social science? 
That's what this paper is about.}}
Annotations may have optional time stamps (contained in the \atntime destination) or icons (contained in the \atnicn destination).

Fields

The \field control word introduces a field destination, which contains the text of fields.

Fields have the following syntax:

<field>

'{' \field <fieldmod>? <fieldinst> <fieldrslt> '}'
<fieldmod>
\flddirty? & \fldedit? & \fldlock? & \fldpriv?
<fieldinst>
'{\*' \fldinst <char>+ <fldalt>? '}'
<fldalt>
\fldalt
<fieldrslt>
'{\*' \fldrslt <para>+ '}'
There are several control words that alter the interpretation of the field. These control words are listed in the following table.

Control word

Meaning
\flddirty
A formatting change has been made to the field result since the field was last updated.
\fldedit
Text has been added to, or removed from, the field result since the field was last updated.
\fldlock
Field is locked and cannot be updated.
\fldpriv
Result is not in a form suitable for display (for example, binary data used by fields whose result is a picture).
Two subdestinations are required within the \field destination. They must be enclosed in braces ({ }) and begin with the following control words.

Control word

Meaning
\fldinst
Field instructions. This is a destination control word.
\fldrslt
Most recent calculated result of the field. This is a destination control word.
If the instruction for a field contains a filename, then the \cpg control can be used to define the character set of the filename. See "Code Page Support" on page 9 of this Application Note for details.

The \fldrslt control word should be included even if no result has been calculated because most readers (even those readers that do not recognize fields) can generally include the value of the \fldrslt destination in the document.

An example of some field text follows:

{\field {\*\fldinst AUTHOR \\*MERGEFORMAT	}{\fldrslt Joe Smith}}\par\pard
{\field{\*\fldinst time \\@ "h:mm AM/PM"}{\fldrslt 8:12 AM}}
You can use the \fldalt control word to specify that the given field reference is to an endnote. For example, the following field in RTF is a reference to a footnote:
{\field{\*\fldinst NOTEREF _RefNumber } {\fldrslt 1}}
The following is an example of a reference to an endnote:
{\field{\*\fldinst NOTEREF _RefNumber \fldalt } {\fldrslt I}}
If the specified field is a form field, the \*\datafield destination appears as a part of <char> and contains the binary data of a form field instruction. For example:
{\field{\*\fldinst {\*\bkmkstart Text1} FORMTEXT {{\*\datafield 
00000000000000000554657874310008476565207768697a0000000000000000000000}}}{\fldrslt Default Result}}{\*\bkmkend Text1}
Note that the \datafield destination requires the \* prefix.

Index Entries

The \xe control word introduces an index entry. Index entries in RTF are destinations. An index entry has the following syntax:

<idx>

'{' \xe (\xef? & \bxe? & \ixe?) <char>+ (<txe> | <rxe>)? '}'
<txe>
'{' \txe <char>+ '}'
<rxe>
'{' \rxe #PCDATA '}'
If the text of the index entry is not formatted as hidden text with the \v control word, the text is put into the document as well as into the index. For more information on the \v control word, see "Character Formatting Properties" on page 34 of this Application Note. Similarly, the text of the \txe subdestination, described later in this section, becomes part of the document if it is not formatted as hidden text.

The following control words may also be used.

Control word

Meaning
\xefN
Allows multiple indexes within the same document. N is an integer that corresponds to the ASCII value of a letter between A and Z.
\bxe
Formats the page number or cross-reference in bold.
\ixe
Formats the page number or cross-reference in italic.
\txe Text
Text argument to be used instead of a page number. This is a destination control word.
\rxe BookmarkName
Text argument is a bookmark for the range of page numbers. This is a destination control word.

Table of Contents Entries

The \tc control word introduces a table of contents entry, which can be used to build the actual table of contents. The \tcn control word marks a table of contents entry that will not have a page number associated with it; this is used in place of \tc for such entries. Table of contents entries are destinations, and they have the following syntax:

<toc>

'{' \tc | \tcn ( \tcf? & \tcl?) <char>+ '}'
As with index entries, text that is not formatted as hidden with the \v character-formatting control word is put into the document. The following control words can also be used in this destination.

Control word

Meaning
\tcfN
Type of table being compiled; N is mapped by existing Microsoft software to a letter between A and Z (the default is 67, which maps to C, used for tables of contents).
\tclN
Level number (the default is 1).

Bidirectional Language Support

RTF supports bidirectional writing orders for languages such as Arabic. The controls are described below (as well as in the appropriate sections throughout this Application Note). Also refer to the associated character properties defined in "Associated Character Properties" on page 37 of this Application Note.

All the control words relating to bidirectional language support are repeated here for convenience.

Control word

Meaning
\rtlch
The character data following this control word will be treated as a right-to-left run.
\ltrch
The character data following this control word will be treated as a left-to-right run (the default).
\rtlmark
The following characters should be displayed from right to left.
\ltrmark
The following characters should be displayed from left to right.
\rtlpar
Text in this paragraph will be displayed with right-to-left precedence
\ltrpar
Text in this paragraph will be displayed with left-to-right precedence. This is the default.
\rtlrow
Cells in this table row will have right-to-left precedence.
\ltrrow
Cells in this table row will have left-to-right precedence. This is the default.
\rtlsect
This section will thread columns from right to left.
\ltrsect
This section will thread columns from left to right. This is the default.
\rtldoc
Text in this document will be displayed from right to left unless overridden by a more specific control.
\ltrdoc
Text in this document will be displayed from left to right unless overridden by a more specific control. This is the default.
\zwj
Zero-width joiner. This is used for ligating characters.
\zwnj
Zero-width nonjoiner. This is used for unligating characters.


previous next Title