Packet Data Formats



Reserved packets may appear in a document prefix. Most of the strings in the packet data are strings made up of short values. The high byte of the short value is the WP character set number. The low byte of the short value is the character number. The strings are null terminated with a short value unless otherwise specified.


Packet Type 0 (0x00)

Index Entry Is Available or Was Deleted

This does not apply to the index header, which is always the first index in the index block.


Packet Type 1 (0x01)

Document Height

The document height is the height of the entire document from top to bottom.

{document height (text mode)} in formatter text lines

{document height (graphics mode)} in WPUs

{document height (page mode)} in 3600ths

Packet Type 2 (0x02)

Document-Specific Flags

<flag bits for doc>

bit 0: 1 = baseline placement for typesetters is active

bits 1-2: 00 = font change

01 = character in right margin

10 = character in left margin

11 = character in alternating margins

bit 3: 1 = document needs to be formatted

bit 4: 1 = document needs to be (re)generated

bit 5: 1 = manual display pitch

bit 6: 1 = links should be updated on retrieval

bit 7: 1 = links codes should not be displayed

<text/graphics quality>

low nibble = text quality

high nibble = graphics quality

both nibbles:

0 = do not print

1 = draft

2 = medium

3 = high

[redline character]

[width of screen character]

<ink color>

0 = black

1 = full color

2 = solid color

<merge display flags>

2 (0x02) = display merge codes

4 (0x04) = show displayed codes as icons

<reserved>

<default form number>

[current undo-level number]

[current range level number]

<more document flags>

bit 0: 1 = hypertext mode is active

bit 1: 1 = hiding text marked for hiding

<reserved for future use>


Packet Type 3 (0x03)

Reserved


Packet Type 4 (0x04)

Form Hash Table

[hash value for each form contained in a document] x ?


Packet Type 5 (0x05)

Writing Tools API

[company ID]

[tool (or product) ID]

<tool information> x ?

The WordPerfect Speller uses the Tool information field for the document Supplemental Dictionary. The format of the Supplemental Dictionary is a WP short string.


Packet Type 6 (0x06)

Character Map

This structure is the same as used in a MAP file. The file type for a MAP file is 49 (0x31). In a MAP file, this structure begins directly following the 16-byte prefix.

[size of character mapping packet]

<map flags>

bit 7 is set when using 2-byte mappings (WP short string mappings)

80 = Japanese mapping

81 = Korean mapping

82 = Chinese mapping

83 = Taiwanese mapping

[pointer to map name] offset from start of packet

[pointer to map table] table for converting document characters to WP characters

[map name] x ? null terminated WP word string of indeterminate length

[min value = 1] minimum value of mappable characters

[max value = 127] maximum value of mappable characters

[number of mappable chars] max - min + 1

[size of map table]

[document char, WP char]

Document characters are mapped into the range 1-127. The 1-byte document character to WP character mapping table is essentially a lookup table. It consists of 127 entries, each one word in length. The first byte of the first word represents document character 1 and the second byte represents the WP character that document character 1 is mapped to.


Packet Type 7 (0x07)

Native Filename

If this packet does not have any children, the format is:

<filename> x ? or [filename] x ? null terminated byte or word string

If this packet does have children, the format is the following:

[count of child IDs]

[ID 1] ID of child packet

[ID 2] ID of child packet

.. ..

[ID n] ID of last child

[tag 1] tag flag for first child packet

[tag 2] tag flag for second child packet

.. ..

[tag n] last tag flag for last child packet

[filename] x ? null terminated

Format for tag flags

0x0001 = data being kept internal

0x0010 = data being kept internal (hot link)

0x0011 = data being kept internal (warm link)

0x0012 = data being kept internal (cold link)


Packet Type 8 (0x08)

General WP Text

[number of text blocks]

{relative offset of first text block within packet}

{size of 1st text block}

{size of 2nd text block}

..

{size of last text block}

..

<text data for 1st block> x 1st block size

<text data for 2nd block> x 2nd block size

..

<text data for last block> x last block size


Packet Type 9 (0x09)

Bookmark Data

[reserved]

<bookmark flags>

bits 0-3: reserved

bit 4: 1 = paired bookmark

bit 5: 1 = bookmark is in a substructure

bit 6: 1 = quick bookmark

bit 7: 1 = deleted bookmark

<reserved>

[bookmark name]

