К сожалению Функция ToLogFont не заполняет поле lfPitchAndFamily для корректировки значений. В моем случае это всегда 0.
Одним из приближений для определения того, какие шрифты могут быть исправлены, является следующее
foreach ( FontFamily ff in FontFamily.Families ) {
if ( ff.IsStyleAvailable( FontStyle.Regular ) ) {
float diff;
using ( Font font = new Font( ff, 16 ) ) {
diff = TextRenderer.MeasureText( "WWW", font ).Width - TextRenderer.MeasureText( "...", font ).Width;
}
if ( Math.Abs( diff ) < float.Epsilon * 2 ) {
Debug.WriteLine( ff.ToString() );
}
}
}
Имейте в виду, что это несколько ложных срабатываний, например Wingdings