title: GetCharABCWidths() and GetGlyphOutline() return FALSE. Why?
body: <p>There seems to be a bug in the GetCharABCWidths() and GetGlyphOutline() functions, when the font size is changed from (-16 * i) / 72, to (-n * i) /72 , for any n below 16.</p>
  
  <p>The character 'a' is still displayed correctly but the functions return FALSE and GDI_ERROR.
  Why ???</p>
  
  <p>GetLastError() for GetCharABCWidths() returns 0 (ERROR_SUCCESS) and for
  GetGlyphOutline() GetLastError() returns 1003 (CANNOT COMPLETE FUNCTION).</p>
  
  <pre><code>MAT2 gmat = { {0, 1}, {0, 0}, {0, 0}, {0, 1} };
  
  
  case WM_PAINT:
  
          PAINTSTRUCT ps;
  
          BeginPaint(hwnd, &amp;ps);
  
          int i;
  
          i = GetDeviceCaps(ps.hdc, LOGPIXELSY);
  
          LOGFONT lf;
  
          memset(&amp;lf, 0, sizeof(LOGFONT));
          lf.lfHeight = (-14 * i) / 72;
          lf.lfWeight = FW_NORMAL;
          lf.lfItalic = 0;
          lf.lfCharSet = SYMBOL_CHARSET;
          wcscpy(lf.lfFaceName, L"Symbol");
  
          HFONT hFont;
  
          hFont = CreateFontIndirect(&amp;lf);
          hFont = (HFONT)SelectObject(ps.hdc, hFont);
  
          BOOL bx;
          ABC abc;
          TCHAR tx;
          DWORD dwx;
  
          tx = 'a';
  
          if( !GetCharABCWidths(ps.hdc, tx, tx, &amp;abc) ) dwx = GetLastError();
  
          GLYPHMETRICS gm;
  
          if( GetGlyphOutline(ps.hdc, tx, GGO_METRICS, &amp;gm, 0, NULL, &amp;gmat) == GDI_ERROR )
              dwx = GetLastError();
  
          TextOut(ps.hdc, 10, 20, (LPTSTR)&amp;tx, 1);
  
          EndPaint(hwnd, &amp;ps);
  </code></pre>