null-terminated WP short string; max 78 bytes or 38 chars + null


Packet Type 10 (0x0A)

Macro Executable

No documentation will be provided for this packet.


Packet Type 11 (0x0B)

Mark Text for Generate Definition

The byte following the PIDs in each of the following structures indicates which type of definition exits in a particular instance of this packet.

Table of Contents Definition

[number of child prefix IDs = 2-6]

[style PID 1 (type=0x30)]

[style PID 2 (type=0x30)]

..

[format PID (type=0x62)]

<ToC definition = 0>

<number mode>

0 = no number

1 = number follows entry

2 = number in parentheses follows entry

3 = number flush right

4 = number flush right with dot leaders

[ToC name = 0]

Index Definition

[number of child prefix IDs = 4]

[child PID (level 1) (type=0x30)]

[child PID (level 2) (type=0x30)]

[concordance filename PID (type=0x07, 0 if none)]

[format PID (type=0x62, 0 for document format)]

<index definition = 2>

<number mode>

0 = no number

1 = number follows entry

2 = number in parentheses follows entry

3 = number flush right

4 = number flush right with dot leaders

<definition flags>

1 = reserved

2 = combining of sequential page numbers (default)

[index name = 0]

List Definition

[number of child prefix IDs = 3]

[style PID (type=0x30)]

[format string PID (type=0x62)]

[graphics style PID (type=0x11)]

<list definition = 1>

<number mode>

0 = no number

1 = number follows entry

2 = number in parentheses follows entry

3 = number flush right

4 = number flush right with dot leaders

<reserved>

[list name] x ? short string format

Table of Authorities Definition

[number of child prefix IDs = 2]

[style PID (type=0x30)]

[format string PID (type=0x62)]

<ToA definition = 4>

<number mode>

0 = no number

1 = number follows entry

2 = number in parentheses follows entry

3 = number flush right

4 = number flush right with dot leaders

<definition flags>

1 = ToA definition - underlining allowed

2 = combining of sequential page numbers (default)

[ToA name] x ? short string format


Packet Type 12 (0x0C)

Subdocument

If this packet does not have any children, the format is a short string of the filename for the subdocument. The subdocument is stored externally on disk.

[subdocument filename] x ? null terminated

If this packet has children, the format is the following:

[number of child IDs]

[ID 1] ID of child packet containing subdocument information

[ID 2] ID of child packet containing subdocument information

.. ..

[ID cnt] last child ID for subdocument information

[tag 1] tag flag for first child packet

[tag 2] tag flag for second child packet

.. ..

[tag cnt] tag flag for last child packet

[subdocument filename] x ?

Format for tag flags

0x0001 = data is part of this file

0x0010 = data is part of this file (hot link)

0x0011 = data is part of this file (warm link)

0x0012 = data is part of this file (cold link)


Packet Type 13 (0x0D)

Table of Authorities Mark

The full form Table of Authorities mark consists of this parent packet and a General WP Text child packet.

[number of child prefix IDs = 1]

[child PID (type=0x08)]

[short form name] x ? WP word string

[ToA section name] x ? WP word string

The short form Table of Authorities mark consists of the short form name contained within this packet.

[short form name] x ? WP word string


Packet Type 14 (0x0E)

Index Mark

[index name] x ? null terminated

[heading] x ? null terminated

[subheading] x ? null terminated


Packet Type 15 (0x0F)

Cross-Reference Target

[target name] x ? null terminated


Packet Type 16 (0x10)

NeXT Total Page Count

No documentation will be provided for this packet.


Packet Type 17 (0x11)

Counters Data

[name or ID] x 16 There will always be 32 bytes set aside for the name, but if the counter is a system counter, then this field is an ID number instead of a name. Both the name and the ID number are null terminated with a word null and the remaining bytes are random.

<number of counter levels valid (1-5)> actual number of levels used

<default numbering method for level 1>

<default numbering method for level 2>

<default numbering method for level 3>

<default numbering method for level 4>

<default numbering method for level 5>

[level name 1] x 16 null terminated word strings, begin with two spaces ([2000] [2000])

[level name 2] x 16 null terminated word strings, begin with two spaces ([2000] [2000])

[level name 3] x 16 null terminated word strings, begin with two spaces ([2000] [2000])

[level name 4] x 16 null terminated word strings, begin with two spaces ([2000] [2000])

