Cell formatting starts with the Font, Format and XF records described on cells and rows. This page covers the rest: named cell styles, the extension records Excel 2007 added for theme colours, tints and gradients, differential formats, table styles and conditional formatting. Style, palette, theme, DXF and table style records sit in the globals substream; conditional formatting records sit in each worksheet substream. Section numbers are those of [MS-XLS] v20250819; offsets count from the start of the record data, integers are little-endian, and bit 0 is the lowest bit. The future record headers (FrtHeader and its relatives) are on the workbook settings page.
Cell styles
Style (0x0293)
A named cell style (2.4.269).
| Offset | Size | Field | Meaning |
|---|---|---|---|
0 | 2 | bits 0–11 ixfe; 12–14 unused; 15 fBuiltIn | Index of the style’s XF record (a style XF); whether the style is built in. |
2 | 2 | builtInData | Only when fBuiltIn is 1: a BuiltInStyle, with istyBuiltIn at most 9. |
2 | varies | user | Only when fBuiltIn is 0: the style name, an XLUnicodeString of 1 to 255 characters. |
BuiltInStyle (2.5.16) is two bytes:
istyBuiltIn, the built-in style number of ECMA-376 Part 1 section 18.8.7
(the same ids as XLSX’s builtinId),
and iLevel, for RowLevel and ColLevel styles (istyBuiltIn 1
or 2) the outline level minus 1 (0 to 6), otherwise 0xFF.
StyleExt (0x0892)
Extra properties of the style in the Style record just before it (2.4.270).
| Offset | Size | Field | Meaning |
|---|---|---|---|
0 | 12 | frtHeader | FrtHeader, rt = 0x0892. |
12 | 1 | flags | Bit 0 fBuiltIn (as in the Style record); 1 fHidden (not shown in the user interface); 2 fCustom (a built-in style the user changed); 3–7 reserved. |
13 | 1 | iCategory | 0 custom, 1 good/bad/neutral, 2 data model, 3 titles and headings, 4 themed cell styles, 5 number format styles. |
14 | 2 | builtInData | BuiltInStyle, the same as in the Style record; 0xFFFF when not built in. |
16 | varies | stName | LPWideString (2-byte count, UTF-16), at most 255 characters; for a user style the same name as in the Style record. |
| … | varies | xfProps | The style’s formatting as XFProps. |
StyleXF: the XF of a style
An XF record whose
fStyle bit is 1 describes a style; its parent index should be
0xFFF, its f123Prefix bit is 0, and its last 14 bytes are a
StyleXF (2.5.249) instead of a CellXF. It has the same fields as CellXF but no
fAtr… bits; a colour index of 0 means “not specified” (and the matching
border style must then be 0 too).
| Bits | Field | Meaning |
|---|---|---|
| 0–2 | alc | Horizontal alignment (HorizAlign). |
| 3 | fWrap | Wrap text. |
| 4–6 | alcV | Vertical alignment (VertAlign). |
| 7 | fJustLast | Justify the last line too; then alc must be 7. |
| 8–15 | trot | XFPropTextRotation. |
| 16–19 | cIndent | Indent level, 0 to 15. |
| 20 | fShrinkToFit | Shrink to fit. |
| 21 | reserved | |
| 22–23 | iReadOrder | 0 context, 1 left to right, 2 right to left. |
| 24–31 | unused | |
| 32–35, 36–39, 40–43, 44–47 | dgLeft, dgRight, dgTop, dgBottom | Border styles (BorderStyle, 0 to 13). |
| 48–54, 55–61 | icvLeft, icvRight | Border colours (IcvXF or 0). |
| 62–63 | grbitDiag | 0 no diagonal, 1 down, 2 up, 3 both. |
| 64–70, 71–77, 78–84 | icvTop, icvBottom, icvDiag | Border colours. |
| 85–88 | dgDiag | Diagonal border style. |
| 89 | reserved | |
| 90–95 | fls | Fill pattern (FillPattern; 1 solid uses only the foreground colour). |
| 96–102, 103–109 | icvFore, icvBack | Pattern colours (IcvXF). |
| 110–111 | reserved |
The HorizAlign, VertAlign, BorderStyle and FillPattern codes are listed under CellXF.
Formatting extensions
XFExt (0x087D)
Extra properties for one XF record (2.4.355): FrtHeader (12, rt =
0x087D); 2 reserved; ixfe (2, the XF it extends, at most
4,050); 2 reserved; cexts (2); then cexts
ExtProp structures from offset 20.
XFCRC (0x087C)
Present exactly when XFExt records are (2.4.354): FrtHeader (12); 2 reserved;
cxfs (2, the number of XF records, 16 to 4,050); crc (4), a
checksum, as defined in [MS-OSHARED] section 2.4.3, over the data of the XF records.
It shows whether the XF records were changed by a program that does not know about
XFExt records.
ExtProp
Four bytes, extType (2) and cb (2, size of the whole
ExtProp), then the data (2.5.108):
extType | Data |
|---|---|
0x0004, 0x0005 | Fill foreground and background colour (FullColorExt). |
0x0006 | Gradient fill (XFExtGradient). |
0x0007–0x000B | Top, bottom, left, right and diagonal border colours (FullColorExt). |
0x000D | Text colour (FullColorExt). |
0x000E | Font scheme (2 bytes, FontScheme). |
0x000F | Indent level (2 bytes, at most 250). |
Colour structures
Every extended colour starts from an XColorType (2.5.279): 0 automatic, 1 indexed (a palette index, IcvXF), 2 RGB, 3 theme colour, 4 not set. Theme colours (ColorTheme, 2.5.49) are 0 dark 1, 1 light 1, 2 dark 2, 3 light 2, 4–9 accent 1 to 6, 10 hyperlink, 11 followed hyperlink (not allowed in CF12).
| Structure | Size | Layout |
|---|---|---|
| FullColorExt (2.5.155) | 16 | xclrType (2); nTintShade (2, signed; positive lightens, negative darkens); xclrValue (4: 0 for types 0 and 4, an IcvXF for 1, a LongRGBA for 2, a ColorTheme for 3); 8 unused. |
| XFPropColor (2.5.285) | 8 | Byte 0: bit 0 fValidRGBA (must be 1), bits 1–7 xclrType; icv (1, palette or theme index); nTintShade (2, signed, mapped to −1.0 to 1.0, never −32,768); dwRgba (4, LongRGBA, the resulting colour). |
| CFColor (2.5.21) | 16 | xclrType (4; not 4, and not 0 except in SheetExt); xclrValue (4: ColorICV, a 4-byte palette index other than 0x40/0x41, for 1; LongRGBA for 2; ColorTheme for 3); numTint (8, a double from −1.0 to 1.0). |
| LongRGB, LongRGBA (2.5.177, 2.5.178) | 4 | Red, green, blue, then a reserved byte (LongRGB) or alpha (LongRGBA). |
| XFExtGradient (2.5.280) | varies | gradient (44, XFPropGradient); cGradStops (4, up to 256); that many GradStop: xclrType (2), xclrValue (4), numPosition (8, 0.0 to 1.0), numTint (8, −1.0 to 1.0) (2.5.156). |
FontScheme (2.5.131): 0 none, 1 major (headings) font, 2 minor (body)
font, 0xFF not set.
XFProps: property lists
StyleExt and DXF hold formatting as a list (2.5.288): 2 reserved bytes,
cprops (2), then cprops XFProp structures. Each XFProp is
xfPropType (2), cb (2, the size of the whole XFProp) and the
data. A list may hold a pattern fill (type 0) or a gradient (types 3 and 4), never
both.
| Type | Data | Type | Data |
|---|---|---|---|
0x00 | Fill pattern (FillPattern, 1 byte) | 0x16 | Shrink to fit (1 byte, 0 or 1) |
0x01 | Foreground colour (XFPropColor) | 0x17 | Merged cell (1 byte) |
0x02 | Background colour (XFPropColor) | 0x18 | Font name (LPWideString, at most 32 characters) |
0x03 | Gradient (XFPropGradient), followed by its stops | 0x19 | Weight (Bold: 0x0190 normal, 0x02BC bold) |
0x04 | Gradient stop: 2 unused, numPosition (8), colour (XFPropColor) | 0x1A | Underline: 0 none, 1 single, 2 double, 0x21 single accounting, 0x22 double accounting |
0x05 | Text colour (XFPropColor) | 0x1B | Script: 0 normal, 1 superscript, 2 subscript |
0x06–0x0C | Top, bottom, left, right, diagonal, vertical and horizontal border (XFPropBorder: XFPropColor then a 2-byte BorderStyle) | 0x1C–0x21 | Italic, strikethrough, outline, shadow, condensed, extended (1 byte each) |
0x0D, 0x0E | Diagonal up, diagonal down used (1 byte) | 0x22 | Character set (1 byte, as in LOGFONT) |
0x0F | Horizontal alignment (HorizAlign) | 0x23 | Font family (1 byte, 0 to 5) |
0x10 | Vertical alignment (VertAlign) | 0x24 | Size in twips (4 bytes, 20 to 8,191) |
0x11 | Text rotation (XFPropTextRotation) | 0x25 | Font scheme (FontScheme) |
0x12 | Absolute indent (2 bytes, at most 15) | 0x26 | Number format string (as Format’s stFormat) |
0x13 | Reading order (ReadingOrder) | 0x29 | Number format id (IFmt, 2 bytes) |
0x14 | Wrap text (1 byte) | 0x2A | Relative indent (2 bytes signed, −15 to 15, or 255 for none) |
0x15 | Justify distributed (1 byte; then type 0x0F must be 7) | 0x2B, 0x2C | Locked, hidden (1 byte each) |
Types 0x27 and 0x28 are not used; the highest is
0x2C. XFPropTextRotation (2.5.289) is one byte: 0–90 anticlockwise
degrees, 91–180 clockwise 1 to 90 degrees, 255 vertical text.
XFPropGradient (2.5.286, 44 bytes):
type (4: 0 linear, 1 rectangular), then five doubles:
numDegree (angle of a linear gradient), numFillToLeft,
numFillToRight, numFillToTop,
numFillToBottom (the inner rectangle of a rectangular gradient, 0.0 to
1.0).
Palette and theme
Palette (0x0092, 2.4.188):
ccv (2, must be 56), then 56 LongRGB colours that replace palette
entries 8 to 63 (the default palette is under
colour indexes).
Theme (0x0896, 2.4.326): FrtHeader (12,
rt = 2198); dwThemeVersion (4): 0 a custom theme, 124226
the default theme; then, required for a custom theme, the theme itself as defined in
ECMA-376 Part 1 section 14.2.7.
Differential formats and table styles
DXF (0x088D)
One differential format, referenced by index from table style elements (2.4.97):
FrtHeader (12, rt = 2189); 2 bytes of flags (bit 1
fNewBorder: the properties may include inside borders of a range; bits 0
and 2 unused; 3–15 reserved); then XFProps.
TableStyles (0x088E)
| Offset | Size | Field | Meaning |
|---|---|---|---|
0 | 12 | frtHeader | FrtHeader. |
12 | 4 | cts | Number of table styles, built-in and custom; at least 144 (the built-in ones). |
16 | 2 | cchDefTableStyle | Length of the default table style name (at most 255). |
18 | 2 | cchDefPivotStyle | Length of the default PivotTable style name. |
20 | varies | rgchDefTableStyle, rgchDefPivotStyle | The two names, UTF-16, no flag byte. |
TableStyle records follow, one per custom style.
TableStyle (0x088F)
FrtHeader (12); 2 bytes of flags (bit 1 fIsPivot: usable for
PivotTables; bit 2 fIsTable: usable for tables; others reserved);
ctse (4, the number of TableStyleElement records that follow, at most
28); cchName (2, 1 to 255); rgchName (UTF-16) (2.4.320).
TableStyleElement (0x0890)
FrtHeader (12); tseType (4, below); size (4, rows or
columns per stripe, 1 to 9, only for types 5–8); index (4, a DXFId: the
zero-based index of a DXF record) (2.4.321).
tseType | Area | tseType | Area (PivotTables only) |
|---|---|---|---|
| 0 | Whole table (in a PivotTable also page field and item captions) | 13 | Outermost subtotal columns |
| 1 | Header row | 14, 15 | Alternating even and odd subtotal columns |
| 2 | Total row (PivotTable grand total row) | 16 | Outermost subtotal rows |
| 3 | First column (PivotTable row label area) | 17, 18 | Alternating even and odd subtotal rows |
| 4 | Last column (PivotTable grand total column) | 19 | Empty rows after each subtotal row |
| 5, 6 | Row stripe bands 1 and 2 | 20 | Outermost column subheadings |
| 7, 8 | Column stripe bands 1 and 2 | 21, 22 | Alternating even and odd column subheadings |
| 9 | First cell of the header row | 23 | Outermost row subheadings |
| 10 | Last cell of the header row (tables only) | 24, 25 | Alternating even and odd row subheadings |
| 11 | First cell of the total row (tables only) | 26 | Page field captions |
| 12 | Last cell of the total row (tables only) | 27 | Page item captions |
Conditional formatting
A worksheet holds conditional formats as groups: a CondFmt record followed by its CF records (the older form, at most three rules), or a CondFmt12 record followed by CF12 records (the newer form, which adds colour scales, data bars, icon sets and filters). CFEx records add the newer properties to rules in the older form.
CondFmt (0x01B0)
| Offset | Size | Field | Meaning |
|---|---|---|---|
0 | 2 | ccf | Number of CF records that follow, 1 to 3. |
2 | 2 | bit 0 fToughRecalc; bits 1–15 nID | The formats are slow to work out (a redraw hint); an identifier CFEx records refer to. |
4 | 8 | refBound | Ref8U enclosing all the ranges. |
12 | varies | sqref | SqRefU: a 2-byte count (1 to 1,026 here) and that many Ref8U ranges the rules apply to. |
CF (0x01B1)
| Offset | Size | Field | Meaning |
|---|---|---|---|
0 | 1 | ct | 1 compare the cell value (using cp); 2 the formula rgce1 is true. |
1 | 1 | cp | With ct 1: comparison. |
2 | 2 | cce1 | Size of rgce1, at most 16,409. |
4 | 2 | cce2 | Size of rgce2; 0 unless ct is 1 and cp is 1 or 2. |
6 | varies | rgbdxf | The formatting (DXFN). |
| … | varies | rgce1, rgce2 | Formulas without length prefixes (CFParsedFormulaNoCCE). |
Comparisons (cp), with v the cell value and
v1, v2 the formulas’ results: 1 between (inclusive, in either
order), 2 not between, 3 equal to v1, 4 not equal, 5 greater than, 6 less
than, 7 greater than or equal, 8 less than or equal. Formulas in conditional formats
(2.5.198.5–7) are ordinary parsed
formulas but may not use 3-D references, external names, unions, intersections,
arrays, PtgExp, PtgTbl or the natural-language Ptgs, may not consist of a single area
reference, and must give a value.
CondFmt12 (0x0879)
FrtRefHeaderU (12, fFrtRef 1, its range equal to
refBound), then a CondFmtStructure laid out exactly like the CondFmt
record above but with no upper limit on ccf, the number of CF12 records
that follow (2.4.57, 2.5.56).
CF12 (0x087A)
| Offset | Size | Field | Meaning |
|---|---|---|---|
0 | 12 | frtRefHeader | FrtRefHeader, range all zero. |
12 | 1 | ct | 1 cell value comparison; 2 formula; 3 colour scale (rgbCT is a CFGradient); 4 data bar (CFDatabar); 5 top/bottom filter (CFFilter); 6 icon set (CFMultistate). |
13 | 1 | cp | Comparison, as for CF. |
14 | 2 | cce1 | 0 unless ct is 1 or 2. |
16 | 2 | cce2 | 0 unless a between comparison. |
18 | varies | dxf | DXFN12; empty (size 0) for types 3, 4 and 6. |
| … | varies | rgce1, rgce2 | The comparison formulas. |
| … | varies | fmlaActive | CFParsedFormula (2-byte length then tokens): for types 3, 4 and 6 the rule applies only when this is true. |
| … | 1 | flags | Bit 1 fStopIfTrue (do not evaluate lower-priority rules for a cell that meets this one; 0 for types 3, 4, 6); other bits unused or reserved. |
| … | 2 | ipriority | Priority; rules are evaluated in increasing order; unique in the sheet. |
| … | 2 | icfTemplate | Template the rule came from. |
| … | 1 | cbTemplateParm | Always 16. |
| … | 16 | rgbTemplateParms | Template parameters. |
| … | varies | rgbCT | The type-specific data named under ct; absent for types 1 and 2. |
icfTemplate values: 0 cell value, 1 formula, 2 colour
scale, 3 data bar, 4 icon set, 5 filter, 7 unique values, 8 contains text, 9
contains blanks, 10 no blanks, 11 contains errors, 12 no errors, 15 today, 16
tomorrow, 17 yesterday, 18 last 7 days, 19 last month, 20 next month, 21 this week,
22 next week, 23 last week, 24 this month, 25 above average, 26 below average, 27
duplicate values, 29 above or equal to average, 30 below or equal to average.
Template parameters (16 bytes)
| Template | Structure | Layout |
|---|---|---|
| 5 | CFExFilterParams | Byte 0: bit 0 fTop (1 top items, 0 bottom), bit 1 fPercent; iParam (2): a percentage up to 100 or a count up to 1,000; 13 reserved. |
| 8 | CFExTextTemplateParams | ctp (2): 0 contains, 1 does not contain, 2 begins with, 3 ends with; 14 reserved. |
| 15–24 | CFExDateTemplateParams | dateOp (2), tied to the template: 15→0, 16→6, 17→1, 18→2, 19→5, 20→8, 21→3, 22→7, 23→4, 24→9; 14 reserved. |
| 25, 26, 29, 30 | CFExAveragesTemplateParams | iParam (2): 0, 1 or 2 standard deviations from the average; 14 reserved. |
| others | CFExDefaultTemplateParams | 16 unused bytes. |
Colour scales, data bars, icon sets and filters
A CFVO (2.5.39) gives a threshold: cfvoType
(1), a CFVOParsedFormula (2-byte length, non-zero for type 7, then tokens without
relative references), and, when the formula is empty and the type is not 2 or 3, a
double numValue. With X the formula’s result or
numValue: 1 the number X; 2 the lowest value in the range; 3
the highest; 4 lowest + X% of (highest − lowest); 5 the Xth
percentile; 7 the formula’s result. For types 4 and 5, X is above 0 and
below 100.
| Structure | Layout |
|---|---|
| CFGradient (colour scale, 2.5.32) | 2 unused, 1 reserved; cInterpCurve (1, 2 or 3 points); cGradientCurve (1, the same); flags (1: bit 0 fClamp, use the end points for values outside them, should be 1; bit 1 fBackground, must be 1); then cInterpCurve CFGradientInterpItem (a CFVO and numDomain, a double: 0.0, 0.5 for the middle of three, 1.0) and cGradientCurve CFGradientItem (numGrange, the same 0.0/0.5/1.0, and a 16-byte CFColor). Values map linearly between the points. |
| CFDatabar (data bar, 2.5.22) | 2 unused, 1 reserved; flags (1: bit 0 fRightToLeft, bit 1 fShowValue); iPercentMin (1) and iPercentMax (1, above it, at most 100): bar lengths as % of the cell width; color (16, CFColor); cfvoDB1 (values at or below it get the shortest bar) and cfvoDB2 (at or above it the longest). |
| CFMultistate (icon set, 2.5.36) | 2 unused, 1 reserved; cStates (1: 3 for sets 0–7, 4 for 8–12, 5 for 13–16); iIconSet (1, below); flags (1: bit 0 fIconOnly, hide the value; bit 2 fReverse); cStates CFMStateItem: a CFVO, fEqual (1: whether a value equal to the threshold passes it) and 4 unused bytes. |
| CFFilter (top/bottom, 2.5.30) | cbFilter (2, size of the rest); 1 reserved; flags (1: bit 0 fTop, bit 1 fPercent); iParam (2: a percentage up to 100 or a count up to 1,000). |
The specification shows the 17 iIconSet values as pictures;
the KPISets enumeration (2.5.170) uses the same numbers, agrees with the icon counts
above, and names them: 0
3 arrows, 1 3 grey arrows, 2 3 flags, 3 3 traffic lights (1), 4 3 traffic lights (2),
5 3 signs, 6 3 symbols, 7 3 symbols (2), 8 4 arrows, 9 4 grey arrows, 10 4 red to
black, 11 4 ratings, 12 4 traffic lights, 13 5 arrows, 14 5 grey arrows, 15 5
ratings, 16 5 quarters. (In the KPISets enumeration −1 means no icon, used for
sorting.)
CFEx (0x087B)
FrtRefHeaderU (12, fFrtRef 1, the CondFmt’s range);
fIsCF12 (4: 0 extends a CF rule, 1 extends the CF12 record that must
follow); nID (2, the CondFmt it belongs to); then, only when
fIsCF12 is 0, a CFExNonCF12 (2.4.44, 2.5.27):
| Offset | Size | Field | Meaning |
|---|---|---|---|
0 | 2 | icf | Which CF record after the CondFmt (from 0). |
2 | 1 | cp | The comparison again (0 none), when the CF’s ct is 1. |
3 | 1 | icfTemplate | Low byte of a CF12 template value. |
4 | 2 | ipriority | Priority, unique in the sheet. |
6 | 1 | flags | Bit 0 fActive (0: the rule is ignored); bit 1 fStopIfTrue; others reserved or unused. |
7 | 1 | fHasDXF | 1: a DXFN12 follows. |
8 | varies | dxf | DXFN12, when fHasDXF is 1. |
| … | 1, 16 | cbTemplateParm, rgbTemplateParms | 16 and the template parameters. |
DXFN: differential formatting
Conditional formats and table features store their formatting as a DXFN (2.5.95):
a 6-byte header, then whichever parts its ibitAtr… bits say are present,
in the order number format, font, alignment, border, pattern, protection. The
“ninch” bits mean “not set: ignore this property”.
| Bits | Field | Meaning |
|---|---|---|
| 0–7 | alchNinch, alcvNinch, wrapNinch, trotNinch, kintoNinch, cIndentNinch, fShrinkNinch, fMergeCellNinch | Ignore the alignment part’s horizontal alignment, vertical alignment, wrap, rotation, justify-last, indent, shrink and merge. |
| 8, 9 | lockedNinch, hiddenNinch | Ignore the protection flags. |
| 10–15 | glLeftNinch, glRightNinch, glTopNinch, glBottomNinch, glDiagDownNinch, glDiagUpNinch | Ignore those borders (both diagonal bits: ignore the diagonal style and colour too). |
| 16–18 | flsNinch, icvFNinch, icvBNinch | Ignore the pattern and its colours. |
| 19, 20 | ifmtNinch, fIfntNinch | Ignore the number format; the font index. |
| 21–24 | unused, reserved | |
| 25–30 | ibitAtrNum, ibitAtrFnt, ibitAtrAlc, ibitAtrBdr, ibitAtrPat, ibitAtrProt | Which parts follow. |
| 31 | iReadingOrderNinch | Ignore the reading order. |
| 32 | fIfmtUser | The number format part is a format string, not an id. |
| 33 | unused | |
| 34 | fNewBorder | 0 borders apply to every cell of the range, 1 only to its outline. |
| 35–46 | reserved | |
| 47 | fZeroInited | The reading order is to be taken into account. |
| Part | Size | Layout |
|---|---|---|
| Number format (DXFNum) | 2 or varies | With fIfmtUser 0, DXFNumIFmt: an unused byte and the format id (1 byte). With 1, DXFNumUsr: cb (2, size of the part) and the format string (XLUnicodeString). |
| Font (DXFFntD, 2.5.93) | 118 | cchFont (1); the name without its count (XLUnicodeStringNoCch, at most 62 or 31 characters) padded to 63 bytes; stxp (16, below) at 64; icvFore (4: −1 ignore, 32,767 default text colour, else a font colour index) at 80; 4 reserved; tsNinch (4, a Ts: ignore italic, strikeout) at 88; fSssNinch, fUlsNinch, fBlsNinch (4 each: ignore script, underline, weight) at 92–103; 4 unused; ich (4) and cch (4), −1 for a whole-cell format; iFnt (2, 0 the default font, otherwise use the name) at 116. |
| Alignment (DXFALC) | 8 | Bits 0–2 alc, 3 fWrap, 4–6 alcv, 7 fJustLast, 8–15 trot, 16–19 cIndent (absolute, used only when iIndent is 255), 20 fShrinkToFit, 21 fMergeCell, 22–23 iReadingOrder, 24–31 unused; then iIndent (4, signed: relative indent −15 to 15, or 255 for none). |
| Border (DXFBdr) | 8 | Bits 0–3, 4–7, 8–11, 12–15 left, right, top, bottom styles; 16–22 left and 23–29 right colours; 30 diagonal down, 31 diagonal up; 32–38, 39–45, 46–52 top, bottom and diagonal colours; 53–56 diagonal style; 57–63 unused. |
| Pattern (DXFPat) | 4 | Bits 0–9 unused, 10–15 fls, 16–22 foreground colour, 23–29 background colour, 30–31 unused. |
| Protection (DXFProt) | 2 | Bit 0 locked, bit 1 hidden, others reserved. |
Stxp (2.5.248, 16 bytes): twpHeight (4,
height in twips, 20 to 8,191, or −1 to ignore); ts (4, a Ts: bit 1
italic, bit 7 strikeout); bls (2: 0x0190 normal,
0x02BC bold, 0xFFFF ignore); sss (2: 0 normal,
1 superscript, 2 subscript, 0xFFFF ignore); uls (1: 0
none, 1 single, 2 double, 0x21 single accounting, 0x22
double accounting, 0xFF ignore); bFamily (1, 0 to 5);
bCharSet (1); 1 unused.
DXFN12 (2.5.96): cbDxf (4). When it is 0,
two reserved bytes follow and there is no formatting; otherwise a DXFN and, if
cbDxf is larger than the DXFN, an XFExtNoFRT: 2 reserved bytes,
0xFFFF, 2 reserved, cexts (2) and that many
ExtProp (2.5.281). DXFN12List and DXFN12NoCB, used by table
features, are the same DXFN-plus-optional-XFExtNoFRT pair without the count.