No more Microsoft Sans Serif, return actual system font from SystemFonts.DefaultFont?
See original GitHub issueIs this a good time to fix a long-standing issue, the default use of Microsoft Sans Serif 8pt instead of Segoe UI 9pt? This is in violation of Microsoft’s design guidelines:
UI technology Target Windows version Fonts to use and optimize for Win32 or WinForms Windows Vista or later Use the appropriate Segoe UI font.
Developers:
- For elements that use fixed layout (such as Windows dialog templates and WinForms), hard code the appropriate font from the preceding table.
The only member of SystemFonts that reflects the actual system theme is the unintuitively-named SystemFonts.MessageBoxFont. Anything in SystemFonts that’s not returning Segoe UI on a default installation of Windows should either change and start returning the real value or should be obsoleted. In other words, https://docs.microsoft.com/dotnet/api/system.drawing.systemfonts#properties should line up precisely with https://docs.microsoft.com/windows/desktop/uxguide/vis-fonts#fonts-and-colors on current Windows installations. Tahoma is not okay and Microsoft Sans Serif is not okay.
These guidelines are consistent with Microsoft’s font guidelines for other UI technologies.
If Segoe UI was defaulted effortlessly, it would be a huge benefit! The fight against Microsoft Sans Serif has afflicted every Windows Forms project I’ve worked on, large and small. I also see apps being built that didn’t undertake this uphill battle and which stand out visually as less professional as a result. Here’s an example taken from the second link below:
History and hacks to get it working:
Issue Analytics
- State:
- Created 5 years ago
- Reactions:10
- Comments:8 (8 by maintainers)


Top Related StackOverflow Question
@dreddy-work is going to take a look through our codebase and make sure that this approach is what we want to take. We do like the idea of moving over to a more modern font.
OTOH, I do support updating the
DefaultFontproperty (only). After reading its documentation, I agree that its description is misleading. It should instead return the same value asMessageBoxFont, as the latter font is what is really recommended for dialog boxes and controls.