[level name 5] x 16 null terminated word strings, begin with two spaces ([2000] [2000])


Packet Type 18 (0x12)

Extended Document Summary

The extended summary data group occurs for up to 100 times, one for each field defined in the extended summary:

[size] (byte length of data group.)

[tag] (field ID of the extended summary field.)

[type] (field data type)

bit 0: 1 = single line, data length is limited to 255 words

bit 1: 1 = multi-line, data length is limited to 1023 words

bit 2: 1 = date, see 10-byte date structure below.

bit 3: 1 = read only (document may be locked by another user)

[name] x ? (null-terminated word string, optional.)

[data] x ? (null-terminated word string or 10-byte date field.)

In the following table * denotes fields which are also defined in the WP 5.0, 5.1 or 5.2 Summary packet.



Valid predefined extended summary fields:
Tag Name Type
1 Abstract* Multi-line
2 Account* Single line
3 Address Multi-line
4 Attachments Single line
5 Author* Single line
6 Authorization Single line
7 Bill To Multi-line
8 Blind Copy Single line
9 Carbon Copy Single line
10 Category Single line
11 Checked By Single line
12 Client Single line
13 Comments Multi-line
14 Creation Date* Date
15 Date Completed Date
16 Department Single line
17 Descriptive Name* Single line
18 Descriptive Type* Single line
19 Destination Single line
20 Disposition Single line
21 Division Single line
22 Document number Single line
23 Editor Single line
24 Forward To Single line
25 Group Single line
26 Keywords* Single line
27 Language Single line
28 Mail Stop Single line
29 Matter Single line
30 Office Single line
31 Owner Single line
32 Project Single line
33 Publisher Single line
34 Purpose Multi-line
35 Received From Single line
36 Recorded By Single line
37 Recorded Date Date
38 Reference Single line
39 Revision Date* Date and read only
40 Revision Notes Multi-line
41 Revision number Single line
42 Section Single line
43 Security Single line
44 Source Single line
45 Status Single line
46 Subject* Single line
47 Telephone number Single line
48 Typist* Single line
49 Version Date Date
50 Version Notes Multi-line
51 Version number Single line








10-Byte Date Structure

[year]

<month>

<day>

<hour>

<minute>

<second>

<day of week> (not implemented)

<time zone> (not implemented)

<unused>

User-defined extended summary fields have a tag number in the range of 101 to 65535 and must have a field name.

Predefined fields have tag numbers in the range of 1 to 100 and may have a name, but for multilingual purposes, the name displayed in all interfaces comes from a translatable resource file.

Tag number 39, Revision Date, is a special case where the date is extracted from the DOS file date.


Packet Type 19 (0x13)

Macro Labels

No documentation will be provided for this packet.


Packet Type 20 (0x14)

Macro Global Labels

No documentation will be provided for this packet.


Packet Type 21 (0x15)

Macro Translation Table

No documentation will be provided for this packet.


Packet Type 22 (0x16)

Macro Debug Information

No documentation will be provided for this packet.


Packet Type 23 (0x17)

Hypertext (Bookmark Name)

[bookmark name] x ? null terminated


Packet Type 24 (0x18)

Box Text Filename

[box text filename] x ? null terminated

If this packet ever has child IDs, the format will be that of the Native Filename packet type 0x07.


Packet Type 25 (0x19)

Equation Text Filename

[equation text filename] x ? null terminated

If this packet ever has child IDs, the format will be that of the Native Filename packet type 0x07.


Packet Type 26 (0x1A)

Envelope Address Document

The structure of this packet is the same as packet type 8 (0x08), General WP Text.


Packet Type 27 (0x1B)

Comment/Annotation

[number of prefix IDs = 1]

[text PID (type=0x08)]

<annotation flag> 0 = comment, 1 = annotation

date/time:

[year]

<month>

<day>

<hour>

<minute>

<second>

<day of week> not implemented

<time zone> not implemented

<unused>

<annotation color (RGBS)> x 4

[user initials] x ? word string null terminated

[user name] x ? word string null terminated


Packet Type 28 (0x1C)

WP Hidden Outline Text

The structure of this packet is the same as packet type 8 (0x08), General WP Text.


Packet Type 29 (0x1D) - 31 (0x1F)

Reserved


Packet Type 32 (0x20)

Font Typeface Descriptor Pool

