DWORD nBytes = ::GetGlyphOutline(hDC, nChar, uFormat, &gm, 0, NULL, &matTransform); #ifdef __MICROSOFT_KB2753842_FIX if(!nBytes){ int nBufSize = sizeof(TTPOLYGONHEADER); for(;;){ BYTE* pBuf = new BYTE[nBufSize]; if(!pBuf){ nBytes = 0; break; } const DWORD nBytesNext = ::GetGlyphOutline(hDC, nChar, uFormat, &gm, nBufSize, pBuf, &matTransform); delete[] pBuf; if(nBytesNext==GDI_ERROR){ nBytes = GDI_ERROR; break; } if(nBytesNext!=nBytes){ nBytes = nBytesNext; }else{ break; } nBufSize *= 2; } } #endif