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 '}'
<hlinkbase> '{' \hlinkbase #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 the Summary Info or Properties dialog box in Word. This is a destination control word.
\hlinkbase The base address that is used for the path of all relative hyperlinks inserted in the document. This can be a path or an Internet address (URL).

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
Meaning
\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.
\proptypeN Specifies the type of the property:

3Integer

5Real number

7Date

11Boolean

30Text


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 including spaces
\nofcharswsN Number of characters not including spaces
\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 Template}{\author John Doe}{\operator JOHN DOE}
{\creatim\yr1999\mo4\dy27\min1}{\revtim\yr1999\mo4\dy27\min1}
{\printim\yr1999\mo3\dy17\hr23\min5}{\version2}{\edmins2}{\nofpages183}
{\nofwords53170}{\nofchars303071}{\*\company Microsoft}
{\nofcharsws372192}{\vern8247}}

Document Formatting Properties

After the information group (if there are 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 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 to turn it off.
\linestartN Beginning line number (the default is 1).
\fracwidth Uses fractional character widths when printing (QuickDraw only).
\*\nextfile 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 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 on Font (Character) Formatting Properties in this RTF Specification for a list of possible values for N.
\deflangfeN Default language ID for Asian/Middle Eastern text in Word.
\windowcaption Sets the caption text for the document window. This is a string value.
\doctypeN An integer (0-2) that describes the document type for AutoFormat.

0General Document (for formatting most documents, the default)

1Letter (for formatting letters, and used by Letter Wizard)

2E-mail (for formatting e-mail, and used by WordMail)

\fromtext Indicates document was originally plain text.
\fromhtml Indicates the document was originally HTML and may contain encapsulated HTML tags. This keyword may be followed by a version number (currently 1).
\horzdoc Horizontal rendering.
\vertdoc Vertical rendering.
\jcompress Compressing justification (default).
\jexpand Expanding justification.
\lnongrid Define line based on the grid.
Document Views and Zoom Level
\viewkindN An integer (0-5) that represents the view mode of the document.

0None

1Page Layout view

2Outline view

3Master Document view

4Normal view

5Online Layout view

\viewscaleN Zoom level of the document; the N argument is a value representing a percentage (the default is 100).
\viewzkN An integer (0 to 2) that represents the zoom kind of the document.

0None

1Full page

2Best fit

\private Obsolete destination. It has no leading \*. It should be skipped.
Footnotes and Endnotes
\fetN Footnote/endnote type. This indicates what type of notes are present in the document.

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

1Endnotes only.

2Footnotes and endnotes both.

For backward compatibility, if \fet1 is emitted, \endnotes or \enddoc will be emitted together 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 (*, †, ‡, §)
\ftnnchosung Footnote Korean numbering 1 (*chosung).
\ftnncnum Footnote Circle numbering (*circlenum).
\ftnndbnum Footnote Kanji numbering without the digit character (*dbnum1).
\ftnndbnumd Footnote Kanji numbering with the digit character (*dbnum2).
\ftnndbnumt Footnote Kanji numbering 3 (*dbnum3).
\ftnndbnumk Footnote Kanji numbering 4 (*dbnum4).
\ftnndbar Footnote double-byte numbering (*dbchar).
\ftnnganada Footnote Korean numbering 2 (*ganada).
\ftnngbnum Footnote Chinese numbering 1 (*gb1).
\ftnngbnumd Footnote Chinese numbering 2 (*gb2).
\ftnngbnuml Footnote Chinese numbering 3 (*gb3).
\ftnngbnumk Footnote Chinese numbering 4 (*gb4).
\ftnnzodiac Footnote numbering— Chinese Zodiac numbering 1 (* zodiac1)
\ftnnzodiacd Footnote numbering— Chinese Zodiac numbering 2 (* zodiac2)
\ftnnzodiacl Footnote numbering— Chinese Zodiac numbering 3 (* zodiac3)
\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 (*, †, ‡, §)
\aftnnchosung Endnote Korean numbering 1 (*chosung).
\aftnncnum Endnote Circle numbering (*circlenum).
\aftnndbnum Endnote Kanji numbering without the digit character (*dbnum1).
\aftnndbnumd Endnote Kanji numbering with the digit character (*dbnum2).
\aftnndbnumt Endnote Kanji numbering 3 (*dbnum3).
\aftnndbnumk Endnote Kanji numbering 4 (*dbnum4).
\aftnndbar Endnote double-byte numbering (*dbchar).
\aftnnganada Endnote Korean numbering 2 (*ganada).
\aftnngbnum Endnote Chinese numbering 1 (*gb1).
\aftnngbnumd Endnote Chinese numbering 2 (*gb2).
\aftnngbnuml Endnote Chinese numbering 3 (*gb3).
\aftnngbnumk Endnote Chinese numbering 4 (*gb4).
\aftnnzodiac Endnote numbering— Chinese Zodiac numbering 1 (* zodiac1)
\aftnnzodiacd Endnote numbering— Chinese Zodiac numbering 2 (* zodiac2)
\aftnnzodiacl Endnote numbering— Chinese Zodiac numbering 3 (* zodiac3).
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 Microsoft 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).
\rtlgutter Gutter is positioned on the right
\gutterprl Parallel gutter.
\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.
\twoonone Print two logical pages on one physical page.
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.
\subfontbysize Substitute fonts based on size first.
\truncatefont
height
Round down to the nearest font size instead of rounding up.
\truncex Don't add leading (extra space) between rows of text
\bdbfhdr Print body before header/footer. Option for compatibility with Word for the Macintosh 5.x.
\dntblnsbdb Don't balance single-byte character set (SBCS)/double-byte character set (DBCS) characters. Option for compatibility with Word 6.0 (Japanese).
\expshrtn Expand character spaces on line ending with SHIFT+RETURN. Option for compatibility with Word 6.0 (Japanese).
\lytexcttp Don't center exact line height lines.
\lytprtmet Use printer metrics to lay out document.
\msmcap Small caps like Word for the Macintosh 5.x.
\nolead No external leading. Option for compatibility with Word for the Macintosh 5.x
\nospaceforul Don't add space for underline. Option for compatibility with Word 6.0 (Japanese).
\noultrlspc Don't underline trailing spaces. Option for compatibility with Word 6.0 (Japanese).
\noxlattoyen Don't translate backslash to Yen sign. Option for compatibility with Word 6.0 (Japanese).
\oldlinewrap Lines wrap like Word 6.0.
\sprsbsp Suppress extra line spacing at bottom of page.
\sprstsm Does nothing. This keyword should be ignored.
\wpjst Do full justification like WordPerfect 6.x for Windows.
\wpsp Set the width of a space like WordPerfect 5.x.
\wptab Advance to next tab stop like WordPerfect 6.x.
\splytwnine Don't lay out AutoShapes like Word 97.
\ftnlytwnine Don't lay out footnotes like Word 6.0/95/97.
\htmautsp Use HTML paragraph auto spacing.
\useltbaln Don't forget last tab alignment.
\alntblind Don't align table rows independently.
\lytcalctblwd Don't lay out tables with raw width.
\lyttblrtgr Don't allow table rows to lay out apart.
\oldas Use Word 95 Auto spacing.
\lnbrkrule Don't use Word 97 line breaking rules for Asian text.
\bdrrlswsix Use Word 6.0/95 borders rules.
\nolnhtadjtbl Don't adjust line height in table.
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 box 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:

0no properties shown

1bold

2 italic

3 underline (default)

4 double underline.

\revbarN Vertical lines mark altered text, based on the argument:

0no marking;

1left margin

2 right margin

3 outside (the default: left on left pages, right on right pages).

Comments (Annotations)
\annotprot This document is protected for comments (annotations). The user cannot edit the document but can insert comments (annotations).
Bidirectional Controls
\rtldoc This document will be formatted to have Arabic-style pagination.
\ltrdoc This document will have English-style pagination (the default).
Click-and-Type
\ctsN Index to the style to be used for Click-and-Type (0 is the default).
Kinsoku characters (Far East)
\jsksu Indicates that the strict Kinsoku set must be used for Japanese; \jsku should not be present if \ksulangN is present and the language N is Japanese.
\ksulangN Indicates what language N the customized kinsoku characters defined in the \fchars and \lchars destinations belong to.
\*\fchars List of following kinsoku characters.
\*\lchars List of leading kinsoku characters.
Drawing Grid
\dghspaceN Drawing grid horizontal spacing in twips (the default is 120).
\dgvspaceN Drawing grid vertical spacing in twips (the default is 120).
\dghoriginN Drawing grid horizontal origin in twips (the default is 1701).
\dgvoriginN Drawing grid vertical origin in twips (the default is 1984).
\dghshowN Show Nth horizontal gridline (the default is 3).
\dgvshowN Show Nth vertical gridline (the default is 0).
\dgsnap Snap to drawing grid.
\dgmargin Drawing grid to follow margins.

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 the section on Bidirectional Language Support in this RTF Specification.

Page Borders
\pgbrdrhead Page border surrounds header.
\pgbrdrfoot Page border surrounds footer.
\pgbrdrt Page border top.
\pgbrdrb Page border bottom.
\pgbrdrl Page border left.
\pgbrdrr Page border right.
\brdrartN Page border art; the N argument is a value from 1-165 representing the number of the border.
\pgbrdroptN 8Page border measure from text. Always display in front option is set to off.

32Page border measure from edge of page. Always display in front option is set to on.

40Page border measure from edge of page. Always display in front option is set to off.

\pgbrdrsnap Align paragraph borders and table edges with page border.

The color, width, border style, and border spacing keywords for page borders are the same as the keywords defined for paragraph borders.

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   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.
\margmirsxn Switches margin definitions on left and right pages. Used in conjunction with \facingp.
\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.
\pgnbidia Page-number format is Abjad Jawaz if language is Arabic and Biblical Standard if language is Hebrew.
\pgnbidib Page-number format is Alif Ba Tah if language is Arabic and Non-standard Decimal if language is Hebrew.
\pgnchosung Korean numbering 1 (* chosung).
\pgncnum Circle numbering (*circlenum).
\pgndbnum Kanji numbering without the digit character.
\pgndbnumd Kanji numbering with the digit character.
\pgndbnumt Kanji numbering 3 (*dbnum3).
\pgndbnumk Kanji numbering 4 (*dbnum4).
\pgndecd Double-byte decimal numbering.
\pgnganada Korean numbering 2 (*ganada)
\pgngbnum Chinese numbering 1 (*gb1).
\pgngbnumd Chinese numbering 2 (*gb2).
\pgngbnuml Chinese numbering 3 (*gb3).
\pgngbnumk Chinese numbering 4 (*gb4).
\pgnzodiac Chinese Zodiac numbering 1 (*zodiac1).
\pgnzodiacd Chinese Zodiac numbering 2 (*zodiac2).
\pgnzodiacl Chinese Zodiac numbering 3 (*zodiac3).
\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).
Asian Controls
\horzsect Horizontal rendering.
\vertsect Vertical rendering.
Text Flow
\stextflow Section property for specifying text flow.

0Text flows left to right and top to bottom

1Text flows top to bottom and right to left, vertical

2Text flows left to right and bottom to top

3Text flows right to left and top to bottom

4Text flows left to right and top to bottom, vertical

5Text flows vertically, non-vertical font

Page Borders
\pgbrdrhead Page border surrounds header.
\pgbrdrfoot Page border surrounds footer.
\pgbrdrt Page border top.
\pgbrdrb Page border bottom.
\pgbrdrl Page border left.
\pgbrdrr Page border right.
\brdrartN Page border art; the N argument is a value from 1-165 representing the number of the border.
\pgbrdroptN 8Page border measure from text. Always display in front option is set to off.

32Page border measure from edge of page. Always display in front option is set to on.

40Page border measure from edge of page. Always display in front option is set to off.

\pgbrdrsnap Align paragraph borders and table edges with page border.
Line and Character Grid
\sectexpandN Character space basement (character pitch minus font size) N in device independent units (a device independent unit is 1/294912th of an inch).
\sectlinegridN Line grid, where N is the line pitch in 20ths of a point.
\sectdefaultcl Default state of section. Indicates \sectspecifycl and \sectspecifyl are not emitted.
\sectspecifycl Specify number of characters per line only.
\sectspecifyl Specify both number of characters per line and number of lines per page.
\sectspecifygenN Indicates that text should snap to the character grid. Note that the N is part of the keyword.

The color, width, border style, and border spacing keywords for page borders are the same as the keywords defined for paragraph borders.

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   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 and Section Formatting Properties in this RTF Specification.

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 the Table Definitions section of this RTF Specification. 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>+ <tbldef> \row) | (<tbldef> <cell>+ \row) | (<cell>+ <tbldef> \row)
<cell> (<nestrow>? <tbldef>?) & <textpar>+ \cell
<nestrow> <nestcell>+ '{\*'\nesttableprops <tbldef> \nestrow '}'
<nestcell> <textpar>+ \nestcell

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   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.
\hyphpar Toggles automatic hyphenation for the paragraph. Append 1 or nothing to toggle property on; append 0 to turn it off.
\intbl Paragraph is part of a table.
\itapN Paragraph nesting level, where 0 is the main document, 1 is a table cell, 2 is a nested table cell, 3 is a doubly nested table cell, and so forth. The default is 1.
\keep Keep paragraph intact.
\keepn Keep paragraph with the next paragraph.
\levelN N is the outline level of the paragraph.
\noline No line numbering.
\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
\outlinelevelN Outline level of paragraph. The N argument is a value from 0-8 representing the outline level of the paragraph. In the default case, no outline level is specified (same as body text).
\pagebb Break page before the paragraph.
\sbys Side-by-side paragraphs.
\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.
Alignment
\qc Centered.
\qj Justified.
\ql Left-aligned (the default).
\qr Right-aligned.
\qd Distributed.
Font Alignment
\faauto Font alignment the default setting for this is "Auto."
\fahang Font alignment —> Hanging.
\facenter Font alignment —> Center.
\faroman Font alignment —> Roman (default).
\favar Font alignment —> Upholding variable.
\fafixed Font alignment ? Upholding fixed.
Indentation
\fiN First-line indent (the default is 0).
\cufiN First-line indent in hundredths of a character unit; overrides \fiN although they should both be emitted with equivalent values.
\liN Left indent (the default is 0).
\linN Left indent for left-to-right paragraphs; right indent for right-to-left paragraphs (the default is 0). It defines space before the paragraph.
\culiN Left indent (space before) in hundredths of a character unit. Behaves like \linN and overrides \liN and \linN although they should all be emitted with equivalent values.
\riN Right indent (the default is 0).
\rinN Right indent for left-to-right paragraphs; left indent for right-to-left paragraphs (the default is 0). It defines space after the paragraph.
\curiN Right indent (space after) in hundredths of a character unit. Behaves like \rinN and overrides \riN and \rinN although they should all be emitted with equivalent values.
\adjustright Automatically adjust right indent when document grid is defined.
Spacing
\sbN Space before (the default is 0).
\saN Space after (the default is 0).
\sbautoN Auto spacing before:

