The CHP is never stored in Word files. It is the result of decompression operations applied to CHPXs
The CHPX is stored in CHPX FKPS and within the STSH
(Note: when a CHPX is stored in an FKP it is prefixed by a one-byte count of bytes that records the size of the non-zero prefix of the CHPX. Since the count of bytes must begin on an even boundary within the FKP followed by the non-zero prefix, it's guaranteed that the int and FC fields of the CHPX are aligned on an odd-byte boundary. Using normal integer or long load instructions will cause address errors on a 68000. The best technique for reconstituting the CHPX is to move the non-zero prefix to the beginning of a local instance of a CHPX that has been cleared to zeros.)
b10 | b16 | field | type | size | bitfield | comments | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
0 | 0 | fBold | short | :1 | 0001 | text is bold when 1 , and not bold when 0. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fItalic | short | :1 | 0002 | italic when 1, not italic when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fRMarkDel | short | :1 | 0004 | when 1, text has been deleted and will be displayed with strikethrough when revision marked text is to be displayed | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fOutline | short | :1 | 0008 | outlined when 1, not outlined when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fFldVanish | short | :1 | 0010 | used internally by Word | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fSmallCaps | short | :1 | 0020 | displayed with small caps when 1, no small caps when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fCaps | short | :1 | 0040 | displayed with caps when 1, no caps when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fVanish | short | :1 | 0080 | when 1, text has "hidden" format, and is not displayed unless fPagHidden is set in the DOP | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
1 | 1 | fRMark | short | :1 | 0100 | when 1, text is newly typed since the last time revision marks have been accepted and will be displayed with an underline when revision marked text is to be displayed | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fSpec | short | :1 | 0200 | character is a Word special character when 1, not a special character when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fStrike | short | :1 | 0400 | displayed with strikethrough when 1, no strikethrough when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fObj | short | :1 | 0800 | embedded object when 1, not an embedded object when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fShadow | short | :1 | 1000 | character is drawn with a shadow when 1; drawn without shadow when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fLowerCase | short | :1 | 2000 | character is displayed in lower case when 1. No case transformation is performed when 0. This field may be set to 1 only when chp.fSmallCaps is 1. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fData | short | :1 | 4000 | when 1, chp.fcPic points to an FFDATA, the data structure binary data used by Word to describe a form field. The bit chp.fData may only be 1 when chp.fSpec is also 1 and the special character in the document stream that has this property is a chPicture (0x01). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fOle2 | short | :1 | 8000 | when 1, chp.lTagObj specifies a particular object in the object stream that specifies the particular OLE object in the stream that should be displayed when the chPicture fSpec character that is tagged with the fOle2 is encountered. The bit chp.fOle2 may only be 1 when chp.fSpec is also 1 and the special character in the document stream that has this property is a chPicture (0x01). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
2 | 2 | fEmboss | short | :1 | 0001 | text is embossed when 1 and not embossed when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fImprint | short | :1 | 0002 | text is engraved when 1 and not engraved when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fDStrike | short | :1 | 0004 | displayed with double strikethrough when 1, no double strikethrough when 0 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fUsePgsuSettings | short | :1 | 0008 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fBoldBi | short | :1 | 0010 | BiDi text is bold when 1, and not bold when 0. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fItalicBi | short | :1 | 0011 | BiDi text is italic when 1, and not italic when 0. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fBiDi | short | :1 | 0012 | Text run is BiDi when 1 and Latin when 0. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fDiacColor | short | :1 | 0014 | Diacritics follow Latin color when 1, BiDi color when 0. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
FNonGlyph | short | :1 | 0018 | Character is not glyphable when it's 1. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
short | : 7 | FFF0 | Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
4 | 4 | long | Reserved (Have Bidi flags in them) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
8 | 8 | ftc | short | no longer stored | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
10 | A | ftcAscii(rgftc[0]) | short | font for ASCII text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
12 | C | ftcFE(rgftc[1]) | short | font for Far East text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
14 | E | ftcOther(rgftc[2]) | short | font for non-Far East text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
16 | 10 | ftcBi(rgftc[3]) | short | font for BiDi text. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
18 | 12 | hps | unsigned short | font size in half points | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
20 | 14 | hpsBi | unsigned short | BiDi font size in half points. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
22 | 16 | Pad | unsigned short | Pad for Long alignment in vrgCompChp. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
24 | 18 | dxaSpace | long | space following each character in the run expressed in twip units. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
28 | 1C | iss | short | :3 | 0007 | superscript/subscript indices 0 means no super/subscripting 1 means text in run is superscripted 2 means text in run is subscripted | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kul | short | :4 | 0078 | underline code: 0 none 1 single 2 by word 3 double 4 dotted 5 hidden 6 thick 7 dash 8 dot (not used) 9 dot dash 10 dot dot dash 11 wave | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fSpecSymbol | short | :1 | 0080 | used by Word internally, not stored in file | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
29 | 1D | ico | short | :5 | 1F00 | color of text: 0 Auto 9 DkBlue 1 Black 10 DkCyan 2 Blue 11 DkGreen 3 Cyan 12 DkMagenta 4 Green 13 DkRed 5 Magenta 14 DKYellow 6 Red 15 DkGray 7 Yellow 16 LtGray 8 White | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fNumRunBi | short | :1 | 2000 | 1 if current Run is a Bidi Number. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fSysVanish | short | :1 | 4000 | used by Word internally, not stored in file | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fDiacRunBi | short | :1 | 8000 | 1 if current Run is a Bidi diacritic. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
30 | 1E | icoBi | unsigned short | color of Bidi text: 0 Auto 9 DkBlue 1 Black 10 DkCyan 2 Blue 11 DkGreen 3 Cyan 12 DkMagenta 4 Green 13 DkRed 5 Magenta 14 DKYellow 6 Red 15 DkGray 7 Yellow 16 LtGray 8 White | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
32 | 20 | hpsPos | short | super/subscript position in half points; positive means text is raised; negative means text is lowered. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
34 | 22 | lid | LID | language identification code (no longer stored here, see rglid below) Language Name | Language ID No Proofing | 0x0400 Arabic | 0x0401 Bulgarian | 0x0402 Catalan | 0x0403 Traditional Chinese | 0x0404 Simplified Chinese | 0x0804 Czech | 0x0405 Danish | 0x0406 German | 0x0407 Swiss German | 0x0807 Greek | 0x0408 U.S. English | 0x0409 U.K. English | 0x0809 Australian English | 0x0c09 Castilian Spanish | 0x040a Mexican Spanish | 0x080a Finnish | 0x040b French | 0x040c Belgian French | 0x080c Canadian French | 0x0c0c Swiss French | 0x100c Hebrew | 0x040d Hungarian | 0x040e Icelandic | 0x040f Italian | 0x0410 Swiss Italian | 0x0810 Japanese | 0x0411 Korean | 0x0412 Dutch | 0x0413 Belgian Dutch | 0x0813 Norwegian - Bokmal | 0x0414 Norwegian - Nynorsk | 0x0814 Polish | 0x0415 Brazilian Portuguese | 0x0416 Portuguese | 0x0816 Rhaeto-Romanic | 0x0417 Romanian | 0x0418 Russian | 0x0419 Croato-Serbian (Latin) | 0x041a Serbo-Croatian (Cyrillic) | 0x081a Slovak | 0x041b Albanian | 0x041c Swedish | 0x041d Thai | 0x041e Turkish | 0x041f Urdu | 0x0420 Bahasa | 0x0421 Ukrainian | 0x0422 Byelorussian | 0x0423 Slovenian | 0x0424 Estonian | 0x0425 Latvian | 0x0426 Lithuanian | 0x0427 Farsi | 0x0429 Basque | 0x042D Macedonian | 0x042F Afrikaans | 0x0436 Malaysian | 0x043E | ||
36 | 24 | lidDefault(rglid[0]) | LID | language for non-Far East text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
38 | 26 | lidFE(rglid[1]) | LID | language for Far East text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
40 | 28 | lidBi(rglid[2]) | LID | language for Bidi text | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
42 | 2A | idct | unsigned char | not stored in file | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
43 | 2B | idctHint | unsigned char | Identifier of Characte type 0->shared chars get non-FE props 1->shared chars get FE props (see Appendix C) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
44 | 2C | wCharScale | unsigned short | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
46 | 2E | fcPic | FC | offset in data stream pointing to beginning of a picture when character is a picture character (character is 0x01 and chp.fSpec is 1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
46 | 2E | fcObj | FC | offset in data stream pointing to beginning of a picture when character is an OLE1 object character (character is 0x20 and chp.fSpec is 1, chp.fOle2 is 0) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
46 | 2E | lTagObj | unsigned long | long word tag that identifies an OLE2 object in the object stream when the character is an OLE2 object character. (character is 0x01 and chp.fSpec is 1, chp.fOle2 is 1) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
50 | 32 | ibstRMark | short | index to author IDs stored in hsttbfRMark. used when text in run was newly typed when revision marking was enabled | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
52 | 34 | ibstRMarkDel | short | index to author IDs stored in hsttbfRMark. used when text in run was deleted when revision marking was enabled | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
54 | 36 | dttmRMark | DTTM | Date/time at which this run of text was entered/modified by the author. (Only recorded when revision marking is on.) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
58 | 3A | dttmRMarkDel | DTTM | Date/time at which this run of text was deleted by the author. (Only recorded when revision marking is on.) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
62 | 3E | short | reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
64 | 40 | istd | unsigned short | index to character style descriptor in the stylesheet that tags this run of text When istd is istdNormalChar (10 decimal), characters in run are not affected by a character style. If chp.istd contains any other value, chpx of the specified character style are applied to CHP for this run before any other exceptional properties are applied. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
66 | 42 | ftcSym | short | when chp.fSpec is 1 and the character recorded for the run in the document stream is chSymbol (0x28), chp.ftcSym identifies the font code of the symbol font that will be used to display the symbol character recorded in chp.xchSym. chp.ftcSym is an index into the rgffn structure. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
68 | 44 | xchSym | XCHAR | when chp.fSpec is 1 and the character recorded for the run in the document stream is chSymbol (0x28), the character stored chp.xchSym will be displayed using the font specified in chp.ftcSym. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
70 | 46 | idslRMReason | short | an index to strings displayed as reasons for actions taken by Word's AutoFormat code | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
72 | 48 | idslReasonDel | short | an index to strings displayed as reasons for actions taken by Word's AutoFormat code | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
74 | 4A | ysr | unsigned character | hyphenation rule 0 No hyphenation 1 Normal hyphenation 2 Add letter before hyphen 3 Change letter before hyphen 4 Delete letter before hyphen 5 Change letter after hyphen 6 Delete letter before the hyphen and change the letter preceding the deleted character | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
75 | 4B | chYsr | unsigned character | the character that will be used to add or change a letter when chp.ysr is 2,3, 5 or 6 | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
76 | 4C | cpg | unsigned short | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
78 | 4E | hpsKern | unsigned short | kerning distance for characters in run recorded in half points | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
80 | 50 | icoHighlight | short | :5 | 001F | highlight color (see chp.ico) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fHighlight | short | :1 | 0020 | when 1, characters are highlighted with color specified by chp.icoHighlight. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
kcd | short | :3 | 01C0 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fNavHighlight | short | :1 | 0200 | used internally by Word | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fChsDiff | short | :1 | 0400 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fMacChs | short | :1 | 0800 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
fFtcAsciSym | short | :1 | 1000 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
short | :3 | E000 | Reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
82 | 52 | fPropMark | unsigned short | when 1, properties have been changed with revision marking on | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
84 | 54 | ibstPropRMark | short | index to author IDs stored in hsttbfRMark. used when properties have been changed when revision marking was enabled | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
86 | 56 | dttmPropRMark | DTTM | Date/time at which properties of this were changed for this run of text by the author. (Only recorded when revision marking is on.) | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
90 | 5A | sfxtText | unsigned char | text animation: 0 no animation 1 Las Vegas lights 2 background blink 3 sparkle text 4 marching ants 5 marchine red ants 6 shimmer | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
91 | 5B | unsigned char | reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
92 | 5C | unsigned char | reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
93 | 5D | unsigned short | reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
95 | 5F | short | reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
97 | 61 | DTTM | reserved | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
101 | 65 | fDispFldRMark | byte | (Only valid for ListNum fields). When 1, the number for a ListNum field is being tracked in xstDispFldRMark—if that number is different from the current value, the number has changed. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
102 | 66 | ibstDispFldRMark | short | Index to author IDs stored in hsttbfRMark. used when ListNum field numbering has been changed when revision marking was enabled | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
104 | 68 | dttmDispFldRMark | DTTM | The date for the ListNum field number change | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
108 | 6C | xstDispFldRMark | XCHAR[16] | The string value of the ListNum field when revision mark tracking began | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
140 | 8C | shd | SHD | shading | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
142 | 8E | brc | BRC | border |
cbCHP (count of bytes of CHP) is 146 (decimal), 92(hex).
The standard CHP is all zeros except: