Можете ли вы не просто использовать имя шрифта, как оно отображается на панели управления? Большинство шрифтов, которые не являются регулярными, полужирным шрифтом или курсивом, в любом случае имеют подсемейный тип «обычный». Если вы загрузите font properties extensions из Microsoft, вы можете увидеть это на вкладке «Имена». То, как контрольные панели перечисляют их и так, что .Net знает о них иногда отличаются поэтому его хорошая идея, чтобы перечислить все шрифты с точки зрения .NET в:
var installed_fonts = new InstalledFontCollection();
var families = installed_fonts.Families;
var allFonts = new List<string>();
foreach(FontFamily ff in families){
allFonts.Add(ff.Name);
}
allFonts.Sort();
foreach(String s in allFonts){
Console.WriteLine(s);
}
А вот пример, который использует Franklin Gothic Demi Cond (который указан в CP как «Franklin Gothic Cond Demi»)
e.Graphics.DrawString("Test", new Font("Franklin Gothic Demi Cond", 12), new SolidBrush(Color.Red), 25, 25);
Это решило его, спасибо! – Hawxby