0Space before determined by \sb.

1Space before is Auto (ignores \sb).

The default is 0.

\saautoN Auto spacing after:

0Space after determined by \sa.

1Space after is Auto (ignores \sa).

The default is 0.

\lisbN Space before in hundredths of a character unit. Overrides \sbN although they should both be emitted with equivalent values.
\lisaN Space after in hundredths of a character unit. Overrides \saN although they should both be emitted with equivalent values.
\slN Space between lines. If this control word is missing or if \sl0 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.

1Multiple line spacing, relative to "Single."

\nosnaplinegrid Disable snap line to grid.
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).
Asian Typography
\nocwrap No character wrapping.
\nowwrap No word wrapping.
\nooverflow No overflow period and comma.
\aspalpha Auto spacing between DBC and English.
\aspnum Auto spacing between DBC and numbers.
Pocket Word
\collapsed Paragraph property active in Outline view that specifies that the paragraph is collapsed (not viewed).

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 | \tlmdot | \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.
\tlmdot Leader middle dots.
\tlhyph Leader hyphens.
\tlul Leader underline.
\tlth Leader thick line.
\tleq Leader equal sign.

Bullets and Numbering

Word 6.0/95 RTF

To provide compatibility with existing RTF readers, all applications that can automatically format paragraphs with bullets or numbers 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 | \pnbidia | \pnbidib | \pnaiu | \pnaiud | \pnaiueo | \pnaiueod | \pnchosung | \pncnum | \pndbnum | \pndbnumd | \pndbnumk | \pndbnuml | \pndbnumt | \pndecd | \pnganada | \pnganada | \pngbnum | \pngbnumd | \pngbnumk | \pngbnuml | \pniroha | \pnirohad | \pnuldash | \pnuldashd | \pnuldashdd | \pnulhair | \pnulth | \pnulwave | \pnzodiac | \pnzodiacd | \pnzodiacl
<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 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).
\pnbidia Abjad Jawaz if language is Arabic and Biblical Standard if language is Hebrew.
\pnbidib Alif Ba Tah if language is Arabic and Non-standard Decimal if language is Hebrew.
\pnaiu 46 phonetic katakana characters in "aiueo" order (\*aiueo).
\pnaiud 46 phonetic double-byte katakana characters (\*aiueo\*dbchar).
\pnaiueo 46 phonetic Katakana characters in "aiueo" order (*aiueo).
\pnaiueod 46 phonetic double-byte Katakana characters (*aiueo*dbchar).
\pnchosung Korean numbering 2 (*chosung).
\pncnum 20 numbered list in circle (\*circlenum).
\pndbnum Kanji numbering without the digit character (\*dbnum1).
\pndbnumd Kanji numbering with the digit character (*dbnum2).
\pndbnumk Kanji numbering 4 (*dbnum4).
\pndbnuml Kanji numbering 3 (*dbnum3).
\pndbnumt Kanji numbering 3 (*dbnum3).
\pndecd Double-byte decimal numbering (\*arabic\*dbchar).
\pnganada Korean numbering 2 (*ganada).
\pnganada Korean numbering 1 (*ganada).
\pngbnum Chinese numbering 1 (*gb1).
\pngbnumd Chinese numbering 2 (*gb2).
\pngbnumk Chinese numbering 4 (*gb4).
\pngbnuml Chinese numbering 3 (*gb3).
\pniroha 46 phonetic katakana characters in "iroha" order (\*iroha).
\pnirohad 46 phonetic double-byte katakana characters (\*iroha\*dbchar).
\pnuldash Dashed underline.
\pnuldashd Dash-dotted underline.
\pnuldashdd Dash-dot-dotted underline.
\pnulhair Hairline underline.
\pnulth Thick underline.
\pnulwave Wave underline.
\pnzodiac Chinese Zodiac numbering 1 (*zodiac1).
\pnzodiacd Chinese Zodiac numbering 2 (*zodiac2).
\pnzodiacl Chinese Zodiac numbering 3 (*zodiac3).
\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   The limit is 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.

Word 97-2000 RTF

Each paragraph that is part of a list must contain some keyword to indicate which list it is in, and which level of the list it belongs to. Word 97-2000 also provides the flat-text representation of each number (in the \listtext destination); so, RTF readers that don't understand Word 97 numbering will get the paragraph number, together with appropriate character properties, inserted into their document at the beginning of the paragraph. Any RTF reader that does understand Word 97-2000 numbering should ignore the entire \listtext destination.

Control
Word
Meaning
\ls Should exactly match the ls for one of the list overrides in the List Override table.
\ilvl The 0-based level of the list to which the paragraph belongs. For all simple lists, this should always be 0 . For multilevel lists, it can be 0-8.
\listtext Contains the flat-text representation of the number, including character properties. Should be ignored by any reader that understands Word 97-2000 numbering. This is a destination control word.

Revision Marks for Paragraph Numbers

Paragraph numbers and ListNum fields track revision information with special properties applied to the paragraph mark and ListNum field, respectively. The special properties hold the "old" value of the number—the value it held when revision-mark tracking began. At display time, Word checks the number's current value and compares it with this "old" value to tell if it has changed. If the numbers are different, the old value shows up as deleted and the new value as inserted; if the numbers are the same, Word displays the new value normally, with no revision information. If there was no old value, the new value shows up as inserted. The following table lists the RTF specifications for these special properties.

Track Changes (Revision Mark) Properties for Paragraph Numbers
\pnrauthN Index into the revision table. The content of the Nth group in the revision table is considered to be the author of that revision.

Note   This keyword is used to indicate paragraph number revisions.

\pnrdateN Time of the revision. The 32-bit DTTM structure is emitted as a long integer.
\pnrnot Indicates if the paragraph number for the current paragraph is marked as "inserted."
\pnrxstN The keywords \pnrxst, \pnrrgb, \pnrpnbr, and \pnrnfc describe the "deleted number" text for the paragraph number. Their values are binary. Each of these keywords is represented as an array. The deleted number is written out with a \pnrstart keyword, followed by the array's keyword, followed by the first byte of the array, followed by the array's keyword, followed by the second byte of the array's keyword, followed by the array's keyword, followed by the third byte of the array's keyword, and so on. This sequence is followed by the \pnrstop keyword.

\pnrxst is a 32-item Unicode character array (double bytes for each character) with a length byte as the first number—it has the actual text of the number, with "level" place holders written out as digits from 0-8.


\pnrrgbN Nine-item array of indices of the level place holders in the \pnrxst array.
\pnrnfcN Nine-item array containing the number format codes of each level (using the same values as the \levelnfc keyword). The number format code is represented as a short integer.
\pnrpnbrN Nine-item array of the actual values of the number in each level. The number is represented as a long integer
\pnrstartN The \pnrxst, \pnrrgb, \pnrpnbr, and \pnrnfc arrays are each preceded by the \pnrstart keyword, whose argument is 0-3 depending on the array.
\pnrstopN The \pnrxst, \pnrrgb, \pnrpnbr, and \pnrnfc arrays are each terminated by the \pnrstop keyword, whose argument is the number of bytes written out in the array.

Example:

Take an example of the number "3-4b," which represents the third level of the list. The following table lists the values of each array.

Array Binary Comment
pnrxst \'05\'00-\'01\'02 The length of the string is 5. Then, first level (level 0), followed by a dash, followed by the second and third levels (levels 1 and 2), followed by a period.
pnrrgb \'01\'03\'04 The level placeholders are at indices 1, 3, and 4 in the string.
pnrnfc \'00\'00\'04 The nfc values are Arabic (0), Arabic (0), and lowercase letter (4).
pnrpnbr \'03\'04\'02 The numbers or 3, 4, and 2 (b)

Here is the RTF for this number:

\pnrstart0
\pnrxst0\pnrxst5\pnrxst0\pnrxst1\pnrxst0\pnrxst45
\pnrxst0\pnrxst2\pnrxst0\pnrxst3\pnrxst0\pnrxst46
\pnrstop12

\pnrstart1
\pnrrgb1\pnrrgb3\pnrrgb4
\pnrrgb0\pnrrgb0\pnrrgb0
\pnrrgb0\pnrrgb0\pnrrgb0
\pnrstop9

\pnrstart2
\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc4
\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0
\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0\pnrnfc0
\pnrstop18

\pnrstart3
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr3
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr4
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr2
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0 
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0
\pnrpnbr0\pnrpnbr0\pnrpnbr0\pnrpnbr0
\pnrstop36
Control
Word
Meaning
Track Changes (Revision Mark) Properties for ListNum Fields
\dfrauthN Index into the revision table. The content of the Nth group in the revision table is considered the author of that revision.

Note   This keyword is used to indicate the deleted value of a ListNum field.

\dfrdateN Time of the revision. The 32-bit DTTM structure is emitted as a long integer.
\dfrxst Unicode character array with a length byte.
\dfrstart The \dfrxst array is preceded by the \dfrstart keyword.
\dfrstop The \dfrxst array is terminated by the \dfrstop keyword.

Example:

Take the sample example from above. The deleted value is "3-4b." The RTF would then be

\dfrstart0\dfrxst0\dfrxst5\dfrxst0\dfrxst51\dfrxst0\dfrxst45\dfrxst0\dfrxst52
\dfrxst0\dfrxst66\dfrxst0\dfrxst46\dfrstop10

where 5 is the length byte, 51 is Unicode for "3", 45 is Unicode for "-", 52 is Unicode for "4", and so on.

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 | brdrinset | \brdrdashsm | \brdrdashd | \brdrdashdd | \brdrtriple | \brdrtnthsg | \brdrthtnsg | \brdrtnthtnsg | \brdrtnthmg | \brdrthtnmg | \brdrtnthtnmg | \brdrtnthlg | \brdrthtnlg | \brdrtnthtnlg | \brdrwavy | \brdrwavydb | \brdrdashdotstr | \brdremboss | \brdrengrave \brdroutset | \ brdrnone

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.
\brdrinset Inset border.
\brdrdashsm Dash border (small).
\brdrdashd Dot dash border.
\brdrdashdd Dot dot dash border.
\brdroutset Outset border.
\brdrtriple Triple border.
\brdrtnthsg Thick thin border (small).
\brdrthtnsg Thin thick border (small).
\brdrtnthtnsg Thin thick thin border (small).
\brdrtnthmg Thick thin border (medium).
\brdrthtnmg Thin thick border (medium).
\brdrtnthtnmg Thin thick thin border (medium).
\brdrtnthlg Thick thin border (large).
\brdrthtnlg Thin thick border (large).
\brdrtnthtnlg Thin thick thin border (large).
\brdrwavy Wavy border.
\brdrwavydb Double wavy border.
\brdrdashdotstr Striped border.
\brdremboss Emboss border.
\brdrengrave Engrave border.
\brdrframe Border resembles a "Frame."
\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 fill color, 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 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 re-specifying the controls.

Paragraph positioning has the following syntax:

<apoctl> <framesize> & <horzpos> & <vertpos> & <txtwrap> & <dropcap> & <txtflow> & \absnoovrlp?
<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? | \posyin? | \posyout? & \abslock?
<txtflow> \frmtxlrtb | \frmtxtbrl | \frmtxbtlr | \frmtxlrtbv | \frmtxtbrlv

Control
Word
Meaning
Frame Size
\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 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.
\posyin Positions the paragraph vertically inside the reference frame.
\posyout Positions the paragraph vertically outside the reference frame.
\abslockN Lock anchor:

0Do not lock anchor (default).

1Locks 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.
\overlay Text flows underneath frame.
Drop Caps
\dropcapliN Number of lines drop cap is to occupy. The range is 1 through 10.
\dropcaptN Type of drop cap:

1In-text drop cap

2Margin drop cap

Overlap
\absnoovrlpN Allow overlap with other frames or objects with similar wrapping:

0Allow overlap (default)

1Do not allow overlap.

Text Flow
\frmtxlrtb Frame box flows from left to right and top to bottom (default).
\frmtxtbrl Frame box flows right to left and top to bottom.
\frmtxbtlr Frame box flows left to right and bottom to top.
\frmtxlrtbv Frame box flows left to right and top to bottom, vertical.
\frmtxtbrlv Frame box flows top to bottom and right to left, vertical.

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 in the Positioned Objects and Frames sub-section of this RTF Specification). 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 in the Paragraph Text section of this RTF Specification.

<row> (<tbldef> <cell>+ <tbldef> \row) | (<tbldef> <cell>+ \row) | (<cell>+ <tbldef> \row)
<cell> (<nestrow>? <tbldef>?) & <textpar>+ \cell
<nestrow> <nestcell>+ '{\*'\nesttableprops <tbldef> \nestrow '}'
<nestcell> <textpar>+ \nestcell

Note that while Word 97 emitted the row properties (<tbldef>) at the beginning of the row, a reader should not assume that this is the case. Properties can be emitted at the end and in fact Word 2000 does this. To avoid breaking readers that might make the aforementioned assumption Word 2000 will write a copy at the beginning as well, so the properties of a typical row in a Word 2000 document are repeated at the beginning and at the end of the row. Note that for nested cells Word 2000 only writes the properties at the end.

A table definition has the following syntax:

<tbldef> \trowd \trgaph & <rowjust>? & <rowwrite>? & <rowtop>? & <rowbot>? & <rowleft>? & <rowright>? & <rowhor>? & <rowvert>? & <rowpos> ? & \trleft? & \trrh? \trhdr? & \trkeep? & <rowwidth>? & <rowinv>? & \trautofit? & <rowspc>? & <rowpad>? & \taprtl?<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>
<rowpos> <rowhorzpos> & <rowvertpos> & <rowwrap> & \tabsnoovrlp?
<rowhorzpos> <rowhframe>& <rowhdist>
<rowvertpos> <rowvframe>& <rowvdist>
<rowwrap> \tdfrmtxtLeft? & \tdfrmtxtRight? & \tdfrmtxtTop? & \tdfrmtxtBottom?
<rowhframe> \phmrg? | \phpg? | \phcol?
<rowhdist> \tposx? | \tposnegx? | \tposxc? | \tposxi? | \tposxo? | \tposxl? | \tposxr?
<rowvframe> \tpvmrg? | \tpvpg? | \tpvpara?
<rowvdist> \tposy? | \tposnegy? | \tposyt? | \tposyil? | \tposyb? | \tposyc? | tposyin | tposyout
<rowwidth> \trftsWidth & \trwWidth?
<rowinv> (\trftsWidthB & \trwWidthB?)? & (\trftsWidthA & \trwWidthA?)?
<rowspc> (\trspdl & \trspdfl?)? & (\trspdt & \trspdft?)? & (\trspdb & \trspdfb?)? & (\trspdr & \trspdfr?)?
<rowpad> (\trpaddl & \trpaddfl?)? & (\trpaddt & \trpaddft?)? & (\trpaddb & \trpaddfb?)? & (\trpaddr & \trpaddfr?)?
<celldef> (\clmgf? & \clmrg? & \clvmgf? & \clvmrg? <celldgu>? & <celldgl>? & <cellalign>? & <celltop>? & <cellleft>? & <cellbot>? & <cellright>? & <cellshad>? & <cellflow>? & clFitText? & clNoWrap? & <cellwidth>? & <cellpad>?) \cellx
<celldgu> \cldglu <brdr>
<celldgl> \cldgll <brdr>
<cellalign> \clvertalt | \clvertalc | \clvertalb
<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
<cellflow> \cltxlrtb | \cltxtbrl | \cltxbtlr | \cltxlrtbv | \cltxtbrlv
<cellwidth> \clftsWidth & \clwWidth?
<cellpad> (\clpadl & \clpadfl?)? & (\clpadt & \clpadft?)? & (\clpadb & \clpadfb?)? & (\clpadr & \clpadfr?)?

Note   For <tbldef>, 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.
\row Denotes the end of a row.
\tcelld Sets table cell defaults.
\nestcell Denotes the end of a nested cell.
\nestrow Denotes the end of a nested row.
\nesttableprops Defines the properties of a nested table. This is a destination control word.
\nonesttables Contains text for readers that do not understand nested tables. This destination should be ignored by readers that support nested tables.
\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.
\cell Denotes the end of a table cell.
\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.
\clvmgf The first cell in a range of table cells to be vertically merged.
\clvmrg Contents of the table cell are vertically merged with those of the preceding cell.
Row Formatting
\taprtl Table direction is right to left.
\trautofitN AutoFit:

0No AutoFit (default)

1AutoFit is on for the row. Overridden by \clwWidthN and \trwWidthN in any table row.

\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 to be off unless the control word is present.
\trkeepfollow Keep row in the same page as the following row.
\trleftN Position in twips of the leftmost edge of the table with respect to the left edge of its column.
\trqc Centers a table row with respect to its containing column.
\trql Left-justifies a table row with respect to its containing column.
\trqr Right-justifies a table row with respect to its containing column.
\trrhN Height of a table row in twips. When 0, 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.
\trpaddbN Default bottom cell margin or padding for the row.
\trpaddlN Default left cell margin or padding for the row.
\trpaddrN Default right cell margin or padding for the row.
\trpaddtN Default top cell margin or padding for the row.
\trpaddfbN Units for \ trpaddbN:

0Null.  Ignore \ trpaddbN in favor of \trgaph (Word 97 style padding).

3Twips

\trpaddflN Units for \ trpaddlN:

0Null.  Ignore \ trpaddlN in favor of \trgaph (Word 97 style padding).

3Twips

\trpaddfrN Units for \ trpaddrN:

0Null.  Ignore \ trpaddrN in favor of \trgaph (Word 97 style padding).

3Twips

\trpaddftN Units for \ trpaddtN:

0Null.  Ignore \ trpaddtN in favor of \trgaph (Word 97 style padding).

3Twips

\trspdlN Default left cell spacing for the row. The total horizontal spacing between adjacent cells is equal to the sum of \trspdlN from the rightmost cell and \trspdrN, from the leftmost cell both of which will have the same value when written by Word.
\trspdtN Default top cell spacing for the row. The total horizontal spacing between adjacent cells is equal to the sum of \trspdtN from the bottom cell and \trspdbN, from the top cell both of which will have the same value when written by Word.
\trspdbN Default bottom cell spacing for the row. The total horizontal spacing between adjacent cells is equal to the sum of \trspdtN from the bottom cell and \trspdbN, from the top cell both of which will have the same value when written by Word.
\trspdrN Default right cell spacing for the row. The total horizontal spacing between adjacent cells is equal to the sum of \trspdlN from the rightmost cell and \trspdrN, from the leftmost cell both of which will have the same value when written by Word.
\trspdflN Units for \trspdlN:

0Null.  Ignore \trspdlN.

3Twips

\trspdftN Units for \trspdtN:

0Null.  Ignore \trspdtN.

3Twips

\trspdfbN Units for \trspdbN:

0Null.  Ignore \trspdbN.

3Twips

\trspdfrN Units for \trspdrN:

0Null.  Ignore \trspdrN.

3Twips

\trwWidthN Preferred row width. Overrides \trautofitN.
\trftsWidthN Units for \clwWidthN:

0Null.  Ignore \trwWidth in favor of \cellx (Word 97 style of determining cell and row width)

1Auto. No preferred row width, ignores \clwWidthN if present; \clwWidthN will generally not be written, giving precedence to row defaults and autofit.

2Percentage (in 50ths of a percent)

3Twips

\trwWidthBN Width of invisible cell at the beginning of the row. Used only in cases where rows have different widths.
\trftsWidthBN Units for \clwWidthBN:

0Null.  No invisible cell before.

1Auto, ignores \clwWidthBN if present; \clwWidthBN will generally not be written.

2Percentage (in 50ths of a percent)

3Twips

\trwWidthAN Width of invisible cell at the end of the row. Used only in cases where rows have different widths.
\trftsWidthAN Units for \clwWidthBN:

0Null. No invisible cell after.

1Auto, ignores \clwWidthBN if present; \clwWidthBN will generally not be written.

2Percentage (in 50ths of a percent)

3Twips

Cell Formatting
\clFitText Fit text in cell, compressing each paragraph to the width of the cell.
\clNoWrap Do not wrap text for the cell. Only has an effect if the table cell does not have a preferred \clwWidthN, which overrides \trautofitN.
\clpadlN Left cell margin or padding. Overrides \trpaddlN.
\clpadtN Top cell margin or padding. Overrides \trpaddtN.
\clpadbN Bottom cell margin or padding. Overrides \trpaddbN.
\clpadrN Right cell margin or padding. Overrides \trpaddrN.
\clpadflN Units for \clpadlN:

0Null.  Ignore \clpadl in favor of \trgaph (Word 97 style cell padding).

3Twips

\clpadftN Units for \clpadtN:

0Null.  Ignore \clpadt in favor of \trgaph (Word 97 style cell padding).

3Twips

\clpadfbN Units for \clpadbN:

0Null.  Ignore \clpadb in favor of \trgaph (Word 97 style cell padding).

3Twips

\clpadfrN Units for \clpadrN:

0Null.  Ignore \clpadr in favor of \trgaph (Word 97 style cell padding).

3Twips

\clwWidthN Preferred cell width. Overrides \trautofitN.
\clftsWidthN Units for \clwWidthN:

0Null.  Ignore \clwWidth in favor of \cellx (Word 97 style of determining cell and row width)

1Auto, no preferred cell width, ignores \clwWidthN if present; \clwWidthN will generally not be written, giving precedence to row defaults.

2Percentage (in 50ths of a percent)

3Twips

Positioned wrapped tables: the following properties must be the same for all rows in the table
\tdfrmtxtLeftN Distance in twips, between the left of the table and surrounding text (the default is 0).
\tdfrmtxtRightN Distance in twips, between the right of the table and surrounding text (the default is 0).
\tdfrmtxtTopN Distance in twips, between the top of the table and surrounding text (the default is 0).
\tdfrmtxtBottomN Distance in twips, between the bottom of the table and surrounding text (the default is 0).
\tabsnoovrlp Do not allow the table to overlap with other tables or shapes with similar wrapping not contained within it.
\tphcol Use the column as the horizontal reference frame. This is the default if no horizontal table positioning information is given.
\tphmrg Use the margin as the horizontal reference frame.
\tphpg Use the page as the horizontal reference frame.
\tposnegxN Same as \tposx but allows arbitrary negative values.
\tposnegyN Same as \tposy but allows arbitrary negative values.
\tposxN Positions the table N twips from the left edge of the horizontal reference frame.
\tposxc Centers the table within the horizontal reference frame.
\tposxi Positions the table inside the horizontal reference frame.
\tposxl Positions the table at the left of the horizontal reference frame.
\tposxo Positions the table outside the horizontal reference frame.
\tposxr Positions the table at the right of the horizontal reference frame.
\tposy Positions the table N twips from the top edge of the vertical reference frame.
\tposyb Positions the table at the bottom of the vertical reference frame.
\tposyc Centers the table within the vertical reference frame
\tposyil Positions the table to be in-line.
\tposyin Positions the table inside within the vertical reference frame.
\tposyout Positions the table outside within the vertical reference frame.
\tposyt Positions the table at the top of the vertical reference frame.
\tpvmrg Positions the table vertically relative to the top margin. This is the default if no vertical table positioning information is given.
\tpvpara Positions the table vertically relative to the top left corner of the next unframed paragraph in the stream.
\tpvpg Positions the table vertically relative to the top of the page.
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.
\cldglu Diagonal line (top left to bottom right).
\cldgll Diagonal line (top right to bottom left).
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 together 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.
Cell Vertical Text Alignment
\clvertalt Text is top-aligned in cell (the default).
\clvertalc Text is centered vertically in cell.
\clvertalb Text is bottom-aligned in cell.
Cell Text Flow
\cltxlrtb Text in a cell flows from left to right and top to bottom (default).
\cltxtbrl Text in a cell flows right to left and top to bottom.
\cltxbtlr Text in a cell flows left to right and bottom to top.
\cltxlrtbv Text in a cell flows left to right and top to bottom, vertical.
\cltxtbrlv Text in a cell flows top to bottom and right to left, vertical.

The following is a thorough example of Word 2000 table RTF:

This is an example of what a complex table looks in RTF. The BMP showing the table's look and position is followed by the corresponding RTF, followed by a piece-by-piece analysis of the RTF.

The illustration in Figure 1 shows a freely positioned Word table, with two cells at an offset. Inside the topmost cell there is a nested table. The table has green borders, yellow shading, a small amount of spacing between cells, and also inner cell margins or padding.

Figure 1. Freely positioned Word table, nested with two cells at offset

Table RTF—This is the RTF for this table as emitted by Word 2000. Word 2000 also emits RTF that older readers (such as previous versions of Word) can understand, so new features degrade nicely.

\trowd \trgaph115\trleft388\trbrdrt\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh\brdrs\brdrw15\brdrcf11 \trbrdrv
\brdrs\brdrw15\brdrcf11 \tphmrg\tposxc\tposyc\tdfrmtxtLeft187
\tdfrmtxtRight187\trftsWidth1\trftsWidthB3\trwWidthB504\trftsWidthA3
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3\trspdft3\trspdfb3
\trspdfr3\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3 \clvertalc\clbrdrt
\brdrs\brdrw15\brdrcf11 \clbrdrl\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17
\cltxlrtb\clftsWidth3\clwWidth4644 \cellx5074\pard\plain 

\qc \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc\dxfrtext187\dfrmtxtx187
\dfrmtxty0\aspalpha\aspnum\faauto\adjustright\rin0\lin0 \fs24
\lang1033\langfe2052\loch\af0\hich\af0\dbch\af17\cgrid
\langnp1033\langfenp2052 {\hich\af0\dbch\af17\loch\f0 CELL ONE

\par }\pard \qc \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc\dxfrtext187\dfrmtxtx187
\dfrmtxty0\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap2 
{\hich\af0\dbch\af17\loch\f0 NESTED TABLE\nestcell{\nonesttables

\par }}\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto
\adjustright\rin0\lin0\itap2 {{\*\nesttableprops\trowd 
\trgaph108\trleft8\trbrdrt
\brdrs\brdrw15\brdrcf11 \trbrdrl\brdrs\brdrw15\brdrcf11 \trbrdrb\brdrs\brdrw15\brdrcf11 \trbrdrr

\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv
\brdrs\brdrw15\brdrcf11 \trftsWidth1\trautofit1\trpaddl108
\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt
\brdrs\brdrw15\brdrcf11 \clbrdrl\brdrs\brdrw15\brdrcf11 \clbrdrb

\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \cltxlrtb\clftsWidth3\clwWidth2340 \cellx2348\nestrow}
{\nonesttables

\par }}\trowd \trgaph115\trleft388\trbrdrt
\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv\brdrs\brdrw15\brdrcf11 

\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trwWidthB504\trftsWidthA3
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3\trspdft3
\trspdfb3\trspdfr3\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3 
\clvertalc\clbrdrt