This packet contains all font descriptors used in the document)

In the SET file the font typeface descriptor pool only contains the default descriptor.

Matched Font Descriptor (closest available to desired font)

[average character width (PSU)]

[ascender height (PSU)]

[x height (PSU)]

[descender height (PSU)]

[italic adjust]

[primary family ID]

0 = don't know

1 = Courier

2 = Helvetica

3 = Times Roman

4 = Letter Gothic

5 = Prestige

6 = Symbol

7 = AG Gothic

8 = Bookman

9 = Basker

10 = Bodoni

11 = Caslon

12 = Century

13 = Cooper

14 = Futura

15 = Garamond

16 = Glypha

17 = Optima

18 = Palatino

19 = Souvenir

20 = Univers

21 = Brush script

22 = Cursive script

23 = Dom casual

24 = Old English

25 = Hobo

26 = Stencil

27 = Computer

28 = OCR

29 = Broadway

30 = Decor

<scripting system> 1 = European classification

<primary character set> character set numbers 0-15

<width (aspect ratio)>

0 = don't know

16-31 = ultra condensed

32-47 = extra compressed

48-63 = compressed

64-79 = extra condensed

80-95 = condensed (compact)

96-111 = semi condensed (narrow)

112-127 = normal

128-143 = semi expanded

144-159 = expanded (extended)

160-175 = extra expanded

176-191 = ultra expanded

192-223 = double wide

224-254 = triple wide

255 = reserved

<weight>

0 = don't know

1-7 = ultra thin

8-15 = ultra light

16-23 = extra thin

24-31 = thin

32-47 = extra light

48-63 = light

64-79 = demi light

80-87 = semi light

88-95 = book

96-103 = regular (plain)

104-111 = Roman

112-127 = medium

128-135 = demi bold

136-143 = semi bold

144-159 = bold

160-175 = extra bold

176-191 = heavy

192-207 = extra heavy

208-223 = black

224-239 = extra black

240-247 = ultra heavy

248-254 = ultra black

254 = max weight

255 = reserved

<attributes>

bit 0: 1 = italic

bit 1: 1 = outline

bit 2: 1 = shadow

bit 3: 1 = small caps

<general characteristics>

bits 0-1: usage category

0 = don't know

1 = text

2 = display

3 = both

bits 2-3: general serif

0 = don't know

1 = sans serif

2 = serif

3 = script

bits 4-5: spacing

0 = don't know

1 = proportional

2 = monospace

<classification>

bits 0-3: serif type

0 = don't know

1 = bracket

2 = cupped

3 = round bracket

4 = line

5 = slab

6 = wedge

7 = half

8 = sans square

9 = sans round

10 = sans flare

11 = nonconnect

12 = joining

13 = black serif

14 = swash

<fill byte = 0>

<font type>

In .PRS file:

0 = built in

1 = cartridge slot

2 = memory (quantity units are in kilobytes)

3 = memory (quantity units are in font slots)

4 = print wheel

In .DRS file:

128 (0x80) = wp greeked font

129 (0x81) = wp menu

130 (0x82) = wp vector

131 (0x83) = wp outline

132 (0x84) = reserved

133 (0x85) = reserved

134 (0x86) = Speedo

135 (0x87) = bullet (not yet internal)

138 (0x8A) = ATM

139 (0x8B) = TrueType

140 (0x8C) = reserved

141 (0x8D) = TrueType

142 (0x8E) = reserved

143 (0x8F) = reserved

255 (0xFF) = no soft font driver loaded

<font source file type>

16 (0x10) = .PRS file type

20 (0x14) = .DRS file type

[typeface name length in bytes]

[typeface name] x 58? (word-string; max size = 116 bytes)

The typeface name is made up for four separate null word-terminated strings:

1st string = typeface family (such as Times or Swiss)

2nd string = attributes (such as Bold, Italic, or Bold Italic)

3rd string = name prefix (group abbreviation, used for sorting in fonts and cartridge menus [such as CG])

4th string = name extension. This is a symset string, an orientation string, or a string to simply distinguish this font from other fonts (such as scalable).


Packet Type 33 (0x21)

Font PS Table

One document file packet is used for each PS (proportional space) table.

In a SET file, this packet contains the font PS table for the default initial font.

<PS status flag>

0 = byte characters

1 = word characters

<PS type flag>

