title: Too many fonts when enumerating with EnumFontFamiliesEx function
body: <p>I'm trying to create a list of fonts for the user to choose from.  I'm doing this by using the <a href="http://msdn.microsoft.com/en-us/library/dd162620%28VS.85%29.aspx"><code>EnumFontFamiliesEx</code></a> function but unfortunately, the list of returned fonts is much too long.  There are many extra fonts that seem frivolous, duplicate, for a different language, or otherwise undesirable to display to the user.  My screenshot best illustrates the junk I am trying to filter out.</p>
  
  <p>My code for calling <code>EnumFontFamiliesEx</code> looks like this:</p>
  
  <pre><code>LOGFONT lf;
  memset(&amp;lf, 0, sizeof(lf));
  lf.lfCharSet = DEFAULT_CHARSET;
  // screenDC is result of CreateCompatibleDC(NULL)
  EnumFontFamiliesEx(screenDC, &amp;lf, GetFontsCallback, NULL, 0);
  </code></pre>
  
  <p>The resulting list looks like this, after sorting alphabetically and removing fonts with duplicate face names:</p>
  
  <p><img src="https://i.stack.imgur.com/Fp6ZB.png" alt="enter image description here"></p>
  
  <p>As you can see, the <code>ChooseFont</code> font common dialog is displaying a very reasonable list of fonts that is user-friendly and makes sense.  On the other hand, my code displays a long list of extra fonts: fonts that start with "@" (why? what are they even for?), 3 extra variants of Arial font, and several other fonts of unknown purpose like Aheroni, Andalus, Angsana New, AngsanaUPC, and so on.  It's insane.</p>
  
  <p>How do I filter the list of fonts returned by <code>EnumFontFamiliesEx</code> so that it <strong>exactly</strong> matches the list shown in the <code>ChooseFont</code> dialog?</p>