문제

나를 렌더링해야 합 글로 3d 게임,그래서 세상을 사용 GetGlyphOutline 개요 함수는 문자 모양을 렌더링으로 텍스처입니다.그러나고 싶을 처리할 수 있는 경우 문자는 현재에 주어진 글꼴(자주의 경우 아시아 다른 다른 국제 텍스트).윈도우 텍스트 렌더링이 자동으로 글꼴을 대체하는 데 필요한 자입니다.하지만 GetGlyphOutline 하지 않습니다.할 수 있는 방법을 감지 이 경우,을 얻을 설명한 대체 문자?Mac OS X 코어 텍스트를 얻을 수있는 기능에 일치하는 대체 글꼴 지정된 글꼴과 문자열은 거기에 아무것도 유사한 윈도우에서?

도움이 되었습니까?

해결책

발견하는 데 필요한 자신을 알고 있:이 IMLangFontLink 인터페이스, 특히 MapFont 방법을 포함하는 데 필요한 기능을 찾을 수 있는 대체 글꼴을 사용해야 합니다.

다른 팁

내가 너무가 의아해 GetGlyphOutline.나는 확실하지 않는 경우에 당신을 할 수 있었 같지만,나를 얻을 수 있었 혼합 스크립트를 사용하여 설명 TextOut() 와 조합 BeginPath(), EndPath()GetPath().

예를 들어,심지어 돋움 글꼴로 나는 할 수 있의 경로를 얻을 일본어 텍스트"テスト"(를 사용하여 C++,그러나 쉽게 할 수 있습니다 C 뿐만 아니라):

SelectObject(hdc, hArialFont);
BeginPath(hdc);
TextOut(hdc, 100, 100, L"\u30c6\u30b9\u30c8"); // auto font subbing
EndPath(hdc);

// get number of points in path
int pc = GetPath(hdc, NULL, NULL, 0);

if (pc > 0)
{
    std::vector<POINT> points(pc);
    std::vector<BYTE> types(pc); // PT_MOVETO, PT_LINETO, PT_BEZIERTO

    GetPath(hdc, &points[0], &types[0], pc);

    // it seems the first four points are the bounding rect
    // subsequent points match up to their types

    for (int i = 4; i < pc; i++)
    {
        if (types[i] == PT_LINETO)
            LineTo(hdc, points[i].x, points[i].y); // etc
    }
}
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top