StyleTextPropAtom

Text style storage is organized in two run lists (one for character and paragraph properties). Each list consists of a 4-byte header defining what properties are stored inside the list. The list entries are numbers. Some are 2-byte and some are 4-byte numbers. Some properties are bitmasks.

Paragraph properties
Size Value Name Description
2 0xF bullet.bitmask Bitmask which stores bullet attributes.
Bits: BULLET, HARDFONT, HARDCOLOR, HARDSIZE
2 0x10 bullet.char bullet character
2 0x40 bullet.size Size of the bullet font
4 0x20 bullet.color RGB value of the bullet font color
2 0x800 alignment Text alignment. Possible values: LEFT = 0, CENTER = 1, RIGHT = 2, JUSTIFY = 3
2 0x1000 linespacing line spacing in points
2 0x2000 spacebefore space before a paragraph in points
2 0x4000 spaceafter space after a paragraph in points
2 0xA0000 unknown ?
Character properties
Size Hex Name Description
2 0xFFFF font.bitmask Bitmask which stores bold/italic/underlined attributes of the text
Bits: BOLD, ITALIC, UNDERLINE
2 0x10000 font.index Zero based index of the text font
2 0x20000 font.size Size of the text font
4 0x40000 font.color RGB value of the font color
Paragraph List format:

type description ----------- ------------------ int the number of characters it applies to short It seems it is always 0. int header which defines which attributes are applied to this part of the text The for each property we need to check if the corresponding bit in the list header. If it is set then we read 2 or 4 byte number depending on the attribute and decode it.

Character List format:

type description ----------- ------------------ int the number of characters it applies to int header which defines which attributes are applied to this part of the text The for each property we need to check if the corresponding bit in the list header. If it is set then we read 2 or 4 byte number depending on the attribute and decode it.