Layout Codes
There are two kinds of layout codes: those which always modify a whole pragraph, and those which modify one or more characters. They are always kept strictly separate. A layout code consists of a type byte, followed by one or more modifier bytes. All rcognized codes are listed below.
Paragraph Layout List
A Paragraph Layout List is a LListB of Paragraph Layout Codes. Paragraph Layout Codes are almost always found in this form.
Paragraph Layout Codes
As explained above, a Paragraph Layout Code consists of a type byte, telling what kind of layout code this is, followed by a type-dependent amount of data.
Type Size Data Description
01 3B Color Background color
02 L , Length Indent left
03 L Length Indent right
04 L Length (Un)indent first line (length relative to indent left setting)
05 B Hor. justify left (00), centre (01), right (02) or full (03)
06 B Vert. justify top (00) centre (01) or bottom (02)
07 L Size Interline distance
08 B Interline distance is minimum (00) or exact (01)
09 L Size Line distance before paragraph start
0A L Size Line distance after paragraph end
0B B Line distance options: Keep on one page on (01) or off (00)
0C B Line distance options: Keep together with on (01) or off (00)
0D B Line distance options: On next page on (01) or off (00)
0E B Protection vs. single lines on pages disable (01) or enable (00)
0F B Wrap data to fill sheet cell limits on (01) or off (00)
10 L Length Distance of borders from text
11 9B Border Top border
12 9B Border Bottom border
13 9B Border Left border
14 9B Border Right border
15 * Bullet Bullets
16 L Length Set standard (left) tabs interval
17 5B Tab Set extra tab
Some comments. The first line of a paragraph can have a different indentation than the other lines. This indentation length is always relative to the normal indentation, and can be positive (more to the right) or negative (more to the left). Combined with bulltes, things are slightly different (see there).
Borders can be made to be drawn beyond the standard margins, by specifying the amount of space between them and the text. This is always a positive value.
There always standard tab positions; they are placed at regular interfals as specified. These are always left tabs. Additional tabs can also be specified, but these are always in addition to the standard tab positions.
Borders
The four possible borders are specified separately, through initial type bytes 11 to 14. The border structure is shown below.
Offset Data Description
0000 B Type (see below)
0001 L Thickness (always 01 for types 02 to 06)
0005 Color Color of border
0008 B Unknown (always 00 or 01 ?)
0009
The border type can have the following values:
Border Type Description
00 None
01 Solid single line
02 Solid double line
03 Dotted line
04 Dashed line
05 Dotsdashed line
06 Dotdotdashed line
The thickness can only be defined for solid lines. It is expressed in units of 1/14 point (1/20 decimal), just like Sizes and Lengths. The three Unknown bytes may be another color code, or something completely different. The function of the final byte is also unclear.
Bullets
A Bullet description is a BListB. The complete structure is given below, including the initial length byte excluding the initial type byte 15.
Offset Data Description
0000 B Size of the remainder of this section in bytes
0001 Size Font size of bullet in points
0005 B Character used for bullet in ASCII
0006 B Indent after bullet on (01) or off (00)
0007 Color Color of bullet
0008 Font Font from which the bullet is taken (always Swiss?)
The combination of indents and bullets is somewhat involved. If Indent After Bullet is off, everything works as expected: the bullet is located at the first line indent, and the text starts right after it. If it is on, the bullet is located at the minmum of first line indent and left indent; the text (including the first line) is located at the maximum of first line indent and left indent.
Tabs
In addition to the default left tabs, which are found at regular intervals, more tabs can be defined. Each additional tab is specified in its own structure. Below this structure is shown, excluding the initial type byte 17.
Offset Data Description
0000 Length Location of the tab, relative to the left margin
0004 B Tab type (see below)
0005
There are three kinds of tabs. They specify the anchoring of the text just after the tab: either the first character, the centre character or the last character.
Tab type Kind
1 Left
2 Centre
3 Right
Character Layout List
A Character Layout List is a LListB of Character Layout Codes. Character Layout Codes are almost always found in this form.
Character Layout Codes
As explained above, a Character Layout Code consists of a type byte, telling what kind of layout code this is, followed by a type-dependent amount of data.
Type Size Data Description
18 B Set ??? on (01) or off (00)
19 3B Color Set text color
1A 3B Color Set ??? color (background?)
1B B Set ??? on (01) or off (00). Displayed with black background.
1C L Size Change character point size
1D B Italic on (01) or off (00)
1E B Bold on (01) or off (00
1F B Superscript (01) or subscipt (02) or off (00)
20 B Underline on (01) or off (00)
21 B Strikethrough on (01) or off (00)
22 * Font Change character font
23 B Unknown
24 B Unknown (5MX only): always 00 ?
Some remarks: several of the above codes are sometimes found in Word documents (especially after a clipboard copy from another program), but seem te be ignored by Word. This is more or less true for codes 18, 1A, 1B, 23 and 24. None of them can be generated directly by a Word user.