#335 – How WPF Finds Fonts on a Target System
July 5, 2011 Leave a comment
A WPF application specifies a font that it wants using the properties FontFamily, FontStyle, FontWeight, FontStretch and FontSize. At runtime, WPF decides the exact font to use on the target system where the application is running. This decision is based on matching the first four properties (ignoring FontSize for the moment) to a physical font file that is installed on that system.
WPF starts by matching the supplied FontFamily against the names of the fonts found on the system. It then tries to find a font that most closely matches the requested FontStretch, FontStyle and FontWeight property values. Matching FontStretch is the highest priority, followed by FontStyle and then FontWeight.
If WPF can’t find a matching font, it “falls back” to a default font installed with WPF, C:\Windows\Fonts\GlobalUserInterface.CompositeFont. This is a composite font that tries to map individual characters to fonts likely to be present on the system.