Кажется, есть ошибка в функциях GetCharABCWidths () и GetGlyphOutline (), когда размер шрифта изменяется с (-16 * i) / 72, на (-n * i) / 72, для любого n ниже16.
Символ «а» по-прежнему отображается правильно, но функции возвращают FALSE и GDI_ERROR.Почему ???
GetLastError () для GetCharABCWidths () возвращает 0 (ERROR_SUCCESS), а для GetGlyphOutline () GetLastError () возвращает 1003 (НЕ МОЖЕТ ПОЛНАЯ ФУНКЦИЯ).
MAT2 gmat = { {0, 1}, {0, 0}, {0, 0}, {0, 1} };
case WM_PAINT:
PAINTSTRUCT ps;
BeginPaint(hwnd, &ps);
int i;
i = GetDeviceCaps(ps.hdc, LOGPIXELSY);
LOGFONT lf;
memset(&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(&lf);
hFont = (HFONT)SelectObject(ps.hdc, hFont);
BOOL bx;
ABC abc;
TCHAR tx;
DWORD dwx;
tx = 'a';
if( !GetCharABCWidths(ps.hdc, tx, tx, &abc) ) dwx = GetLastError();
GLYPHMETRICS gm;
if( GetGlyphOutline(ps.hdc, tx, GGO_METRICS, &gm, 0, NULL, &gmat) == GDI_ERROR )
dwx = GetLastError();
TextOut(ps.hdc, 10, 20, (LPTSTR)&tx, 1);
EndPaint(hwnd, &ps);