The Constructor
new Font(FontFamily fontFamily, Float fontSize);
automatically sets the Font Style as "regular". However, not all Fonts actually support the Regular Style.
Better results can be achieved by checking the FontStyle-enumerator:
if (fontFamilies[i].IsStyleAvailable(FontStyle.Regular)) familyList[i].Font = new Font(fontFamilies[i], 12);
else if (fontFamilies[i].IsStyleAvailable(FontStyle.Bold)) familyList[i].Font = new Font(fontFamilies[i], 12, FontStyle.Bold);
else if (fontFamilies[i].IsStyleAvailable(FontStyle.Italic)) familyList[i].Font = new Font(fontFamilies[i], 12, FontStyle.Italic);
else if (fontFamilies[i].IsStyleAvailable(FontStyle.Strikeout)) familyList[i].Font = new Font(fontFamilies[i], 12, FontStyle.Strikeout);
else if (fontFamilies[i].IsStyleAvailable(FontStyle.Underline)) familyList[i].Font = new Font(fontFamilies[i], 12, FontStyle.Underline);
else familyList[i].BackColor = Color.Red;
Not exactly very nice code. After that, most fonts installed on my machine (many custom fonts) work fine. The only one that fails all of these styles is "Blade Runner Movie Font Bold Italic", a default font.
However, we can actually fix it! And then we hope that no other Font is MORE atrocious with it's styles. The else-block gets replaced by:
else try {
familyList[i].Font = new Font(fontFamilies[i], 12, FontStyle.Bold | FontStyle.Italic);
} catch {
familyList[i].BackColor = Color.Red;
}
And boom, all Fonts are shown correctly! Try-catch are used because we can't check in advance whether that will work to begin with. The catch-block will still give a visible warning if something is wrong. Credit to https://stackoverflow.com/a/5350706/2532489
Cross-checking with my installed Fonts in the Fonts-Folder shows that some Fonts are plain missing.
So far, I haven't found a satisfying solution to get all fonts, find at least one possible style or even ALL styles of a installed font. No constructor that might take string-arguments (Ultra, Condensed, Black, Light, Narrow....) for the Font Style seems to exist.
https://stackoverflow.com/a/4662434/2532489 might help, but currently I can't say that with certainty.