0 = PS table

1 = monospaced bitmap

[pointers to the 16 character sets] x 16

[character widths/bitmap] x ? variable length

If the type is PS table, the following block of data will exist for each character set from 1 through 16.

<count of characters in this set (starting at 0)> same as the number of the last character in the set

[width of nth character] x count+1 (n = 0 to count)

If the type is monospaced bitmap, the following block of data will exist for each character set from 1 through 16.

<count of characters in this set (starting at 0)> same as the number of the last character in the set

<bitmap of character set> x (count/8)+1 The bits in the bitmap in physical order indicate the existence (1) or absence (0) of the corresponding character in the character set. For example, if the high bit of first byte is 1 then character 0 exists. If the low bit of the first bit is 0, then character 7 is omitted.

The actual spacing used by a monospaced font may be calculated by the formula:

nominal character width = (average character width * current point size) / 300

The current point size is found in the Font Face Change function code (function 0xD4, subfunction 0x1A) in units of 3600ths and must be converted into 1200ths before it is used in the formula. The average character width is found in the Font Typeface Descriptor Pool packet (packet type 0x20) in units of 1200ths. The nominal character width is the spacing used by a monospaced font and is also in units of 1200ths.


Packet Type 34 (0x22)

Font List

In a SET File, this packet contains the default initial font.

[font ID (instance pointer)]

[cache ID of PS table (-1 = no PS table)]

[top shoulder height (WPU)]

[bottom shoulder height (WPU)]

[printed character width (WPU)]

[optimal space width (WPU)]

[normal space width (WPU)]

[horizontal motion units]

[numerator for fractional units of horizontal motion]

[vertical motion units]

[numerator for fractional units of vertical motion]

[pointer in pool of typeface descriptor (packet type 20)]

<flags >

01 = scalable font

02 = faked small cap font

[point size (3600ths)]

[nominal width (WPU)]

[hash word of descriptor]

[afc list (entry numbers, -1 = none)] x 16

[character afc list] x 16

[orientation afc list] x 4

[language afc list] x 4

[substitute font list] x 6 (entry number, -1 = none, -2 = on disk)


Packet Type 35 (0x23)

Printer Selection

[long .PRS file] x 37 null terminated, padded to 74 bytes

<actual .PRS file name> x 13 null terminated, padded to 13 bytes

[minimum top margin (WPU)]

[minimum bottom margin (WPU)]

[minimum left margin (WPU)]

[minimum right margin (WPU)]

[minimum top margin (landscape) (WPU)]

[minimum bottom margin (landscape) (WPU)]

[minimum left margin (landscape) (WPU)]

[minimum right margin (landscape) (WPU)]

<flags>

bit 0: available

bit 1: initialize printer when WP starts

bit 3: right hyphenation zone disabled

bits 4-7: orientations supported

16 (0x10) = portrait

32 (0x20) = landscape

64 (0x40) = reverse portrait

128 (0x80) = reverse landscape

<port number>

0 = lpt1

1 = lpt2

2 = lpt3

4 = com1

5 = com2

6 = com3

7 = com4

-1 = filename or device

<byte to initialize serial port>

length (bit 0): 0 = 7, 1 = 8

stop bit (bit 1): 0 = 1 stop bit, 1 = 2 stop bits

extended baud rate (bit 2): 0 = no, 1 = yes (19200)

parity (bits 3-4): 0 = none, 1 = odd, 3 = even

baud rate (bits 5-7):

0 = 110

1 = 150

2 = 300

3 = 600

4 = 1200

5 = 2400

6 = 4800

7 = 9600

<network printer flag>

1 (0x01) network printer

2 (0x02) suppress top of form

4 (0x04) reserved

8 (0x08) reserved

16 (0x10) reserved

32 (0x20) reserved

64 (0x40) reserved

128 (0x80) reserved

<network form number>

<full pathname for non-port device> x 80

If port number is 0-7, bytes 1-6 (0 based) of this field are used for hardware printing information.

<pathname only - for auxiliary printer files> x 67

<additional flags>

1 (0x01) = prompt for file name

2 (0x02) = Xon/Xoff instead of DTR

4 (0x04) = check initial printer status

8 (0x08) = printer added to list by setup

16 (0x10) = configured for color

32 (0x20) = color-capable printer

64 (0x40) = extended checking

128 (0x80) = available

<output tray flags>

1 (0x01) = sorting supported

2 (0x02) = grouping supported

4 (0x04) = offset jogger supported

8 (0x08) = offset jogger on

16 (0x10) = output bin on

32 (0x20) = output bin supported

64 (0x40) = no output option

128 (0x80) = printer supports output options

[bin numbers] x 2 Up to 32 total bin numbers. Each bit is a bin number. When a bit is set, the corresponding bin is active.

bit 0 = output bin 1

bit 1 = output bin 2

bit 2 = output bin 3

bit 3 = output bin 4

bit 4 = output bin 5

bit 5 = output bin 6

bit 6 = output bin 7

bit 7 = output bin 8

bit 8 = output bin 9

bit 9 = output bin 10

bit 10 = output bin 11

bit 11 = output bin 12

bit 12 = output bin 13

bit 13 = output bin 14

bit 14 = output bin 15

bit 15 = output bin 16

bit 16 = output bin 17

bit 17 = output bin 18

bit 18 = output bin 19

bit 19 = output bin 20

bit 20 = output bin 21

bit 21 = output bin 22

bit 22 = output bin 23

bit 23 = output bin 24

bit 24 = output bin 25

bit 25 = output bin 26

bit 26 = output bin 27

bit 27 = output bin 28

bit 28 = output bin 29

bit 29 = output bin 30

bit 30 = output bin 31

bit 31 = output bin 32

[date of .PRS file]

bits 15-9 = year + 80

bits 8-5 = month

bits 4-0 = day (starting at 1)

[time of .PRS file]

bits 15-11 = hour (24 hour starting at 0)

bits 10-5 = minutes

bits 4-0 = seconds/2 (may not be completely accurate)


Packet Type 36 (0x24)

Embedded Printer Command

<embedded printer command> x ? native byte string, null terminated


Packet Type 37 (0x25)

Default Initial Font

[number of prefix IDs = 1]

[initial font descriptor PID (type=0x55)]

[point size (3600ths)]


Packet Type 38 (0x26)

Print Information for Q-codes

No documentation will be provided for this packet.


Packet Type 39 (0x27)

Output Device Type or Port for Q-codes

No documentation will be provided for this packet.


Packet Type 40 (0x28)

Machine Dependent Information

No documentation will be provided for this packet.


Packet Type 41 (0x29)

PS Table Prefix Packet IDs

This packet contains the prefix packet IDs of each font's PS table. There should be one PS table entry for each font in the font list. The format is:

[number of child PS table IDs]

[ID 0] index 0 PS table ID (type=0x21)

[ID 1] index 1 PS table ID

.. ..

[ID n] index n PS table ID


Packet Type 42 (0x2A)

Reserved


Packet Type 43 (0x2B)

Form Paper Size/Type Name

No documentation will be provided for this packet.


Packet Type 44 (0x2C)

Subdocument Summary

This is the same format as the extended document summary packet, packet type 18 (0x12).


Packet Type 45 (0x2D)

Subdocument Password

No documentation will be provided for this packet.


Packet Type 46 (0x2E)

Deletable Packet

No documentation will be provided for this packet.


Packet Type 47 (0x2F)

Reserved


Packet Type 48 (0x30)

Normal Style

[number of prefix IDs]

[PID of style to link to (type=0x30)]

If this is null, look at the Enter flag. If this ID exists, it means that when this style is ended (or when Enter is pressed), the style ID that is linked to begins.

[number of text blocks = 4]

{relative offset of 1st text block}

{paragraph text size}

{beginning style text size}

{end style text size}

{extra style text size}

<style type>

1 = open style

2 = paired style

3 = paragraph style

4 = deleted "including codes"

5 = deleted "leaving codes"

<style flag>

1 (0x01) = library style (otherwise local only)

2 (0x02) = system style

4 (0x04) = Enter turns style off (ignored if link ID is valid)

8 (0x08) = Enter turns style back on again (ignored if link ID is valid)

16 (0x10) = reserved (always set to null when creating a style code)

32 (0x20) = style includes other style(s)

64 (0x40) = reserved

128 (0x80) = reserved

[style hash]

[offset from beginning of packet to description]

[style name] x 12(max) null terminated

[style description] x ? null terminated

The following data is the text block part of the style.

<paragraph-oriented begin information> x paragraph text size

<other begin information> x beginning style text size

