WPF enforces grayscale rendering when text is rendered its color and the color
behind the text before creating the final glyph bitmap.
However, the background color can sometimes be a very expensive process.
For example, popups have rounded edges and will have the allowstransparency
property set. In order to maintain acceptable performance, WPF disables
ClearType when it encounters an element that could complicate this process.
Now in .NET 4, we provide the developer to decide whether to render with
cleartype or not. The way to do this is to set the RenderOptions.ClearTypeHint
property.
This forces the rendering engine to enable Cleartype
whenever WPF reaches a node that introduces an intermediate texture that could
be transparent.
WPF disables ClearType when it detects that the buffer into which text is drawn
could have a transparent background. However, you could easily enable it again.
WPF needs to disable ClearType because the blending algorithm won't work with a
transparent intermediate texture–it will produce visually incorrect results.