Microsoft Works Word Processor Format Gallery
Under the Format menu of Works Word Processor, the Format Gallery dialog box allows formatting a selection or the entire document using a font set and a color set. They both have a single word as a name, so the combination creates a two-word style, for example Hefty Spice or Casual Ocean. Different styles are being used depending on the template, but for any non-built-in template or for blank documents, a “general” style file will be used. Up to 64 custom styles can also be saved, and those will ignore the selected font and color sets.
The Format Gallery was introduced in Works 6.0, in 2001. I have for now tested this with Works 7.0 on Windows 98SE, 8.0 on Windows 2000, and 9.0 on Windows XP.
The default styles are loaded from text files, and custom styles are managed in the Registry. Both share the same options, so I will describe the two storage methods first, then describe all the available options.
Format files
The default styles for templates and for blank documents are Windows-1252 text files with a .fmt
extension, found at %Program Files%\Microsoft Works\<LCID>\WkThm*.fmt
. The default style for blank documents (“general”) is called WkThmGen.fmt
. Removing all the other .fmt
files does not seem to have any effect, even when using the various built-in templates offered in the Task Launcher, so I am not sure what they really are for.
Format files define one or more style sets, followed by one or more color sets.
Statements
Format files are parsed as a series of tokens separated by one or more whitespace characters. All whitespace characters appear to be supported. Tokens are at most 63 characters long.
Statements are made of one token specifying the instruction, and one or more tokens specifying the arguments. Most statements require only one token.
Style sets
Style sets are a list of one or more styles. They have a name, which is a single token, and a zero-based numeric index, which is incremented with each new style set.
Duplicate names are allowed. Duplicate or non-sequential indices are not permitted.
The StyleSet
statement exits the context of any previous style set and style, and creates a new one:
StyleSet 0 Simple
Styles
Styles are a list of zero or more style options. They have a zero-based numeric index, which is incremented with each new style within a style set. Duplicate or non-sequential indices are not permitted.
The Style
statement exits the context of any previous style, and creates a new style within the same style set:
Style 4
Styles that define zero style options will not cause any error, but they will not be displayed in the Format Gallery.
Style options
A style option defines some attribute on a style, like the font name, size, color, text alignment, etc.
They refer to each of those attributes by using integer IDs. It is normally expected that one ID will be set only once in a style, but repeated definitions are allowed.
When the same attribute is defined multiple times in the same style:
- The first statement is displayed in the style’s tooltip in the Format Gallery, and actually set when clicking the style.
- The last statement is used to build the style’s preview in the Format Gallery, as well as detecting whether the style is currently applied to the selected text.
- Any intermediate statements are ignored.
For most attributes, just one token will be allowed and used as the value. For attributes related to font names, every token will be consumed until a line break. This allows using font names with spaces, like Century Gothic
. Font names are limited to 63 characters, as if they were a single token.
Attributes have different data types, and the exact kinds of tokens allowed depend on those types. See the Data types section.
Here is an example with three options:
1 1 4 Century Gothic
5 64
1 1
makes the text bold, 4 Century Gothic
sets the font name and requires a line break to end, and 5 64
sets the font size to 64 points.
Color references
Within a style, the ColorIndex
statement makes a reference to a color by its index within any color set.
Which color set is being referenced is unknown, as this is a choice left to the user. This implies that all color sets should have an equal amount of colors, and that each color index should have some semantic meaning, such as “primary color”, “accent color”, etc.
The BackgroundColorIndex
statement is also allowed, and follows the same rules. It however is not displayed in the Format Gallery’s preview, or applied.
ColorIndex 9
BackgroundColorIndex 17
Color sets
Color sets are a list of one or more colors. They have a name, which is a single token, and a zero-based numeric index, which is incremented with each new color set.
Duplicate names are allowed. Duplicate or non-sequential indices are not permitted.
The ColorSet
statement exits the context of any previous color set, and creates a new one:
ColorSet 7 Citrus
Colors
Color
statements define an RGB color within a color set. They have a zero-based numeric index, which is incremented with each new color within a color set. Duplicate or non-sequential indices are not permitted.
Each of the three red, green and blue components must always be specified. They accept numbers between 0 and 256.
The value 256 is only allowed when all three components are equal to 256; if only one or two or them is set to 256, an error occurs and the Format Gallery is disabled. Having all three components set to 256 sets the color to Automatic.
Color 2 Red 0 Green 255 Blue 128
Color 3 Red 256 Green 256 Blue 256
Comments
A single token starting with a #
character may be skipped, but only in the following cases:
- Immediately before a
StyleSet
statement; - Immediately before a
Style
statement, for any style other than the first style of a style set (Style 0
); - Immediately before a
ColorSet
statement.
EBNF grammar
char = ? any Windows-1252 non-whitespace printable character ? ;
digit = "0" | "1" | "2" | "3" | "4" | "5" | "6" | "7" | "8" | "9" ;
space = ? any Windows-1252 whitespace character ? ;
spaces = space, { space } ;
line break = ? ASCII characters 10 (line feed) or 13 (carriage return) ? ;
token = char, 62 * [ char ] ;
integer = ( "-" | "+" | digit ), 62 * [ digit ] ;
float = ( [ integer ], [ ".", { digit } ], [ ( "e" | "E" ), [ integer ] ] ) - "" ;
comment = "#", 62 * [ char ];
style declaration = ( comment, spaces ), "Style", spaces, integer ;
numeric style option = integer, spaces, token ;
color option = ( "Background" ), "ColorIndex", spaces, integer ;
font option = integer, spaces, char, 62 * { char | space }, line break ;
style option = color option | numeric style option ;
style = style declaration, { spaces, style option } ;
style set declaration = ( comment, spaces ), "StyleSet", spaces, integer, spaces, token ;
style set = style set declaration, spaces, { style, spaces }, style ;
red = "Red", spaces, integer ;
green = "Green", spaces, integer ;
blue = "Blue", spaces, integer ;
color = "Color", spaces, integer, spaces, red, spaces, green, spaces, blue ;
color set declaration = ( comment, spaces ), "ColorSet", spaces, integer, spaces, token ;
color set = color set declaration, spaces, { color, spaces }, color ;
format file = style set, { spaces, style set }, spaces, color set, { spaces, color set } ;
Failure modes
As it was never expected for anyone other that Microsoft to edit those files, the parser lacks many defenses against invalid syntax. This leads to various possible errors, and I am documenting here the ones I have met.
Buffer overrun
The Visual C++ runtime library shows an error dialog reporting a buffer overrun in the following cases:
- Any single token exceeds 63 characters.
- A font name exceeds 63 characters.
Unknown software exception
Windows reports that Word Processor has failed with an unhandled unknown software exception in the following cases:
- Referencing a non-existent color with
ColorIndex
orBackgroundColorIndex
; - Referencing a color with
ColorIndex
orBackgroundColorIndex
whose index is duplicated in the currently selected color set; - Referencing a color with
ColorIndex
orBackgroundColorIndex
whose definition in the currently selected color set is preceded by unexpected statements.
Memory access violation
In some extreme cases, it is possible to get Word Processor to try to access memory at addresses that do not exist:
- Defining a style option for the IDs 48, 61 or 62 with very large integers;
- Defining a style option for the IDs 12804 and above with any value.
Missing files error
In the cases where parsing errors are properly handled, the Format Gallery may show an error dialog box:
Works cannot find the files necessary to start the Works Format Gallery. The files may have been moved or deleted. To restore the files, reinstall Works, and then try starting the Format Gallery again.
Clicking OK causes the Format Gallery button in the toolbar and under the Format menu to be disabled, but the rest of the software works as expected.
I have hit this error in the following cases:
- Deleting the
WkThmGen.fmt
file; - Using unknown statements;
- Using statements that are unexpected in the current context, for example defining a
Color
inside a style set; - Having zero style sets defined in the file;
- Having zero color sets defined in the file;
- Defining a style set after a color set;
- Defining a style or color set with a duplicate or non-sequential index;
- Using an invalid type for a style option.
Custom styles
Custom styles are stored as registry keys, with a lot more detail than for Spreadsheet or Database. Here is the default style in a blank document, stored as a custom style in the registry, under HKEY_CURRENT_USER\Software\Microsoft\Works\<Version>\Themes\CustomStyles
.
Each key is named after a base 10 index, padded with zeroes to 8 characters. You can create keys with different names, and they will be correctly parsed. Adding or deleting a style will rename those unexpected names, ordering the keys alphabetically.
Here is an example of the registry key created when saving the default style of a blank document as a custom style:
Windows Registry Editor Version 5.00
[HKEY_CURRENT_USER\Software\Microsoft\Works\9.0\Themes\CustomStyles\00000000]
"pidBold"=dword:00000000
"pidItalic"=dword:00000000
"pidForeColor"=dword:ff676983
"pidTextForeColor"=dword:ff676983
"pidFontName"="Times New Roman"
"pidFontSize"=dword:41200000
"pidEASpacing"=dword:00000000
"pidStrikeThrough"=dword:00000000
"pidUnderline"=dword:00000000
"pidCaps"=dword:00000000
"pidEmboss"=dword:00000000
"pidEngrave"=dword:00000000
"pidShadow"=dword:00000000
"pidOutline"=dword:00000000
"pidSuperSub"=dword:00000000
"pidAlign"=dword:00000000
"pidLeftIndent"=dword:00000000
"pidRightIndent"=dword:00000000
"pidFirstLineIndent"=dword:00000000
"pidSpaceBefore"=dword:00000000
"pidSpaceAfter"=dword:00000000
"pidLineSpacingRule"=dword:00000000
"pidEnglishWordwrap"=dword:00000001
Data types
The various available style options have different data types, which are serialized differently in the format files and the Registry.
Integer
All integers are signed and use 32 bits, meaning that they allow values between -2147483648 and 2147483647.
In format files, they are a series of digits without spaces, optionally preceded by either a plus or a minus sign.
It is also possible to use the plus or minus sign alone. +0
, -0
, 0
, +
, -
, +000
will all mean zero.
In the Registry, they are represented as a DWORD, as it is 32 bits in size.
Boolean
Booleans do not really exist. They are stored like integers, and allow the same values as integers, but the only truly significant information is whether they are zero or anything else. Zero means false, anything else means true.
Float
Decimal values are represented using IEEE 754 single-precision floating point numbers, known as float
in most languages (not double
). They are 32 bits in size.
In format files, they can also be represented in scientific notation. All of the following values are valid floating point numbers:
0
3.14159265390
+4
+4.2
0.
.0
.
+
-
-0000.
-.
1e4
21.22E85
+0e000000000
22e+4
+.E-
In the Registry, they are represented as a DWORD, as it is 32 bits in size.
String
Strings are only used to define font names.
In format files, they obey the special parsing rule where all tokens will be parsed until the next line break, to allow for spaces to be used. They cannot exceed 63 characters in total.
In the Registry, they are stored as a REG_SZ
value. If they exceed 63 characters, they are truncated without causing any error.
Color
Some style options, such as border colors, do not reference the colors defined in a format file’s color set at all. Those custom colors are stored as 32-bit integers, and follow the same serialization rules as discussed for integers.
The color integers are interpreted as 0x00BBGGRR
, where B, G and R are the blue, green and red components respectively.
The code 0xff676983
, or 2204723199 in decimal (little-endian), means that the color is set to Automatic instead of being a regular RGB color.
Style options
Bold
- Format file ID
- 1
- Registry value
pidBold
- Data type
- Boolean
- Default value
- 0
Defines whether or not the text is bold.
Italic
- Format file ID
- 2
- Registry value
pidItalic
- Data type
- Boolean
- Default value
- 0
Defines whether or not the text is italic.
Underline
- Format file ID
- 3
- Registry value
pidUnderline
- Data type
- Integer
- Default value
- 0
Defines the style of underline to be applied on the text:
0
- No underline.
1
- Regular underline.
2
- Only words, not whitespace, are underlined.
3
- Double underline.
4
- Dotted underline.
6
- Thick underline.
7
- Dashed underline.
9
- Dot-dashed underline.
10
- Dot-dot-dashed underline.
11
- Wavy underline.
16
- Thick wavy underline.
17
- Thick dotted underline.
18
- Thick dashed underline.
19
- Thick dot-dashed underline.
20
- Thick dot-dot-dashed underline.
21
- Dashed underline, with long dashes.
22
- Thick dashed underline, with long dashes.
23
- Double wavy underline.
When invalid values are used, applying the style will leave the current setting unmodified.
Strikethrough
- Format file ID
- 7
- Registry value
pidStrikeThrough
- Data type
- Boolean
- Default value
- 0
Defines whether the text is stricken through.
Font name
- Format file ID
- 4
- Registry value
pidFontName
- Data type
- String
- Default value
- Arial in the Format Gallery’s preview. The font does not change when applying the style.
Defines the name of the font to apply. When this is not set, or when the font does not exist, the Format Gallery’s preview default to displaying Arial instead, and applying the style leaves the current font unchanged.
Font size
- Format file ID
- 5
- Registry value
pidFontSize
- Data type
- Float
- Default value
- Current font size
Defines the font size, in points:
- Decimal values between 1 and 10000 points will be correctly applied.
- Negative values, zero, or values greater than 10000 points will cause the font size to be left unchanged when the style is applied.
- Values greater than 1638 points and less than 10000 points will cause the font size input to be empty in the toolbar when the style is applied.
- Values greater than 2 billion points or less than -2 billion points will be displayed incorrectly in the Format Gallery’s tooltip.
- Obnoxiously large values written in the scientific notation will cause Word Processor to freeze on startup with 100% CPU usage on one core. The larger the value, the longer the freeze.
- Overwhelmingly large values, in my tests in excess of 107×1028, will cause Word Processor to just ignore the exponent part of the scientific notation entirely, and thus start normally.
Foreground color
- Format file ID
- ColorIndex
- Registry value
pidForeColor
- Data type
- Color
- Default value
- Automatic
Defines the color to apply to the text. In format files, this should refer to a color in a color set.
Text foreground color
- Format file ID
- —
- Registry value
pidTextForeColor
- Data type
- Color
- Default value
- Automatic
This registry value gets created automatically when saving a custom style. Changing it in the Registry will affect the color shown in the Format Gallery’s preview, but the regular pidForeColor
will still be the color used when applying the style.
Subscript and superscript
- Format file ID
- 8
- Registry value
pidSuperSub
- Data type
- Integer
- Default value
- 0
Defines whether the text is a subscript or superscript:
0
- Normal script.
1
- Superscript.
2
- Subscript.
When invalid values are used, applying the style will leave the current setting unmodified.
Capitalization
- Format file ID
- 9
- Registry value
pidCaps
- Data type
- Integer
- Default value
- 0
Defines which capitalization mode to apply:
0
- No automatic capitalization.
1
- Small capitals.
2
- All capitals.
When invalid values are used, applying the style will leave the current setting unmodified.
Embossing effect
- Format file ID
- 18
- Registry value
pidEmboss
- Data type
- Boolean
- Default value
- 0
Defines whether an embossing effect is applied to the text, making it appear as if it was protruding out of the page. This cannot normally be set simultaneously with the engraving, shadow or outline effects.
Engraving effect
- Format file ID
- 19
- Registry value
pidEngrave
- Data type
- Boolean
- Default value
- 0
Defines whether an engraving effect is applied to the text, the opposite of embossing. This cannot normally be set simultaneously with the embossing, shadow or outline effects.
Shadow effect
- Format file ID
- 20
- Registry value
pidShadow
- Data type
- Boolean
- Default value
- 0
Defines whether a shadow is projected to the bottom-right of the text. Embossing applies an equivalent of a very thin shadow, but this actual shadow gets larger with larger font sizes. This cannot normally be set simultaneously with the embossing, engraving or outline effects.
Outline effect
- Format file ID
- 21
- Registry value
pidOutline
- Data type
- Boolean
- Default value
- 0
Defines whether only the outline of each letter is drawn in the text color, with the inner parts remaining transparent. This cannot normally be set simultaneously with the embossing, engraving or shadow effects.
Alignment
- Format file ID
- 10
- Registry value
pidAlign
- Data type
- Integer
- Default value
- 0
Defines the text alignment of the paragraph:
0
- Text aligned to the left.
1
- Text aligned to the right.
2
- Centered text.
3
- Justified text.
4
- Justified text, but instead of only adjusting the width of whitespace to evenly distribute the words across the line, the spacing between all characters is adjusted. This value cannot be set directly in Works, but is displayed correctly within the Format Gallery and called Distributed Letter Aligned.
5
- Justified text, but when a line only contains fullwidth characters from East Asian languages, the space between those characters is also adjusted, not only the width of whitespace. This results in better text justification when the text includes those characters. This value cannot be set directly in Works, at least not in a Western edition, but is displayed within the UI as the regular justified alignment (value
3
). The Format Gallery displays it as East Asian Justified Aligned in the style’s tooltip. 6
- Justified text, but when a line includes only one word, the spacing between the word’s characters is adjusted so the word spreads out through the whole line, as in Distributed Letter Aligned. This results in better text justification with a large font size or narrow paragraph width. This value cannot be set directly in Works and is rather poorly handled in the UI, but the Format Gallery displays Newspaper Aligned in the style’s tooltip.
7
- The combination of the behaviors of values
5
and6
, displayed in the Format Gallery as East Asian Newspaper Aligned. When a line only contains fullwidth characters from East Asian languages, or a single word in other alphabets, then the space between all characters is adjusted, not just the width of whitespace. This is poorly handled in the UI, as if no alignment at all was selected.
When invalid values are used, applying the style will leave the current setting unmodified.
Left indentation
- Format file ID
- 22
- Registry value
pidLeftIndent
- Data type
- Float
- Default value
- 0
Defines the indentation of a paragraph from the left side, in points.
Right indentation
- Format file ID
- 23
- Registry value
pidRightIndent
- Data type
- Float
- Default value
- 0
Defines the indentation of a paragraph from the right side, in points.
First line left indentation
- Format file ID
- 24
- Registry value
pidFirstLineIndent
- Data type
- Float
- Default value
- 0
Defines the indentation of the first line of each paragraph from the left side, in points. This overrides the normal left indentation, instead of combining both.
Paragraph top margin
- Format file ID
- 33
- Registry value
pidSpaceBefore
- Data type
- Float
- Default value
- 0
Defines a vertical space to add before each paragraph, in points.
Paragraph bottom margin
- Format file ID
- 34
- Registry value
pidSpaceAfter
- Data type
- Float
- Default value
- 0
Defines a vertical space to add after each paragraph, in points.
Line spacing
- Format file ID
- 36
- Registry value
pidLineSpacingRule
- Data type
- Integer
- Default value
- 0
Configures the spacing of each line of a paragraph:
0
- Single
1
- 1.5 lines
2
- Double
5
- Custom value
Other values will fall back to 0
.
Custom line spacing
- Format file ID
- 35
- Registry value
pidLineSpacing
- Data type
- Float
- Default value
- 0
Defines a custom line spacing, in points. This is ignored when the line spacing rule is not set to 5
.
List bullet character
- Format file ID
- 11
- Registry value
pidBulletString
- Data type
- Integer
- Default value
- 159
Code point of one character used as the bullet for bulleted lists. When using a numbered list, this is set to 0x02a0974c
, but any other value is also ignored.
When this is set without configuring a list style, this can cause strange display issues where applying the style no longer marks it as being applied.
When this is left unset while the list type is set for a bulleted list:
- The style preview will no longer display the text as being in a bulleted list.
- The style’s tooltip still includes Bulleted List.
- Applying the style still enables a bulleted list.
List indentation
- Format file ID
- 12
- Registry value
pidListTab
- Data type
- Float
- Default value
- 18
Defines the indentation added to the text after the bullet or number, in points. Negative values will be reset to zero.
List alignment
- Format file ID
- 13
- Registry value
pidListAlign
- Data type
- Integer
- Default value
- 0
Defines the text alignment of the bullets, using the same values as for regular text alignment. This is useful for numbered lists using Roman numerals or having many items, where some bullets will have a different amount of characters. This cannot be configured within Works, but is supported.
List level
- Format file ID
- 14
- Registry value
pidListLevel
- Data type
- Integer
- Default value
- 0
This is defined in some DLLs but does not seem to have any effect anymore.
List starting number
- Format file ID
- 15
- Registry value
pidListStart
- Data type
- Integer
- Default value
- 1
Integer. Starting number, for numbered lists. Negative values are unsupported and will default to 1.
When the value 0
is set, which is possible through the Bullets and Numbering dialog box, only some numbered lists will work correctly:
- Arabic numerals will work correctly: `0) 1) 2)`.
- Alphabetic numbering will result in a duplicate: `A) A) B)`.
- Roman numerals will have an empty bullet:
) I) II)
. - Chinese numerals will work correctly:
零) 一) 二)
.
When a list is long enough in a document that the number 2147483647 is reached, any subsequent items in the list will have no number attached: 2147483646) 2147483647) ) ) ) )
List type
- Format file ID
- 16
- Registry value
pidListType
- Data type
- Integer
- Default value
- 0
Defines which type of bulleted or numbered list is being applied:
0
- No list style.
2
- Numbered list, in the form
%d)
where%d
is the current number:1), 2), 3)
3
- Numbered list, in the form
%d)
where%d
is the current lowercase letter:a) b) c)
. This is not available in the Bullets and Numbering dialog box, but is supported. 4
- Numbered list, in the form
%d)
where%d
is the current letter:A) B) C)
5
- Numbered list, in the form
%d)
where%d
is the current number, in lowercase Roman numerals:i) ii) iii)
. This is not available in the Bullets and Numbering dialog box, but is supported. 6
- Numbered list, in the form
%d)
where%d
is the current number, in uppercase Roman numerals:I) II) III)
8
- Numbered list, in the form
%d)
where%d
is the current number, in Chinese numerals:一) 二) 三)
. 9
- Numbered list, in the form
%d)
where%d
is the current number, in Traditional Chinese financial numerals:壹) 貳) 參)
10
- Numbered list, in the form
%d)
where%d
is the current number, in Chinese numerals:一) 二) 三)
.
Adding 0x20000
to the above values will cause the numbered list to use a dot .
instead of a closing parenthesis )
to separate the number and the text.
Invalid values will cause Works to detect a numbered list and display it in the toolbars and the style preview, but the list will be rendered in the document as a bulleted list with the default dot bullet.
When the value is below 0x10000
and the bullet string is set to the numbered list mode (0x02a0974c
), the Format Gallery displays L
as the bullet character in its preview. When it is greater than or equal to 0x10000
, it displays 1.
.
List bullet character font name
- Format file ID
- 17
- Registry value
pidListFont
- Data type
- String
- Default value
- Value of
pidFontName
Defines the font where the bullet symbol is taken from. When this is empty, the text’s current font (pidFontName
) is used. This is ignored for numbered lists.
Borders
- Format file ID
- 25
- Registry value
pidBorder
- Data type
- Integer
- Default value
- 0
Defines on which sides of the paragraph the borders are applied. Only the last four bits of the integer are used:
- Bit 0
- Enable the top border.
- Bit 1
- Enable the bottom border.
- Bit 2
- Enable the left border.
- Bit 3
- Enable the right border.
Border color
- Format file ID
- 26
- Registry value
pidBorderColor
- Data type
- Color
- Default value
- Automatic
Defines the color of the paragraph border.
Border style
- Format file ID
- 27
- Registry value
pidBorderLineStyle
- Data type
- Integer
- Default value
- 0
Defines the style of border to be applied on the paragraph. Only the following values are recognized:
0
- No border.
1
- Solid line.
2
- Dotted line.
3
- Dashed line.
7
- Double line.
12
- Solid line on the outside, solid line twice thinner on the inside.
13
- Solid line on the outside, solid line twice thiccer on the inside.
14
- Two solid lines around one twice thiccer solid line.
18
- Diagonal stripes, from top-left to bottom-right, like on barricade tape.
- On my installed versions of Works (9.7.613.0 in French on Windows XP, and 8.4.623.0 in English (U.S.) on Windows 2000), applying this style from the Format Gallery applies style
19
instead. I can set this style fine using the Borders and Shading format menu, and saving the style will result in the correct value. 19
- Diagonal stripes, from top-right to bottom-left, like on barricade tape.
21
- Dithered line; a checkerboard is drawn using the border color, depending on how much you zoom in on the page.
Other values will cause no border style to be applied.
Border width
- Format file ID
- 28
- Registry value
pidBorderLineWidth
- Data type
- Float
- Default value
- 1
Defines the width of the border, in points. On border styles that include multiple lines of different widths, this determines the width of the thiccest lines. This cannot be configured directly in Works, other than by selecting a border style (which changes both the style, width and spacing). You can set this to values that are unachievable with the UI, and Works will accept them.
Border spacing
- Format file ID
- 29
- Registry value
pidBorderSpacing
- Data type
- Float
- Default value
- 1
Defines the spacing between the multiple lines that compose a border. If the border style only includes one line, this has no effect. This cannot be configured directly in Works, other than by selecting a border style (which changes the style, width and spacing). You can set this to values that are unachievable with the UI, and Works will accept them.
Shading style
- Format file ID
- 30
- Registry value
pidShadingStyle
- Data type
- Integer
- Default value
- 0
Defines the style of shading to be applied on the paragraph. Only the following values are recognized:
0
- The paragraph has no background.
1
- Solid fill, 100% foreground color.
3
- Solid fill, 10% foreground color, 90% background color.
4
- Solid fill, 90% foreground color, 10% background color.
6
- Solid fill, 80% foreground color, 20% background color.
7
- Solid fill, 70% foreground color, 30% background color.
8
- Solid fill, 60% foreground color, 40% background color.
9
- Solid fill, 50% of each color.
10
- Solid fill, 40% foreground color, 60% background color.
12
- Solid fill, 30% foreground color, 70% background color.
13
- Solid fill, 20% foreground color, 80% background color.
14
- Horizontal lines, alternating between both colors.
15
- Vertical lines, alternating between both colors.
16
- Diagonal lines from top-left to bottom-right, alternating between both colors.
17
- Diagonal lines from top-right to bottom-left, alternating between both colors.
18
- Lines in both diagonals of the foreground color above the background color.
19
- Dashes of the background color visible over the foreground color.
20
- Thin horizontal lines in the foreground color spaced far apart, above the background color.
21
- Thin vertical lines in the foreground color spaced far apart, above the background color.
22
- Thin diagonal lines from top-right to bottom-left, in the foreground color, spaced far apart above the background color.
23
- Thin diagonal lines from top-left to bottom-right, in the foreground color, spaced far apart above the background color.
24
- Grid of thin horizontal and vertical lines in the foreground color, spaced far apart above the background color.
25
- Thin diagonal lines in both directions, in the foreground color, spaced far apart above the background color.
Other values will cause no shading to be applied.
Shading color 1
- Format file ID
- 31
- Registry value
pidShadingForeColor
- Data type
- Color
- Default value
- Automatic
Defines the foreground color for the paragraph shading, also known as Color 1.
Shading color 2
- Format file ID
- 32
- Registry value
pidShadingBackColor
- Data type
- Color
- Default value
- Automatic
Defines the background color for the paragraph shading, also known as Color 2.
English word wrapping
- Format file ID
- —
- Registry value
pidEnglishWordwrap
- Data type
- Boolean
- Default value
- 1
This does not seem to have any effect. Defining two styles that have the same properties except for this one makes Works think the styles are duplicates.
Hanging punctuation
- Format file ID
- —
- Registry value
pidHangingPunctuation
- Data type
- Boolean
- Default value
- 0
A key that I found in some DLLs that likely allows enabling hanging punctuation, a neat typesetting trick. Enabling this does not however seem to have any effect.
East Asian line breaking
- Format file ID
- —
- Registry value
pidEALineBreaking
- Data type
- Boolean
- Default value
- 0
A key that I found in some DLLs that likely allows enabling line-breaking rules specific to East Asian languages, but I have not been able to make it have any effect in Works.
East Asian spacing
- Format file ID
- 41
- Registry value
pidEASpacing
- Data type
- Float
- Default value
- 0
Extra space, in points, added between each character.
This does not seem to be configurable directly within Works 8 or 9, but any value is accepted, even negative ones. This might be related to support for East Asian languages, hence the EA
.
In the Format Gallery, hovering over a style with a non-zero spacing will show a tooltip that includes Expanded X
pt or Collapsed X
pt, depending on whether the value is positive or negative. The value will be displayed as a floating-point number, optionally with scientific notation if the value is weird enough.
East Asian font name
- Format file ID
- 38
- Registry value
pidFontNameEA
- Data type
- String
- Default value
- Value of
pidFontName
Likely defines the name of a font with East Asian support, aka using UCS-2 or UTF-16, to use when a font that does not support those characters is set. I have not seen it have any concrete effect within Works.
Cyrillic font name
- Format file ID
- 39
- Registry value
pidFontNameCyr
- Data type
- String
- Default value
- Value of
pidFontName
Likely defines the name of a font with Cyrillic character support to use when a font that does not support those is set. I have not seen it have any concrete effect within Works.
Other font name
- Format file ID
- 40
- Registry value
pidFontNameOther
- Data type
- String
- Default value
- Value of
pidFontName
Likely defines the name of a fallback font to use when some characters are not supported by the main text font. I have not seen it have any concrete effect within Works.