+ There are quite a number of records that affect the styling + of text, and a smaller number that are responsible for the + styling of paragraphs. +
++ By default, a given set of text will inherit paragraph and text + stylings from the appropriate master sheet. If anything differs + from the master sheet, then appropriate styling records will + follow the text record. +
++ (We don't currently know enough about master sheet styling + to write about it) +
++ Normally, powerpoint will have one text record (TextBytesAtom + or TextCharsAtom) for every paragraph, with a preceeding + TextHeaderAtom to describe what sort of paragraph it is. + If any of the stylings differ from the master's, then a + StyleTextPropAtom will follow the text record. This contains + the paragraph style information, and the styling information + for each section of the text which has a different style. + (More on StyleTextPropAtom later) +
++ For every font used, a FontEntityAtom must exist for that font. + The FontEntityAtoms live inside a FontCollection record, and + there's one of those inside Environment record inside the + Document record. (More on Fonts to be discovered) +
++ If the text or paragraph stylings for a given text record + differ from those of the appropriate master, then there will + be one of these records. +
++ Firstly, this contains the number of characters it applies to, + stored in a 2 byte little endian number. + Normally, this will be the same as the number of characters + in the text record. Then there are two values which encode + paragraph properties (alignment, text spacing etc), both 4 + byte little endian numbers. +
++ Following this is one block of information for each subsequent + bit of text with a different styling. (If your text was + 10 characters in blue, then 10 in red, you would have two blocks). + Firstly is the number of characters it applies to, or 0 if it + applies to all remaining text. (This is a 2 byte little endian + number). Then there is a number (4 byte little endian) that + encodes if the text is bold/italic/underlined. If that number + was non zero, it is followed by another 4 byte number, that + encodes further text styling information. If it was zero, + then it's followed by a 2 byte number. +
++ In the character styling block, the first number after the + character count indicated the bold/italic/underlined status + of the text. If you binary AND it with 0x00010000 (65536) and + get that value back, it is in bold. If you binary AND it with + 0x00020000 (131072) and get that value back, it is in italic. + If you binary AND it with 0x00040000 (262144) and get that + value back, it is underlined. +
+