TextOut () не имеет суррогатной пары UNICODE - PullRequest
0 голосов
/ 30 апреля 2011

Я пытался выставить U + 1D400 (суррогатная пара H = 0xD835 L = 0xDC00), используя TextOut(), но безрезультатно. Зачем ?

case WM_PAINT:

    PAINTSTRUCT ps;

    BeginPaint(hwnd, &ps);

    int iLogPixelsY;

    iLogPixelsY = GetDeviceCaps(ps.hdc, LOGPIXELSY);

    LOGFONT lf;

    int iPts;

    iPts = 11;

    memset(&lf, 0, sizeof(LOGFONT));
    lf.lfHeight = -iPts * iLogPixelsY / 72;
    lf.lfOutPrecision = OUT_TT_ONLY_PRECIS;
    wcscpy_s(lf.lfFaceName, L"Cambria Math");

    HFONT hFont;

    hFont = CreateFontIndirect(&lf);
    hFont = (HFONT)SelectObject(ps.hdc, hFont);

    wchar_t tx[2];

    tx[0] = 0xD835;
    tx[1] = 0xDC00;

    TextOut(ps.hdc, 10, 100, tx, 1); 

    DeleteObject(SelectObject(ps.hdc, hFont));

    EndPaint(hwnd, &ps);
    break;

1 Ответ

1 голос
/ 30 апреля 2011

Вы вызываете TextOut, указав длину строки 1, но согласно этой документации , вы должны передать 2, поскольку это суррогатная пара.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...