<end information> x ending style text size

<extra information> x extra style text size


Packet Type 49 (0x31)

Outline Style

Null level IDs indicate that the default outline is used for that level.

[child ID cnt = 8]

[level 1 ID (type=0x30)]

[level 2 ID (type=0x30)]

[level 3 ID (type=0x30)]

[level 4 ID (type=0x30)]

[level 5 ID (type=0x30)]

[level 6 ID (type=0x30)]

[level 7 ID (type=0x30)]

[level 8 ID (type=0x30)]

<style flags>

low nibble values:

0x01 = library style

0x02 = system style

0x04 = outline does not use paragraph styles

0x08 = reserved

high nibble values:

0x00 = heading paragraph styles

0x10 = reserved

0x20 = normal paragraph styles

0x40 = use legal (non-indented) paragraph styles

0x60 = reserved

0x80 = reserved

0xA0 = reserved

0xC0 = reserved

0xE0 = this style has been deleted

[hash of IDs, name, flags] (set to null when creating the style)

<numbering methods for printing> x 8

one byte for each level

0 = Arabic numbers

1 = lowercase letters (a-z)

2 = uppercase letters (A-Z)

3 = lowercase Roman

4 = uppercase Roman

5 = character string (only valid for footnotes and endnotes)

6 = leading-zero Arabic numbers

For Asia: (2-byte character required; uses two character cells to PRN)

0x40 = 2-byte Arabic

0x41 = 2-byte lowercase letters (a-z)

0x42 = 2-byte uppercase letters (A-Z)

0x43 = 2-byte lowercase Roman

0x44 = 2-byte uppercase Roman

0x45 = 2-byte character string (only valid for footnotes and endnotes)

0x46 = 2-byte leading-zero Arabic numbers

0x80 = kanji

0x81 = 1-byte katakana (aiueo)

0x82 = 2-byte katakana (aiueo)

0x83 = 1-byte katakana (iroha)

0x84 = 2-byte katakana (iroha)

0x85 = available

0x86 = standard kanji with leading-zero

0xC0 = kanji 2 (ten = juu)

If the numbering method is character string, the following information exists:

[character string length]

[character string] x length in bytes

[pointer to description]

[8 pointers to number strings] x 8

[outline style name] x 13(max) null terminated

[description] x ? null terminated

[level 1 num string] x 21(max) WP word string null terminated

[level 2 num string] x 21(max) WP word string null terminated

[level 3 num string] x 21(max) WP word string null terminated

[level 4 num string] x 21(max) WP word string null terminated

[level 5 num string] x 21(max) WP word string null terminated

[level 6 num string] x 21(max) WP word string null terminated

[level 7 num string] x 21(max) WP word string null terminated

[level 8 num string] x 21(max) WP word string null terminated


Packet Type 50 (0x32)

Personal Style Library Filename

[personal style library filename] x ? null terminated

If this packet ever has child IDs, the format will be that of the Native Filename packet type 0x07.


Packet Type 51 (0x33)

Shared Style Library Filename

[shared style library filename] x ? null terminated

If this packet ever has child IDs, the format will be that of the Native Filename packet type 0x07.


Packet Type 52 (0x34)

Personal and Shared Library File Date/Time

<date structure for personal style library file> x 10

<date structure for shared style library file> x 10

10-Byte Date Structure

[year]

<month>

<day>

<hour>

<minute>

<second> (unused = 0)

<day of week> (unused = 0)

<time zone> (unused = 0)

<unused> (= 0)


Packet Type 53 (0x35) - 63 (0x3F)

Reserved


Packet Type 64 (0x40)

Graphics Filename

If this packet does not have any children, the format is:

[graphics filename] x ? null terminated

If this packet does have children, the format is the following:

[number of child IDs]

[ID 1 (type=0x6F)] ID of child packet containing graphics data

[ID 2 (type=0x6F)] ID of child packet containing graphics data

.. ..

[ID n (type=0x6F)] ID of last child containing graphics data

[tag 1] tag flag for first child packet

[tag 2] tag flag for second child packet

.. ..

[tag n] last tag flag for last child packet

[graphics filename] x ? null terminated

Format for tag flags

0x0001 = data being kept internal

0x0010 = data being kept internal (hot link)

0x0011 = data being kept internal (warm link)

0x0012 = data being kept internal (cold link)