\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4644 \cellx5074\pard 
\qc \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc\dxfrtext187\dfrmtxtx187
\dfrmtxty0\aspalpha\aspnum\faauto\adjustright\rin0\lin0 
{\cell }\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto
\adjustright\rin0\lin0 {\trowd \trgaph115\trleft388\trbrdrt

\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv
\brdrs\brdrw15\brdrcf11 

\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trwWidthB504\trftsWidthA3
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3\trspdft3
\trspdfb3\trspdfr3\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3 
\clvertalc\clbrdrt

\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4644 \cellx5074\row }
\trowd \trgaph115\trleft-158\trbrdrt\brdrs\brdrw15\brdrcf11 \trbrdrl

\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv\brdrs\brdrw15\brdrcf11 

\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trftsWidthA3\trwWidthA900
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3
\trspdft3\trspdfb3\trspdfr3\trpaddl115\trpaddr115\trpaddfl3
\trpaddfr3 \clvertalt\clbrdrt

\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4248 \cellx4132\pard 

\ql \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc
\dxfrtext187\dfrmtxtx187\dfrmtxty0\aspalpha\aspnum
\faauto\adjustright\rin0\lin0 {\hich\af0\dbch\af17\loch\f0 CELL TWO\cell }\pard 
\ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0 {

\trowd \trgaph115\trleft-158\trbrdrt\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv\brdrs\brdrw15\brdrcf11 

\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trftsWidthA3\trwWidthA900
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14
\trspdfl3\trspdft3\trspdfb3\trspdfr3
\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt

\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4248 \cellx4132\row }

Table RTF Explained. This is an analysis of the above RTF. It has been restructured for ease of explanation. All text in red are comments. The topmost cell is cell 1 (inside row 1). The bottom cell is cell 2 (inside row 2).

Begin table row defaults for row 1
\trowd

\trgaph115
\trleft388

Row borders
\trbrdrt\brdrs\brdrw15\brdrcf11 \trbrdrl\brdrs\brdrw15\brdrcf11 
\trbrdrb\brdrs\brdrw15\brdrcf11 \trbrdrr\brdrs\brdrw15\brdrcf11 
\trbrdrh\brdrs\brdrw15\brdrcf11 \trbrdrv\brdrs\brdrw15\brdrcf11 

Absolute positioning of the table.  
All rows should have the same positioning.
\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187

Width of invisible cell before cell one (to simulate offset)
\trftsWidth1\trftsWidthB3\trwWidthB504\trftsWidthA3

Autofit is on
\trautofit1

Default cell spacing for the row
\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3\trspdft3\trspdfb3\trspdfr3\
trpaddl115\trpaddr115\trpaddfl3\trpaddfr3 

Cell 1 definition begins

Vertical alignment of contents
\clvertalc

Cell Borders
\clbrdrt\brdrs\brdrw15\brdrcf11 \clbrdrl\brdrs\brdrw15\brdrcf11 
\clbrdrb\brdrs\brdrw15\brdrcf11 \clbrdrr\brdrs\brdrw15\brdrcf11 

Cell shading
\clcbpat17

Cell text flow
\cltxlrtb

Cell width, using new properties and old ones
\clftsWidth3\clwWidth4644 \cellx5074

Text for cell 1 begins here.  
Includes paragraph absolute positioning equivalent to the table absolute positioning above 
so that old readers get it right.
\pard\plain \qc \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc
\dxfrtext187\dfrmtxtx187\dfrmtxty0\aspalpha\aspnum\faauto
\adjustright\rin0\lin0 \fs24\lang1033\langfe2052\loch\af0\hich
\af0\dbch\af17\cgrid\langnp1033\langfenp2052 
{\hich\af0\dbch\af17\loch\f0 CELL ONE
\par }

Begin definition of nested table inside cell 1
\pard \qc \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc
\dxfrtext187\dfrmtxtx187\dfrmtxty0\aspalpha\aspnum\faauto
\adjustright\rin0\lin0

Notice itap is set to 2, indicating second nesting level.
\itap2 

Nested cell ends with a \nestcell 
and is followed by a paragraph mark inside a \nonesttables destination 
which is only read by readers that do not understand nested tables.  
This way the text in the nested table is in its own paragraph.
{\hich\af0\dbch\af17\loch\f0 NESTED TABLE\nestcell{\nonesttables
\par }}\pard \ql \li0\ri0\widctlpar\intbl
\aspalpha\aspnum\faauto\adjustright\rin0\lin0\itap2 

Nested table properties occur after the text for the nested cell.
{{\*\nesttableprops\trowd \trgaph108\trleft8\trbrdrt
\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv
\brdrs\brdrw15\brdrcf11 \trftsWidth1\trautofit1
\trpaddl108\trpaddr108\trpaddfl3\trpaddfr3 \clvertalt\clbrdrt
\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \cltxlrtb\clftsWidth3\clwWidth2340 \cellx2348\nestrow}
{\nonesttables
\par }}
End of nested table properties.

Set the default for the row again after nested table!  
We're still in the first row
 and this repeats what was written in the beginning of the row.  
Defaults of the table are reset and the cell is closed with a \cell.
\trowd \trgaph115\trleft388\trbrdrt
\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv
\brdrs\brdrw15\brdrcf11 
\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trwWidthB504\trftsWidthA3
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3\trspdft3
\trspdfb3\trspdfr3\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3 
\clvertalc\clbrdrt
\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4644 \cellx5074\pard 
\qc \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc
\dxfrtext187\dfrmtxtx187\dfrmtxty0\aspalpha\aspnum\faauto\adjustright
\rin0\lin0 {\cell }\pard \ql \li0\ri0\widctlpar
\intbl\aspalpha\aspnum\faauto\adjustright\rin0\lin0
This is the end of the table cell.

Now the row ends repeating the defaults of the row at the end of it!
{\trowd \trgaph115\trleft388\trbrdrt
\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr\brdrs\brdrw15\brdrcf11 \trbrdrh\brdrs\brdrw15\brdrcf11 \trbrdrv
\brdrs\brdrw15\brdrcf11 
\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trwWidthB504\trftsWidthA3
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3
\trspdft3\trspdfb3\trspdfr3\trpaddl115\trpaddr115\trpaddfl3
\trpaddfr3 \clvertalc\clbrdrt
\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4644 \cellx5074\row }
END OF ROW 1

Row 2 begins here and is structured similarly.

Row defaults
\trowd \trgaph115\trleft-158\trbrdrt\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr
\brdrs\brdrw15\brdrcf11 \trbrdrh
\brdrs\brdrw15\brdrcf11 \trbrdrv\brdrs\brdrw15\brdrcf11

Absolute positioning for the table row, matching the previous one.
\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trftsWidthA3\trwWidthA900
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3\trspdft3
\trspdfb3\trspdfr3\trpaddl115\trpaddr115\trpaddfl3\trpaddfr3 

Cell 2 properties
\clvertalt\clbrdrt
\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4248 \cellx4132

Cell 2 text
\pard 
\ql \li0\ri0\widctlpar\intbl\phmrg\posxc\posyc
\dxfrtext187\dfrmtxtx187\dfrmtxty0\aspalpha\aspnum
\faauto\adjustright\rin0\lin0 
{\hich\af0\dbch\af17\loch\f0 CELL TWO\cell }
\pard \ql \li0\ri0\widctlpar\intbl\aspalpha\aspnum
\faauto\adjustright\rin0\lin0 
End cell 2 text

Now the row ends repeating the defaults of the row at the end of it!
{\trowd \trgaph115\trleft-158\trbrdrt
\brdrs\brdrw15\brdrcf11 \trbrdrl
\brdrs\brdrw15\brdrcf11 \trbrdrb
\brdrs\brdrw15\brdrcf11 \trbrdrr\brdrs\brdrw15\brdrcf11 \trbrdrh\brdrs\brdrw15\brdrcf11 \trbrdrv
\brdrs\brdrw15\brdrcf11 
\tphmrg\tposxc\tposyc\tdfrmtxtLeft187\tdfrmtxtRight187
\trftsWidth1\trftsWidthB3\trftsWidthA3\trwWidthA900
\trautofit1\trspdl14\trspdt14\trspdb14\trspdr14\trspdfl3
\trspdft3\trspdfb3\trspdfr3\trpaddl115\trpaddr115\trpaddfl3
\trpaddfr3 \clvertalt\clbrdrt
\brdrs\brdrw15\brdrcf11 \clbrdrl
\brdrs\brdrw15\brdrcf11 \clbrdrb
\brdrs\brdrw15\brdrcf11 \clbrdrr
\brdrs\brdrw15\brdrcf11 \clcbpat17\cltxlrtb
\clftsWidth3\clwWidth4248 \cellx4132\row }
END OF ROW TWO

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>

Font (Character) Formatting Properties

These control words (described as <chrfmt> in the syntax description) change font (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 . For example, \b turns on bold, while \b0 turns off bold.

The font (character)-formatting control words are listed in the following table:

Control
Word
Meaning
\plain Reset font (character) formatting properties to a default value defined by the application (for example, bold, underline and italic are disabled; font size is reset to 12 pt). The associated font (character) formatting properties (described in the section Associated Character Properties of this RTF Specification) are also reset.
\animtextN Animated text properties.

1Las Vegas Lights

2Blinking background

3Sparkle text

4Marching black ants

5Marching red ants

6Shimmer

\accnone No accent characters (over dot / over comma).
\accdot Over dot accent.
\acccomma Over comma accent.
\b Bold.*
\caps All capitals.*
\cbN Background color (the default is 0).
\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.
\cfN Foreground color (the default is 0).
\charscalexN Character scaling value. The N argument is a value representing a percentage (the default is 100).
\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.
\cgridN Character grid.
\g Destination related to character grids.
\gcw Grid column width.
\gridtbl Destination keyword related to character grids.
\deleted Marks the text as deletion revision marked.*
\dnN Subscript position in half-points (the default is 6).
\embo Emboss.
\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.
\fittextN Fit the text in the current group in N twips. When N is set to -1 (\fittext-1) it indicates a continuation of the previous \fittextN run. In other words {\fittext1000 Fit this} {\fittext-1 text} fits the string "Fit this text" in 1000 twips.
\fN Font number. N refers to an entry in the font table.
\fsN Font size in half-points (the default is 24).
\i Italic.*
\impr Engrave.
\kerningN Point size (in half-points) above which to kern character pairs. \kerning0 turns off kerning.
\langfeN 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 \deflangfeN in the document properties.
\langfenpN 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 \deflangfeN in the document properties. Usually follows \langfeN
\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.
\langnpN 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. It is identical to \langN, but needed when \noproof is written together with \lang1024 in order to preserve the language of the text that is not being checked for spelling or grammar. Usually follows \langN
\ltrch The character data following this control word will be treated as a left-to-right run (the default).
\rtlch The character data following this control word will be treated as a right-to-left run.
\noproof Do not check spelling or grammar for text in the group. Serves the function of \lang1024. usually \lang1024 is emitted with it for backwards compatibility with old readers.
\nosupersub Turns off superscripting or subscripting.
\nosectexpand Disable character space basement.
\outl Outline.*
\rtlch The character data following this control word will be treated as a right-to-left run.
\scaps Small capitals.*
\shad Shadow.*
\strike Strikethrough.*
\striked1 Double strikethrough. \striked0 turns it off.
\sub Subscripts text and shrinks point size according to font information.
\super Superscripts text and shrinks point size according to font information.
\ul Continuous underline. \ul0 turns off all underlining.
\ulcN Underline color
\uld Dotted underline.
\uldash Dash underline.
\uldashd Dash dot underline.
\uldashdd Dash dot dot underline.
\uldb Double underline.
\ulhwave Heavy wave underline
\ulldash Long dash underline
\ulnone Stops all underlining.
\ulth Thick underline
\ulthd Thick dotted underline
\ulthdash Thick dash underline
\ulthdashd Thick dash dot underline
\ulthdashdd Thick dash dot dot underline
\ulthldash Thick long dash underline
\ululdbwave Double wave underline
\ulw Word underline.
\ulwave Wave underline.
\upN Superscript position in half-points (the default is 6).
\v Hidden text.*
\webhidden Indicates that the text in the group is hidden in Word 2000's Web View and will not be emitted upon saving as web page.

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 ID (hexadecimal) ID (decimal)
Afrikaans 0x0436 1078
Albanian 0x041c 1052
Arabic 0x0401 1025
Arabic Algeria 0x1401 5121
Arabic Bahrain 0x3c01 15361
Arabic Egypt 0x0c01 3073
Arabic General 0x0001 1
Arabic Iraq 0x0801 2049
Arabic Jordan 0x2c01 11265
Arabic Kuwait 0x3401 13313
Arabic Lebanon 0x3001 12289
Arabic Libya 0x1001 4097
Arabic Morocco 0x1801 6145
Arabic Oman 0x2001 8193
Arabic Qatar 0x4001 16385
Arabic Syria 0x2801 10241
Arabic Tunisia 0x1c01 7169
Arabic U.A.E. 0x3801 14337
Arabic Yemen 0x2401 9217
Armenian 0x042b 1067
Assamese 0x044d 1101
Azeri Cyrillic 0x082c 2092
Azeri Latin 0x042c 1068
Basque 0x042d 1069
Bengali 0x0445 1093
Bosnia Herzegovina 0x101a 4122
Bulgarian 0x0402 1026
Burmese 0x0455 1109
Byelorussian 0x0423 1059
Catalan 0x0403 1027
Chinese China 0x0804 2052
Chinese General 0x0004 4
Chinese Hong Kong 0x0c04 3076
Chinese Macao 0x0c04 3076
Chinese Singapore 0x1004 4100
Chinese Taiwan 0x0404 1028
Croatian 0x041a 1050
Czech 0x0405 1029
Danish 0x0406 1030
Dutch Belgium 0x0813 2067
Dutch Standard 0x0413 1043
English Australia 0x0c09 3081
English Belize 0x2809 10249
English British 0x0809 2057
English Canada 0x1009 4105
English Caribbean 0x2409 9225
English General 0x0009 9
English Ireland 0x1809 6153
English Jamaica 0x2009 8201
English New Zealand 0x1409 5129
English Philippines 0x3409 13321
English South Africa 0x1c09 7177
English Trinidad 0x2c09 11273
English United States 0x0409 1033
English Zimbabwe 0x0409 1033
Estonian 0x0425 1061
Faerose 0x0438 1080
Farsi 0x0429 1065
Finnish 0x040b 1035
French 0x040c 1036
French Belgium 0x080c 2060
French Cameroon 0x2c0c 11276
French Canada 0x0c0c 3084
French Cote d'Ivoire 0x300c 12300
French Luxembourg 0x140c 5132
French Mali 0x340c 13324
French Monaco 0x180c 6156
French Reunion 0x200c 8204
French Senegal 0x280c 10252
French Swiss 0x100c 4108
French West Indies 0x1c0c 7180
French Zaire 0x240c 9228
Frisian 0x0462 1122
Gaelic 0x043c 1084
Gaelic Ireland 0x083c 2108
Galician 0x0456 1110
Georgian 0x0437 1079
German 0x0407 1031
German Austrian 0x0c07 3079
German Liechtenstein 0x1407 5127
German Luxembourg 0x1007 4103
German Switzerland 0x0807 2055
Greek 0x0408 1032
Gujarati 0x0447 1095
Hebrew 0x040d 1037
Hindi 0x0439 1081
Hungarian 0x040e 1038
Icelandic 0x040f 1039
Indonesian 0x0421 1057
Italian 0x0410 1040
Italian Switzerland 0x0810 2064
Japanese 0x0411 1041
Kannada 0x044b 1099
Kashmiri 0x0460 1120
Kashmiri India 0x0860 2144
Kazakh 0x043f 1087
Khmer 0x0453 1107
Kirghiz 0x0440 1088
Konkani 0x0457 1111
Korean 0x0412 1042
Korean Johab 0x0812 2066
Lao 0x0454 1108
Latvian 0x0426 1062
Lithuanian 0x0427 1063
Lithuanian Classic 0x0827 2087
Macedonian 0x043e 1086
Malay 0x043e 1086
Malay Brunei Darussalam 0x083e 2110
Malayalam 0x044c 1100
Maltese 0x043a 1082
Manipuri 0x0458 1112
Marathi 0x044e 1102
Mongolian 0x0450 1104
Nepali 0x0461 1121
Nepali India 0x0861 2145
Norwegian Bokmal 0x0414 1044
Norwegian Nynorsk 0x0814 2068
Oriya 0x0448 1096
Polish 0x0415 1045
Portuguese Brazil 0x0416 1046
Portuguese Iberian 0x0816 2070
Punjabi 0x0446 1094
Rhaeto-Romanic 0x0417 1047
Romanian 0x0418 1048
Romanian Moldova 0x0818 2072
Russian 0x0419 1049
Russian Moldova 0x0819 2073
Sami Lappish 0x043b 1083
Sanskrit 0x044f 1103
Serbian Cyrillic 0x0c1a 3098
Serbian Latin 0x081a 2074
Sindhi 0x0459 1113
Slovak 0x041b 1051
Slovenian 0x0424 1060
Sorbian 0x042e 1070
Spanish Argentina 0x2c0a 11274
Spanish Bolivia 0x400a 16394
Spanish Chile 0x340a 13322
Spanish Colombia 0x240a 9226
Spanish Costa Rica 0x140a 5130
Spanish Dominican Republic 0x1c0a 7178
Spanish Ecuador 0x300a 12298
Spanish El Salvador 0x440a 17418
Spanish Guatemala 0x100a 4106
Spanish Honduras 0x480a 18442
Spanish Mexico 0x080a 2058
Spanish Modern 0x0c0a 3082
Spanish Nicaragua 0x4c0a 19466
Spanish Panama 0x180a 6154
Spanish Paraguay 0x3c0a 15370
Spanish Peru 0x280a 10250
Spanish Puerto Rico 0x500a 20490
Spanish Traditional 0x040a 1034
Spanish Uruguay 0x380a 14346
Spanish Venezuela 0x200a 8202
Sutu 0x0430 1072
Swahili 0x0441 1089
Swedish 0x041d 1053
Swedish Finland 0x081d 2077
Tajik 0x0428 1064
Tamil 0x0449 1097
Tatar 0x0444 1092
Telugu 0x044a 1098
Thai 0x041e 1054
Tibetan 0x0451 1105
Tsonga 0x0431 1073
Tswana 0x0432 1074
Turkish 0x041f 1055
Turkmen 0x0442 1090
Ukranian 0x0422 1058
Urdu 0x0420 1056
Urdu India 0x0820 2080
Uzbek Cyrillic 0x0843 2115
Uzbek Latin 0x0443 1091
Venda 0x0433 1075
Vietnamese 0x042a 1066
Welsh 0x0452 1106
Xhosa 0x0434 1076
Yiddish 0x043d 1085
Zulu 0x0435 1077

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).

Character Borders and Shading

Character shading has the following syntax.

<shading> (\chshdng | <pat>) \chcfpat? \chcbpat?
<pat> \chbghoriz | \chbgvert | \chbgfdiag | \chbgbdiag | \chbgcross | \chbgdcross | \chbgdkhoriz | \chbgdkvert | \chbgdkfdiag | \chbgdkbdiag | \chbgdkcross | \chbgdkdcross

Control Word Meaning
\chbrdr Character border (border always appears on all sides).
\chshdngN Character shading. The N argument is a value representing the shading of the text in hundredths of a percent.
\chcfpatN N is the color of the background pattern, specified as an index into the document's color table.
\chcbpatN N is the fill color, specified as an index into the document's color table.
\chbghoriz Specifies a horizontal background pattern for the text.
\chbgvert Specifies a vertical background pattern for the text.
\chbgfdiag Specifies a forward diagonal background pattern for the text (\\\\).
\chbgbdiag Specifies a backward diagonal background pattern for the text (////).
\chbgcross Specifies a cross background pattern for the text.
\chbgdcross Specifies a diagonal cross background pattern for the text.
\chbgdkhoriz Specifies a dark horizontal background pattern for the text.
\chbgdkvert Specifies a dark vertical background pattern for the text.
\chbgdkfdiag Specifies a dark forward diagonal background pattern for the text (\\\\).
\chbgdkbdiag Specifies a dark backward diagonal background pattern for the text (////).
\chbgdkcross Specifies a dark cross background pattern for the text.
\chbgdkdcross Specifies a dark diagonal cross background pattern for the text.

The color, width, and border style keywords for character borders are the same as the keywords for paragraph borders.

Control Word Meaning
Track Changes (Revision Mark) Properties
\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.
\crauthN Index into the revision table. The content of the Nth group in the revision table is considered to be the author of that revision.

Note   This keyword is used to indicate formatting revisions, such as bold, italic, and so on.

\crdateN Time of the revision. The 32-bit DTTM structure is emitted as a long integer.
\revauthdelN Index into the revision table. The content of the Nth group in the revision table is considered to be the author of that deletion.
\revdttmdelN Time of the deletion. The 32-bit DTTM structure is emitted as a long integer.

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. Although RTF defines a broad variety of associated character properties, any implementation may choose not to 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>
<atext> <losbrun> | <hisbrun> | <dbrun>
<losbrun> \hich \af & <aprops> \dbch \af & <aprops> \loch <ptext>
<hisbrun> \loch \af & <aprops> \dbch \af & <aprops> \hich <ptext>
<dbrun> \loch \af & <aprops> \hich \af & <aprops> \dbch <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.

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 in the standard language table in the Character Text section of this RTF Specification.)
\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).
\loch The text consists of single-byte low-ANSI (0x00–0x7F) characters.
\hich The text consists of single-byte high-ANSI (0x80–0xFF) characters.
\dbch The text consists of double-byte characters.

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 as an index of the color table.

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, 1997).
\chdpa Current date in abbreviated format (for example, Thu, Oct 28, 1997).
\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.
\nestcell End of nested table cell.
\row End of table row.
\nestrow End of nested 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).
\lbrN Text wrapping break of type:

0Default line break (just like \line)

1Clear left

2Clear right

3Clear all

Whenever an \lbr is emitted, a \line will be emitted for the benefit of old readers.

\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. Some old RTF writers use the construct '{\emspace  }' (with two spaces before the closing brace) to trick readers unaware of \emspace into parsing a regular space. A reader should interpret this as an \emspace and a regular space.
\enspace Nonbreaking space equal to width of character "n" in current font. Some old RTF writers use the construct '{\enspace  }' (with two spaces before the closing brace) to trick readers unaware of \enspace into parsing a regular space. A correct reader should interpret this as an \enspace and a regular space.
\qmspace One-quarter em space.
\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.
\zwbo Zero-width break opportunity. Used to insert break opportunity between two characters.
\zwnbo Zero-width nonbreak opportunity. Used to remove break opportunity between two characters.
\zwj Zero-width joiner. This is used for ligating (joining) characters.
\zwnj Zero-width nonjoiner. This is used for unligating a character.

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; otherwise, 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.)

A tab (character value 9) should be treated as a \tab control word. Not all RTF readers understand this; therefore, an RTF writer should always emit the control word for tabs.

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 is "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. The \pict keyword is preceded by \*\shppict destination control keyword as described in the following example. A picture destination has the following syntax:

<pict> '{' \pict (<brdr>? & <shading>? & <picttype> & <pictsize> & <metafileinfo>?) <data> '}'
<picttype> | \emfblip | \pngblip | \jpegblip | \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
\emfblip Source of the picture is an EMF (enhanced metafile).
\pngblip Source of the picture is a PNG.
\jpegblip Source of the picture is a JPEG.
\shppict Specifies a Word 97-2000 picture. This is a destination control word.
\nonshppict Specifies that Word 97-2000 has written a {\pict destination that it will not read on input. This keyword is for compatibility with other readers.
\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 described in the \pmmetafile table below.
\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.


Example:

{\*\shppict {\pict \emfblip ….. }}{\nonshppict {\pict ….}}

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 because 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. The N argument is a long integer.
\pichN yExt field if the picture is a Windows metafile; picture height in pixels if the picture is a bitmap or from QuickDraw. The N argument is a long integer.
\picwgoalN Desired width of the picture in twips. The N argument is a long integer.
\pichgoalN Desired height of the picture in twips. The N argument is a long integer.
\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.
\picprop Indicates that shape properties are applied to an inline picture. This is a destination control word.
\defshp Indicates that the inline picture is a WordArt shape.
\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.
\blipupiN N represents units per inch on a picture (only certain image types need or output this)
\blipuid XXXXX Used as: {\*\blipuid XXXXX} where XXXX is a 16-byte identification number for the image.
\bliptagN A mostly unique identifier for a picture, where N is a long integer value.

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 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 | objhtml | objocx
<objmod> \linkself? & \objlock? | \objupdate?
<objclass> '{\*' \objclass #PCDATA '}'
<objname> '{\*' \objname #PCDATA '}'
<objtime> '{\*' \objtime <time> '}'
<rsltmod> \rsltmerge? & <rslttype>?
<rslttype> \rsltrtf | \rslttxt | \rsltpict | \rsltbmp | \rslthtml
<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.
\objhtml An object type of HTML control.
\objocx An object type of OLE control.
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.
\rslthtml Forces the result to be HTML, 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
Meaning
\objattph Object attachment placeholder. Used in the RTF stream when Word is started 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 the Bookmarks section of this RTF Specification). 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

Word 6.0/95 RTF

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 (\dptxlrtb | \dptxtbrl | \dptxbtlr | \dptxlrtbv | \dptxtbrlv)? \dptxbxmar '{' \dptxbxtext <para>+'}'
<dpellipse> \dpellipse
<dparc> \dparc \dparcflipx? \dparcflipy?
<dppolyline> \dppolyline (\dppolygon)? \dppolycount <dppt>+
<dppt> \dpptx \dppty
<dphead> \dpx \dpy \dpxsize \dpysize

Note   In <dpgroup>, the number of <dpinfo>s is equal to the argument of \dpcount, whereas 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.
\dptxlrtb Text box flows from left to right and top to bottom (default).
\dptxtbrl Text box flows from right to left and top to bottom.
\dptxbtlr Text box flows from left to right and bottom to top.
\dptxlrtbv Text box flows from left to right and top to bottom, vertically.
\dptxtbrlv Text box flows from top to bottom and right to left, vertically.
\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:

1Small

2Medium

3Large

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

1Small

2Medium

3Large

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

1Small

2Medium

3Large

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

1Small

2Medium

3Large

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 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

Word 97-2000 RTF for Drawing Objects (Shapes)

Basic Format

The basic format for drawing objects in RTF is as follows

{ \shp   ........  { \*\shpinst  { \spp  { \sn .......... }  { \sp .............. }  }  }
            { \shprslt   ............... }   }

The first destination (\shp) is always present. This control word groups everything related to a shape together. Following the destination change, comes basic information regarding the shape. The following keywords with values can appear in any order after the "{ \shp"  control word.

Control
Word
Meaning
Shape Keywords
\shpleftN The value N is a measurement in twips. Specifies position of shape from the left of the anchor.
\shptopN The value N is a measurement in twips. Specifies position of shape from top of the anchor.
\shpbottomN The value N is a measurement in twips. Specifies position of shape from bottom of the anchor.
\shprightN The value N is a measurement in twips. Specifies position of shape from right of the anchor.
\shplidN A number that is unique to each shape. This keyword is primarily used for linked text boxes. The value N is a long integer.
\shpzN Describes z-order of shape. It starts at 0 for the back most shape and proceed to N for the top most shape. The shapes that appear inside of the header document will have a separate z-order as compared to the z-order of the shapes in the main document. For instance the back-most shape in the header will have z-order number 0, and the back-most main-document shape will also have z-order number 0.
\shpfhdrN 0 if the shape is in the main document. 1 if the shape is in the header document.
\shpbxpage The shape is positioned relative to the page in the x (horizontal) direction.
\shpbxmargin The shape is positioned relative to the margin in the x (horizontal) direction.
\shpbxcolumn The shape is positioned relative to the column in the x (horizontal) direction.
\shpbxignore Ignore \shpbxpage, \shpbxmargin, and \shpbxcolumn, in favor of \posrelh. The ignored properties will be written for backwards compatibility with older readers that do not understand \posrelh.
\shpbypage The shape is positioned relative to the page in the y (vertical) direction.
\shpbymargin The shape is positioned relative to the margin in the y (vertical) direction.
\shpbypara The shape is positioned relative to the paragraph in the y (vertical) direction.
\shpbyignore Ignore \shpbypage, \shpbymargin, and \shpbxpara, in favor of \posrelh. The ignored properties will be written for backwards compatibility with older readers that do not understand \posrelh.
\shpwrN Describes the type of wrap for the shape.

1Wrap around top and bottom of shape (no text allowed beside shape)

2Wrap around shape

3None (wrap as if shape isn't present)

4Wrap tightly around shape

5Wrap text through shape

\shpwrkN Wrap on side (for types 2 and 4 for \shpwrN ).

0Wrap both sides of shape

1Wrap left side only

2Wrap right side only

3Wrap only on largest side

\shpfblwtxtN Describes relative z-ordering.

0Text is below shape

1Shape is below text

\shplockanchor Lock anchor for shape.
\shptxt Text for a shape. The text must come after all the other properties for the shape (inside the \shpinst destination) in the following format:
{ \shptxt  Any Valid RTF for the current textbox }

Note   For linked text boxes, the first text box of the linked set has the entire story, so all following text boxes will not have a \shptxt field.

\shprslt This is where the Word 6.0/95 drawn object RTF can be placed.
\shpgrp Specifies a group shape. The parameters following this keyword are the same as those following \shp. The order of the shapes inside a group is from bottom to top in z-order.

Inside of a \shpgrp, no { \shprslt .... } fields would be generated (that is, only the root-level shape can have a \shprslt field (this field describes the entire group). For example:

{ \shpgrp  ....... { \shp ..... (and all sub-items as usual) }
              { \shp ......(and all sub-items as usual) }

Note   A { \shpgrp ...... } can be substituted for a { \shp ..... } at any place (to accomplish groups inside of groups).


With the exception of \shplid, these do not apply for shapes that are within a group. For more information about groups, see the "Introduction" section of this RTF Specification.

Control
Word
Meaning
\background Specifies the document background. This is a destination keyword. It contains the { \shp keyword and all the shape properties.

Drawing Object Properties

The { \shp ............ control word is followed by { \*\shpinst.

The bulk of a shape is defined as a series of properties. Following the { \*\shpinst   is a list of all the properties of a shape each in the following format:

{ \sp  { \sn PropertyName } { \sv PropertyValueInformation } }

The control word for the drawing object property is \sp. Each property has a pair of name (\sn) and value (\sv) control words placed in the shape property group. For example, the vertical flip property is represented as:

{\sp{\sn fFlipV}{\sv 1}}

Here, the name of the property is fFlipV and the value is 1, which indicates True. All shape properties follow this basic format. Only properties that have been explicitly set for a shape are written out in RTF format. Other properties assume the default values (a property may be set to the default value explicitly).

The following table describes all the names of properties for drawing objects, together with the type of their corresponding value.

Property Type of
Value
Meaning Default
Position
posh    Horizontal alignment:

1Left

2Center

3Right

4Inside

5Outside

This overrides the absolute position specified in \shpleftN and \shprightN.

Absolute position as specified in \shpleftN and \shprightN.
posrelh    Position horizontally relative to:

0Margin

1Page

2Column

3Character

2, if posh is present
posv    Vertical alignment:

1Center

2Column

3Bottom

4Inside

5Outside

This overrides the absolute position specified in \shptopN and \shpbottomN..

Absolute position as specified in \shptopN and \shpbottomN..
posrelv    Position horizontally relative to:

0Margin

1Page

2Paragraph

3Line

2 is the assumed value if the property is not explicitly written.

2, if posv is present
fLayoutInCell Boolean Allow shape to anchor and position inside table cells. FALSE
fAllowOverlap Boolean Allow shape to overlap other shapes with the following exception:

A shape with None wrapping (\shpwr3) can always overlap an object with other types of wrapping and vice-versa.

TRUE
fChangePage Boolean Anchor may change page FALSE

Object Type
fIsBullet Boolean Indicates whether a picture was inserted as a picture bullet. FALSE.
Rotation Angle Rotation of the shape. 0
fFlipV Boolean Vertical flip, applied after the rotation. FALSE
fFlipH Boolean Horizontal flip, applied after the rotation. FALSE
ShapeType    See below for values. 0 indicates user-drawn freeforms and polygons.   
wzName String Shape name (only set through Visual Basic® for Applications). NULL
pWrapPolygonVertices Array Points of the text wrap polygon. NULL
dxWrapDistLeft EMU Left wrapping distance from text. 114305
dyWrapDistTop EMU Top wrapping distance from text. 0
dxWrapDistRight EMU Right wrapping distance from text. 114305
dyWrapDistBottom EMU Bottom wrapping distance from text. 0
fBehindDocument Boolean Place the shape behind text. FALSE
fIsButton Boolean A button shape (i.e., clicking performs an action). Set for shapes with attached hyperlinks or macros. FALSE
fHidden Boolean Do not display or print (only set through Visual Basic for Applications). FALSE
pihlShape Hyperlink The hyperlink in the shape. NULL
fArrowheadsOK Boolean Allow arrowheads FALSE
fBackground Boolean This is the background shape. FALSE
fDeleteAttachedObject Boolean Delete object attached to shape FALSE
fEditedWrap Boolean The shape's wrap polygon has been edited FALSE
fHidden Boolean Do not display FALSE
fHitTestFill Boolean Hit test fill TRUE
fHitTestLine Boolean Hit test lines TRUE
fInitiator Boolean Set by the solver NULL
fNoFillHitTest Boolean Hit test a shape as though filled FALSE
fNoHitTestPicture Boolean Do not hit test the picture FALSE
fNoLineDrawDash Boolean Draw a dashed line if no line FALSE
fOleIcon Boolean For OLE objects, whether the object is in icon form FALSE
fOnDblClickNotify Boolean Notify client on a double click FALSE
fOneD Boolean 1D adjustment FALSE
fPreferRelativeResize Boolean For UI only. Prefer relative resizing. FALSE
fPrint Boolean Print this shape TRUE
hspMaster Shape ID master shape NULL
hspNext Shape ID ID of the next shape (used by Word for linked textboxes) NULL
xLimo Long integer defines the limo stretch point   
yLimo Long integer defines the limo stretch point   

Lock
fLockRotation Boolean Lock rotation. FALSE
fLockAspectRatio Boolean Lock aspect ratio. FALSE
fLockAgainstSelect Boolean Lock against selection. FALSE
fLockCropping Boolean Lock against cropping FALSE
fLockVerticies Boolean Lock against edit mode. FALSE
fLockText Boolean Lock text against editing FALSE
fLockAdjustHandles Boolean Lock adjust handles FALSE
fLockAgainstGrouping Boolean Lock against grouping FALSE
fLockShapeType Boolean Lock the shape type (don't allow Change Shape) FALSE

Text Box
dxTextLeft EMU Left internal margin of the text box. 91440
dyTextTop EMU Top internal margin of the text box. 45720
dxTextRight EMU Right internal margin of the text box. 91440
dyTextBottom EMU Bottom internal margin of the text box. 45720
WrapText    Wrap text at shape margins:

0Square

1Tight

2None

3Top Bottom

4Through

0
anchorText    Text anchor point:

0Top

1Middle

2Bottom

3Top Centered

4Middle Centered

5Bottom Centered

6Bottom Centered Baseline

0
txflTextFlow    Text flow:

0Horizontal non-ASCII font

1Top to bottom ASCII font

2Bottom to top non-ASCII font

3Top to bottom non-ASCII font

4Horizontal ASCII font

0
cdirFont Direction Font rotation:

0Right

1Down

2Left

3Up

0
fAutoTextMargin Boolean Use host's margin calculations FALSE
scaleText Long Integer Text zoom/scale 0
lTxid Long integer id for the text, value determined by the host 0
fRotateText Boolean Rotate text with shape FALSE
fSelectText Boolean TRUE if single click selects text, FALSE if two clicks TRUE
fFitShapeToText Boolean Size shape to fit text size FALSE
fFitTextToShape Boolean Size text to fit shape size FALSE

WordArt Effect
gtextUNICODE String Unicode text string. NULL
gtextAlign    Alignment on curve:

0Stretch each line of text to fit width

1Center text on width

2Left justify

3Right justify

4Spread letters out to fit width

5Spread words out to fit width

1
gtextSize Fixed Default point size. 2359296
gtextSpacing Fixed Adjust the spacing between characters (1.0 is normal). 65536
gtextFont String Font name. NULL
fGtext Boolean True if the text effect properties (gtext*) are used.

False if these properties are ignored.

FALSE
gtextFVertical Boolean If an @ font is available use it; otherwise, rotate individual characters 90 degrees counter-clockwise. FALSE
gtextFKern Boolean If the font supports character pair kerning, use it. FALSE
gtextFTight Boolean Adjust the spacing between characters rather than the character advance by the gtextSpacingratio. FALSE
gtextFStretch Boolean Stretch the text to fit shape. FALSE
gtextFShrinkFit Boolean When laying out the characters, consider the glyph bounding box rather than the nominal font character bounds. FALSE
gtextFBestFit Boolean Scale text laid out on a path to fit the path. FALSE
gtextFNormalize Boolean Stretch individual character heights independently to fit. FALSE
gtextFDxMeasure Boolean When laying out characters, measure distances along the x-axis rather than along the path. FALSE
gtextFBold Boolean Bold font (if available). FALSE
gtextFItalic Boolean Italic font (if available). FALSE
gtextFUnderline Boolean Underline font (if available). FALSE
gtextFShadow Boolean Shadow font (if available). FALSE
gtextFSmallcaps Boolean Small caps font (if available). FALSE
gtextFStrikethrough Boolean Strikethrough font (if available). FALSE
fGtextOK Boolean Text effect (WordArt) supported FALSE
gtextFReverseRows Boolean Reverse row order FALSE
gtextRTF String RTF text string NULL

Picture
cropFromTop Fixed Top cropping percentage. 0
cropFromBottom Fixed Bottom cropping percentage. 0
cropFromLeft Fixed Left cropping percentage. 0
cropFromRight Fixed Right cropping percentage. 0
pib Picture Binary picture data. NULL
pibName String Picture file name for link to file pictures. NULL
pibFlags    Flags for linked pictures:

0No links (default)

10Link to file; save with document

14Link to file; do not save picture with document

0
pictureTransparent Color Transparent color. 0
pictureContrast Fixed Contrast setting. 65536
PictureBrightness Fixed Brightness setting. 0
pictureGamma Fixed Gamma correction setting. 0
pictureGray Boolean Display grayscale. 0
pictureBiLevel Boolean Display bi-level. 0
pibPrint Picture Blip to display when printing NULL
pibPrintFlags    Flags:

0No links (default)

10Link to file; save with document

14Link to file; do not save picture with document

0
pibPrintName String Blip file name NULL
pictureActive Boolean Server is active (OLE objects only) FALSE
pictureDblCrMod Color Modification used if shape has double shadow no change
pictureFillCrMod Color Modification for BW views undefined
pictureId Long integer Host-defined ID for OLE objects (usually a pointer) 0
pictureLineCrMod Color Modification for BW views undefined

Geometry
geoLeft Long integer Left edge of the bounds of a user-drawn shape. 0
geoTop Long integer Top edge of the bounds of a user-drawn shape. 0
geoRight Long integer Right edge of the bounds of a user-drawn shape. 21600
geoBottom Long integer Bottom edge of the bounds of a user-drawn shape. 21600
pVerticies Array The points of the shape. NULL
pSegmentInfo Array The segment information. NULL
pFragments Array Fragments are optional additional parts to the shape. They allow the shape contain multiple paths and parts. This property lists the fragments of the shape NULL
pGuides Array Guide formulas—an array of elements that correspond to the Vector Markup Language (VML) <formulas> element, each array entry being a single <f> entry. NULL
pInscribe Array The inscribed rectangle definition. NULL
pAdjustHandles Array The adjust handle definitions—an array of values corresponding to the VML <handles> element. NULL
adjustValue Integer First adjust value from an adjust handle. The interpretation varies with the shape type. Adjust values alter the geometry of the shape in smart ways. 0
adjust2Value Long integer Second adjust value. 0
adjust3Value Long integer Third adjust value. 0
adjust4Value Long integer Fourth adjust value. 0
adjust5Value Long integer Fifth adjust value. 0
adjust6Value Long integer Sixth adjust value. 0
adjust7Value Long integer Seventh adjust value. 0
adjust8Value Long integer Eighth adjust value. 0
adjust9Value Long integer Ninth adjust value. 0
adjust10Value Long integer Tenth adjust value. 0

Grouped Shapes
fRelChangePage Boolean Anchor may change page FALSE
fRelFlipH Boolean Vertical flip for object inside a group, relative to its container and applied after the rotation. FALSE
fRelFlipV Boolean Horizontal flip for object inside a group, relative to its container and applied after the rotation. FALSE
groupBottom Twips Defines the height of the group rectangle. Note that it does not necessarily indicate position on the page. The difference between groupBottom and groupTop should match the dimensions specified by \shptop and \shpbottom. 20000
groupLeft Twips Defines the width of the group rectangle. Note that it does not necessarily indicate position on the page. The difference between groupLeft and groupRight should match the dimensions specified by \shpleft and \shpright. 0
groupRight Twips Defines the width of the group rectangle. Note that it does not necessarily indicate position on the page. The difference between groupLeft and groupRight should match the dimensions specified by \shpleft and \shpright. 20000
groupTop Twips Defines the height of the group rectangle. Note that it does not necessarily indicate position on the page. The difference between groupBottom and groupTop should match the dimensions specified by \shptop and \shpbottom. 0
relBottom. Twips Defines the bottom of a shape within its parent shape (used for shapes in a group). The measurement is relative to the position of the parent group or drawing. 1
relLeft Twips Defines the left of a shape within its parent shape (used for shapes in a group). The measurement is relative to the position of the parent group or drawing. 0
relRight. Twips Defines the right of a shape within its parent shape (used for shapes in a group). The measurement is relative to the position of the parent group or drawing. 1
relRotation Fixed Represents the information stored in the site of a shape that defines the size and location of the shape in the parent group or drawing. The coordinates are relative to the position of the parent group or drawing. The units are relative to the m_rcg of the parent. 0
relTop Twips Defines the top of a shape within its parent shape (used for shapes in a group). The measurement is relative to the position of the parent group or drawing. 0
lidRegroup Long integer Regroup ID 0

Fill
fillType Fill type Type of fill:

0A solid color

1A pattern (bitmap)

2A texture (pattern with its own color map)

3A picture centered in the shape

4Shade from start to end points

5Shade from bounding rectangle to end point

6Shade from shape outline to end point

7Shade using the fillAngle

0
fillColor Color Foreground color. White
fillOpacity Fixed Opacity. 65536
fillBackColor Color Background color. White
fillBackOpacity Fixed Opacity for shades only. 65536
fillBlip Picture Pattern/texture picture for the fill. NULL
fillBlipName String Picture file name for custom fills. NULL
fillblipflags    Flags for fills:

0No links (default)

10Link to file; save with document

14Link to file; do not save picture with document

0
fillWidth EMU The pattern or tile will be expanded to approximately this size. 0
fillHeight EMU The pattern or tile will be expanded to approximately this size. 0
fillAngle Fixed Fade angle number of degrees. 0
fillFocus    Linear shaded fill focus percent. 0
fillToLeft Fixed The fillToLeft,  fillToTop, fillToRight, and fillToBottom values define the "focus" rectangle for concentric shapes; they are specified as a fraction of the outer rectangle of the shade. 0
fillToTop Fixed See fillToLeft definition. 0
fillToRight Fixed See fillToLeft definition. 0
fillToBottom Fixed See fillToLeft definition. 0
fillShadeColors Array Custom or preset color ramps for graduated fills on shapes. NULL
fillOriginX Fixed When a textured fill is used, the texture may be aligned to with shape (fFillShape)—if this is done, the default alignment is to the top left. The values

FillOriginY

FillShapeOriginX

fillShapeOriginY

allow an arbitrary position in the texture (relative to the top-left proportion of the texture's height and width) to be aligned on an arbitrary position on the shape (relative to the top-left proportion of the width and height of the bounding box).

Note that all these values are fixed point fractions of the relevant width or height.

0
fillOriginY Fixed See fillOriginX definition. 0
fillShapeOriginX Fixed See fillOriginX definition. 0
fillShapeOriginY Fixed See fillOriginX definition. 0
fFilled Boolean The shape is filled. TRUE
fillCrMod Color Modification for BW views undefined
fillDztype Measurement type Measurement type:

0Default size, ignore the values

1Values are in EMUs

2Values are in pixels

3Values are fixed fractions of shape size

4Aspect ratio is fixed

5EMUs, fixed aspect ratio

6Pixels, fixed aspect ratio

7Proportion of shape, fixed aspect ratio

8Aspect ratio is fixed, favor larger size

9EMUs, fixed aspect ratio

10Pixels, fixed aspect ratio

11Proportion of shape, fixed aspect ratio

0
fillRectBottom EMU For shaded fills, use the specified rectangle instead of the shape's bounding rect to define how large the fade is going to be. 0
fillRectLeft EMU For shaded fills, use the specified rectangle instead of the shape's bounding rect to define how large the fade is going to be. 0
fillRectRight EMU For shaded fills, use the specified rectangle instead of the shape's bounding rect to define how large the fade is going to be. 0
fillRectTop EMU For shaded fills, use the specified rectangle instead of the shape's bounding rect to define how large the fade is going to be. 0
fillShadeColors Array Preset array of colors NULL
fillShadePreset Long integer Special shades 0
fillShadeType Shade Type Type of shading, if a shaded (gradient) fill. Default
fillShape Boolean Register pattern on shape TRUE
fillUseRect Boolean Use the large rectangle FALSE
fillWidth EMU How big to make a metafile texture. 0
fFillOK Boolean OK to fill the shape through the UI or VBA? TRUE
fFillShadeShapeOK Boolean If true a concentric shade (repeatedly drawing the shape at decreasing size) is permitted for this path, if not then it is not (normally because the repeated drawing will overwrite the shape boundary.) FALSE

Line
lineColor Color Color of the line. Black
lineBackColor Color Background color of the pattern. White
lineType Line type Type of line:

0Solid fill with the line color

1Patterned fill with the lineFillBlip

2Textured fill with the lineFillBlip

3Picture fill with the lineFillBlip

0
lineFillBlip Picture Pattern for the line. NULL
lineFillBlipFlags   Flags for patterned lines:

0No links (default)

10Link to file; save with document

14Link to file; do not save picture with document

0
lineFillWidth EMU Width of the pattern 0
lineFillHeight EMU Height of the pattern 0
lineWidth EMU Line width 9525 (0.75pt)
lineStyle Line Style Line style:

0Single line (of width lineWidth)

1Double lines of equal width

2Double lines, one thick, one thin

3Double lines, reverse order

4Three lines, thin, thick, thin

0
lineDashing Dash Style Dashing:

0Solid

1Dash (Windows)

2Dot (Windows)

3Dash dot (Windows)

4Dash dot dot (Windows)

6Dot

7Dash

8Long dash

9Dash dot

10Long dash dot

11Long dash dot dot

0
lineStartArrowhead Arrow Type Start arrow type:

0Nothing

1Arrow

2Stealth arrow

3Diamond

4Oval

6Open arrow

7Chevron arrow

8Double chevron arrow

0
lineEndArrowhead Arrow Type End arrow type (same values as for lineStartArrowhead). 0
lineStartArrowWidth Arrow Width Start arrow width:

0Narrow

1Medium

2Wide

1
lineStartArrowLength Arrow Length Start arrow length:

0Short

1Medium

2Long

1
lineEndArrowWidth Arrow Width End arrow width (same values as for lineStartArrowWidth). 1
lineEndArrowLength Arrow Length End arrow length (same values as for lineStartArrowLength). 1
fLine Boolean Has a line. TRUE
lineBackColor Color Background color white
lineCrMod Color Modification for BW views undefined
lineDashStyle Array Line dash style NULL
lineEndCapStyle Line Cap Style Line Cap Style for shape:

0Round

1Square

2Flat

2
lineFillBlipName String Blip file name NULL
lineFillDztype Measurement type How to interpret fillWidth/Height numbers:

0Default size, ignore the values

1Values are in EMUs

2Values are in pixels

3Values are fixed fractions of shape size

4Aspect ratio is fixed

5EMUs, fixed aspect ratio

6Pixels, fixed aspect ratio

7Proportion of shape, fixed aspect ratio

8Aspect ratio is fixed, favor larger size

9EMUs, fixed aspect ratio

10Pixels, fixed aspect ratio

11Proportion of shape, fixed aspect ratio

0
lineFillHeight EMU How big to make a metafile texture. 0
lineJoinStyle Line join style Line join style for shape:

0Join edges by a straight line

1Extend edges until they join

2Draw an arc between the two edges

2
lineMiterLimit fixed Ratio of width 524288
fLineOK Boolean Line style may be set TRUE

Shadow
shadowType   Type of shadow:

0Offset shadow

1Double offset shadow

2Rich perspective shadow (cast relative to shape)

3Rich perspective shadow (cast in shape space)

4Perspective shadow cast in drawing space

6Emboss or engrave

0
shadowColor Color Foreground color. RGB(128,128,128)
shadowHighlight Color Embossed color. RGB(203,203,203)
shadowOpacity Fixed Opacity of the shadow. 65536
shadowOffsetX EMU Shadow offset toward the right. 0
shadowOffsetY EMU Shadow offset toward the bottom. 0
shadowSecondOffsetX EMU Double shadow offset toward the right. 25400
shadowSecondOffsetY EMU Double shadow offset toward the bottom. 25400
shadowScaleXToX Fixed The shadowScaleXToX to shadowWeight define a 3x2 transform matrix that is applied to the shape to generate the shadow. 65536
shadowScaleYToX Fixed See definition for shadowScaleXToX. 0
shadowScaleXToY Fixed See definition for shadowScaleXToX. 0
shadowScaleYToY Fixed See definition for shadowScaleXToX. 65536
shadowPerspectiveX Fixed See definition for shadowScaleXToX. 0
shadowPerspectiveY Fixed See definition for shadowScaleXToX. 0
shadowWeight Fixed See definition for shadowScaleXToX. 32768
shadowOriginX Fixed Define the position of the origin relative to the center of the shape— this position is determined based on a proportion of the rotated shape width and height. The shape will be rotated and then positioned such that the point is at (0,0) before the transformation is applied. 0
ShadowOriginY Fixed See the definition for shadowOriginX. 0
fShadow Boolean Switches the shadow on or off. FALSE
shadowCrMod Color Modification for BW views undefined
fshadowObscured Boolean Excel5-style shadow FALSE
fShadowOK Boolean Shadow may be set TRUE

3-D Effects
c3DSpecularAmt Fixed Specular amount for the material. 0
c3DDiffuseAmt Fixed Diffusion amount for the material. 65536
c3DShininess Long integer Shininess of the material. 5
c3DEdgeThickness EMU Specular edge thickness. 12700
c3DExtrudeForward EMU Extrusion amount forward. 0
c3DExtrudeBackward EMU Extrusion amount backward. 457200
c3DExtrusionColor Color Color of the extrusion.  
f3D Boolean True if shape has a three-dimensional (3D) effect, False if it does not. FALSE
fc3DMetallic Boolean True if shape uses metallic specularity, False if it does not. FALSE
fc3DUseExtrusionColor Boolean Extrusion color is set explicitly. FALSE
fc3DLightFace Boolean Light the face of the shape. TRUE
c3DYRotationAngle Angle Degrees about y-axis.

If fc3DconstrainRotation (a Boolean property that defaults to True) is True the rotation is restricted to x-y rotation and the final rotation results from first rotating by c3DYRotationAngle degrees about the y-axis and then by c3DXRotationAngle degrees about the z-axis.

If fc3DconstrainRotation is False, the final rotation results from a single rotation of c3DrotationAngle about the axis specified by c3DrotationAxisX, c3DrotationAxisY, and c3DrotationAxisZ.

0
c3DXRotationAngle Angle Degrees about x-axis. 0
c3DRotationAxisX Long integer These specify the rotation axis. Only their relative magnitudes matter. 100
c3DRotationAxisY Long integer See the c3DYRotationAxisX definition. 0
c3DRotationAxisZ Long integer See the c3DYRotationAxisX definition. 0
c3DRotationAngle Angle The rotation about the axis (defined above in the c3DRotationAxisX, Y, and Z parameter sections) 0
fC3DRotationCenterAuto Boolean If fC3DRotationCenterAuto is True the rotation will be about the center of the 3-D bounding cube of the 3-D group; otherwise, the rotation center will be about c3DRotationCenterX, c3DRotationCenterY, and c3DRotationCenterZ. FALSE
c3DRotationCenterX Fixed Rotation center (X).

The X and Y values are a 16.16 fraction of the geometry width and height, with (0,0) being at the center of the geometry. The Z value must be in absolute units (EMUs).

0
c3DRotationCenterY Fixed Rotation center (Y).

If fC3DRotationCenterAuto is True the rotation will be about the center of the 3-D bounding cube of the 3-D group; otherwise, the rotation center will be about c3DRotationCenterX, c3DRotationCenterY, and c3DRotationCenterZ.

The X values and Y values are a fraction of the geometry width and height, with (0,0) being at the center of the geometry. The Z value is in absolute units.

0
c3DRotationCenterZ EMU See c3DRotationCenterY above. 0
c3DRenderMode Long Integer 0Render with full detail

1Render as a wire frame

2Render a bounding cube

 
c3DXViewpoint EMU X view point. 1250000
c3DYViewpoint EMU Y view point. -1250000
c3DZViewpoint EMU Z view distance. 9000000
c3DOriginX Fixed The following c3DOriginY and c3DSkewAngle values define the origin relative to which the viewpoint origin is measured.

These values are 16.16 numbers that specify the position of the origin within the shape bounding box as multiples of the width and height of that bounding box and relative to the center (that is, they are displaced from the center). When these values are applied, the actual transformed shape path is used rather than the shape geometry (compare with the shadow and perspective values, which necessarily work on the geometry bounding box—not the actual points). This means that a shape that extends outside the geometry bounding box (such as a text effect) is handled "correctly" for the calculation of the 3-D origin.

32768
c3DOriginY Fixed See the definition for c3DOriginX. -32768
c3DSkewAngle Fixed Skew angle. -8847360
c3DSkewAmount Long integer Percentage skew amount. 50
c3DAmbientIntensity Fixed Ambient intensity should be low (0 to .1) to avoid washed out appearance. 20000
c3DKeyX Long integer Key light source direction. Values may be any number; only their relative magnitudes matter. 50000
c3DKeyY Long integer See c3DKeyX definition above. 0
c3DKeyZ Long integer See c3DKeyX definition above. 10000
c3DKeyIntensity Fixed Fixed point intensity. Theoretical maximum is 1, but can be higher. 38000
c3DFillX Long integer Fill light source direction; only their relative magnitudes matter. This direction defines a second light source arbitrarily called the "fill light." Generally this will be positioned 90-180 degrees away from the key light and very roughly in front of the scene to fill in any harsh shadows. This fill will be dim compared to the first light source. Theoretically, it should be non-harsh, but harsh fill lighting looks better sometimes. -50000
c3DFillY Long integer See c3DfillX definition. 0
c3DFillZ Long integer See c3DfillX definition. 10000
c3DFillIntensity Fixed Theoretical maximum is 1, but can be higher. 38000
fc3DParallel Boolean True if the fill has parallel projection, False if it does not. If fc3DParallel is True, the fc3DKeyHarsh and fc3DFillHarsh properties determine the parallel projection used. A skew amount of 0 means the projection is orthographic. TRUE
fc3DKeyHarsh Boolean True if key lighting is harsh, False if it is not. TRUE
fc3DFillHarsh Boolean True if fill lighting harsh, False if it is not. FALSE
c3DCrMod Color Modification for BW views undefined
c3DTolerance Fixed 3D tolerance 30000
f3DOK Boolean 3D may be set TRUE
fc3DConstrainRotation Boolean If True the rotation is restricted to x-y rotation and the final rotation results from first rotating by c3DYRotation degrees about the y-axis and then by c3DXRotation degrees about the z-axis. If not then the final rotation results from a single rotation of c3DRotationAngle about the axis specified by c3DRotationAxisX,Y,andZ. TRUE

Perspective
perspectiveOffsetX Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 0
perspectiveOffsetY Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 0
perspectiveOriginX Fixed Perspective x origin 32768
perspectiveOriginY Fixed Perspective y origin 32768
perspectivePerspectiveX Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 0
perspectivePerspectiveY Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 0
perspectiveScaleXToX Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 65536
perspectiveScaleXToY Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 0
perspectiveScaleYToX Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 0
perspectiveScaleYToY Fixed The values define a transformation matrix. Each value is scaled by the perspectiveWeight parameter. 65536
perspectiveType Transform Type Where transform applies:

0Absolute

1Shape

2Drawing

1
perspectiveWeight Fixed Scaling factor 256
fPerspective Boolean On/off   

Callout
spcot    Callout type:

1Right angle

2One segment

3Two segments

4Three segments

3
dxyCalloutGap EMU Distance from box to first point. 76200
spcoa    Callout angle:

1Any angle

230 degrees

343 degrees

460 degrees

590 degrees

1
spcod    Callout drop type:

0Top

1Center

2Bottom

3Specified by dxyCalloutDropSpecified

3
dxyCalloutDropSpecified EMU If spcod is 3, then this holds the actual drop distance. 114300
dxyCalloutLengthSpecified EMU In the case where fCalloutLengthSpecified is True, this holds the actual distance. 0
fCallout Boolean This is a callout. FALSE
fCalloutAccentBar Boolean Callout has an accent bar. FALSE
fCalloutTextBorder Boolean Callout has a text border. TRUE
fCalloutDropAuto Boolean True if Auto attach is on. False if it is off. If this is True, then the converter should occasionally invert the drop distance. FALSE
fCalloutLengthSpecified Boolean True if the callout length is specified; False if it is not. If True, use dxyCalloutLengthSpecified. If False, the Best Fit option is on. FALSE
fCalloutMinusX Boolean The polyline of the callout is to the right FALSE
fCalloutMinusY Boolean The polyline of the callout is down. FALSE
fCalloutTextBorder Boolean Callout has a text border TRUE

Connectors
cxk Connection Site Type Connection Site Type:

0None

1Segments

2Custom

3Rect

1
cxstyle Connector Style Connector Style:

0Straight

1Bent

2Curved

3None

3

Black and White Modes
bWMode Black and White Mode Settings for modifications to be made when in different forms of black-and-white mode:

0Color

1Automatic

2Grayscale

3Light Grayscale

4Inverse Gray

5Gray Outline

6Black TextLine

7High Contrast

8Black

9White

10Don't Show

11Number of Black and White Modes

1
bWModeBW Black and White Mode Settings for modifications to be made when in different forms of black-and-white mode:

0Color

1Automatic

2Grayscale

3Light Grayscale

4Inverse Gray

5Gray Outline

6Black TextLine

7High Contrast

8Black

9White

10Don't Show

11Number of Black and White Modes

1
bWModePureBW Black and White Mode Settings for modifications to be made when in different forms of black-and-white mode:

0Color

1Automatic

2Grayscale

3Light Grayscale

4Inverse Gray

5Gray Outline

6Black TextLine

7High Contrast

8Black

9White

10Don't Show

11Number of Black and White Modes

1

The format of the value depends on the property name it is paired with. Many values are simple single numbers. Distances are expressed in EMU units. There are 12700 EMU units in a point hence 914400 in an inch and 360000cm-1. Fractional or fixed values are expressed using units that are 1/65536th of a whole. Angles are expressed as fractions of a degree. Colors are 24 bit color values. Booleans have two possible values: 1 for True and 0 for False.

Arrays are formatted as a sequence of number separated by semicolons. The first number tells the size of each element in the array in bytes. The number of bytes per element may be 2, 4, or 8. When the size of the element is 8, each element is represented as a group of two numbers. The second number tells the number of elements in the array. For example, the points of a square polygon are written as:

{sv 8;4;{0,0};{100,0};{100,100};{0,100}}

The ShapeType property can have the following possible values:

Value Description
0 Freeform or non-autoshape
1 Rectangle
2 Round rectangle
3 Ellipse
4 Diamond
5 Isosceles triangle
6 Right triangle
7 Parallelogram
8 Trapezoid
9 Hexagon
10 Octagon
11 Plus Sign
12 Star
13 Arrow
14 Thick arrow
15 Home plate
16 Cube
17 Balloon
18 Seal
19 Arc
20 Line
21 Plaque
22 Can
23 Donut
24 Text simple
25 Text octagon
26 Text hexagon
27 Text curve
28 Text wave
29 Text ring
30 Text on curve
31 Text on ring
41 Callout 1
42 Callout 2
43 Callout 3
44 Accent Callout 1
45 Accent Callout 2
46 Accent Callout 3
47 Border Callout 1
48 Border Callout 2
49 Border Callout 3
50 Accent Border Callout 1
51 Accent Border Callout 2
52 Accent Border Callout 3
53 Ribbon
54 Ribbon2
55 Chevron
56 Pentagon
57 No Smoking
58 Seal8
59 Seal16
60 Seal32
61 Wedge Rect Callout
62 Wedge RRect Callout
63 Wedge Ellipse Callout
64 Wave
65 Folded Corner
66 Left Arrow
67 Down Arrow
68 Up Arrow
69 Left Right Arrow
70 Up Down Arrow
71 IrregularSeal1
72 IrregularSeal2
73 Lightning Bolt
74 Heart
75 Picture Frame
76 Quad Arrow
77 Left Arrow Callout
78 Right Arrow Callout
79 Up Arrow Callout
80 Down Arrow Callout
81 Left Right Arrow Callout
82 Up Down Arrow Callout
83 Quad Arrow Callout
84 Bevel
85 Left Bracket
86 Right Bracket
87 Left Brace
88 Right Brace
89 Left Up Arrow
90 Bent Up Arrow
91 Bent Arrow
92 Seal24
93 Striped Right Arrow
94 Notched Right Arrow
95 Block Arc
96 Smiley Face
97 Vertical Scroll
98 Horizontal Scroll
99 Circular Arrow
100 Notched Circular Arrow
101 Uturn Arrow
102 Curved Right Arrow
103 Curved Left Arrow
104 Curved Up Arrow
105 Curved Down Arrow
106 Cloud Callout
107 Ellipse Ribbon
108 Ellipse Ribbon 2
109 Flow Chart Process
110 Flow Chart Decision
111 Flow Chart Input Output
112 Flow Chart Predefined Process
113 Flow Chart Internal Storage
114 Flow Chart Document
115 Flow Chart Multidocument
116 Flow Chart Terminator
117 Flow Chart Preparation
118 Flow Chart Manual Input
119 Flow Chart Manual Operation
120 Flow Chart Connector
121 Flow Chart Punched Card
122 Flow Chart Punched Tape
123 Flow Chart Summing Junction
124 Flow Chart Or
125 Flow Chart Collate
126 Flow Chart Sort
127 Flow Chart extract
128 Flow Chart Merge
129 Flow Chart Offline Storage
130 Flow Chart Online Storage
131 Flow Chart Magnetic Tape
132 Flow Chart Magnetic Disk
133 Flow Chart Magnetic Drum
134 Flow Chart Display
135 Flow Chart Delay
136 Text Plain Text
137 Text Stop
138 Text Triangle
139 Text Triangle Inverted
140 Text Chevron
141 Text Chevron Inverted
142 Text Ring Inside
143 Text Ring Outside
144 Text Arch Up Curve
145 Text Arch Down Curve
146 Text Circle Curve
147 Text Button Curve
148 Text Arch Up Pour
149 Text Arch Down Pour
150 Text Circle Pour
151 Text Button Pour
152 Text Curve Up
153 Text Curve Down
154 Text Cascade Up
155 Text Cascade Down
156 Text Wave1
157 Text Wave2
158 Text Wave3
159 Text Wave4
160 Text Inflate
161 Text Deflate
162 Text Inflate Bottom
163 Text Deflate Bottom
164 Text Inflate Top
165 Text Deflate Top
166 Text Deflate Inflate
167 Text Deflate Inflate Deflate
168 Text Fade Right
169 Text Fade Left
170 Text Fade Up
171 Text Fade Down
172 Text Slant Up
173 Text Slant Down
174 Text Can Up
175 Text Can Down
176 Flow Chart Alternate Process
177 Flow Chart Off-Page Connector
178 Callout 90
179 Accent Callout 90
180 Border Callout 90
181 Accent Border Callout 90
182 Left Right Up Arrow
183 Sun
184 Moon
185 Bracket Pair
186 Brace Pair
187 Seal4
188 Double Wave
201 Host Control
202 Text Box

The following keywords are related to defining a hyperlink hanging off of a shape (that is, all of them are inside of a {\sp {\sn … } {\sp …}}). These specifically can occur in the \sp to define a property that is a hyperlink. They are used like this:

{ \hl  { \hlloc  RTF-string } { \hlsrc RTF-string } { \hlfr RTF-string } }

The three groups can be in any order. These provide the three strings needed to describe a hyperlink fully.

Control
Word
Meaning
Hyperlink Property for Shapes
\hlloc Location string for hyperlink.
\hlsrc Source string for hyperlink.
\hlfr Friendly name for hyperlink.

For more complete information please refer to the Microsoft Draw Binary Format Specification.

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 comments (annotations). Placing a footnote within headers, footers, or comments (annotations) will often result in a corrupted 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, Section Formatting Properties, and Special Characters in this RTF Specification.

Comments (Annotations)

RTF comments (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 comments (annotations) within headers, footers, or footnotes. Placing an annotation within headers, footers, or footnotes will often result in a corrupted document. Each part of the annotation is an RTF destination. Comments (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 '}'

Comments (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.}}

Comments (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 that contains the text of fields. Fields have the following syntax:

<field> '{' \field <fieldmod>? <fieldinst> <fieldrslt> '}'
<fieldmod> \flddirty? & \fldedit? & \fldlock? & \fldpriv?
<fieldinst> '{\*' \fldinst <para>+ <fldalt>? '}'
<fldalt> \fldalt
<fieldrslt> '{' \fldrslt <para>+ '}'

Several control words 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 file name, then the \cpg control can be used to define the character set of the file name. See Code Page Support in this RTF Specification 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. A field result should not start with a table, because this will break some RTF readers.

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   The \datafield destination requires the \* prefix. The \fldtype, \date, \time, and \wpeqn field keywords should be ignored.

Form Fields

Control
Word
Meaning
\formfield Group destination keyword indicating start of form field data.
\fftypeN Form field type:

0Text

1Check box

2List

\ffownhelpN 1 if there is associated Help text (defined under \ffhelptext), 0 otherwise.
\ffownstatN 1 if there is associated status line text (defined under \ffstattext), 0 otherwise.
\ffprotN 1 if this field is protected, 0 otherwise.
\ffsizeN Type of size selected for check box field:

0Auto

1Exact

\fftypetxtN Type of text field:

0Regular text

1Number

2Date

3 Current date

4Current time

5Calculation

\ffrecalcN 1 if the field should be calculated on exit, 0 otherwise.
\ffhaslistboxN 1 if this field has list box attached to it, 0 otherwise.
\ffmaxlen Number of characters for text field.
\ffhpsN Check box size (half-point sizes).
\ffname Form field name (string). This is a destination control word.
\ffdeftext Default text for text field (string). This is a destination control word.
\ffdefres Default entry for list field (for example 0 = first list item, 1 = second list item).
\ffformat Format for text field (string). This is a destination control word.
\ffhelptext Help text (string). This is a destination control word.
\ffstattext Status line text (string). This is a destination control word.
\ffentrymcr Macro to be executed upon entry into this form field (string). This is a destination control word.
\ffexitmcr Macro to be executed upon exit from this form field (string). This is a destination control word.
\ffl List of text for list field. This is a destination control word.
\ffresN Result field for a form field. Values from 0 to N-1, where N is the number of \ffl entries.

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?) <entry> (<txe> | <rxe>)? '}'
<entry> (<char>+ <yxe>?) | ('{' <char>+ <yxe>? '}')
<yxe> \yxe <char>+ #PCDATA
<txe> '{' \txe <char>+ #PCDATA'}'
<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 Font (Character) Formatting Properties in this RTF Specification. 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.
\yxe Pronunciation (or heading) for index entry, used in phonetic sorting.
\*\pxe "Yomi" (pronunciation) for index entry.

Table of Contents Entries

The \tc control word introduces a table of contents entry that 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 RTF Specification). Also refer to the associated character properties defined in Associated Character Properties in this RTF Specification.

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).
\linN Left indent for left-to-right paragraphs; right indent for right-to-left paragraphs (the default is 0).
\rinN Right indent for left-to-right paragraphs; left indent for right-to-left paragraphs (the default is 0).
\pgnbidia Page-number format is Abjad Jawaz if language is Arabic and Biblical Standard if language is Hebrew.
\pgnbidib Page-number format is Alif Ba Tah if language is Arabic and Non-standard Decimal if language is Hebrew.
\pnbidia Abjad Jawaz if language is Arabic and Biblical Standard if language is Hebrew.
\pnbidib Alif Ba Tah if language is Arabic and Non-standard Decimal if language is Hebrew.
\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 (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 (the default).
\rtlsect This section will thread columns from right to left.
\ltrsect This section will thread columns from left to right (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 (the default).
\levelnfcnN Same as \levelnfc.  Takes priority over it if both are present.
\leveljcnN 0Left justified if for left-to-right paragraphs and right justified for right-to-left paragraphs

1Center justified

2Right justified if for left-to-right paragraphs and left justified for right-to-left paragraphs

Takes priority over \leveljc if both are present

\rtlgutter Gutter is positioned on the right
\taprtl Indicates that the table direction is right-to-left
\zwj Zero-width joiner. This is used for ligating characters.
\zwnj Zero-width nonjoiner. This is used for unligating characters.