윈도우:을 받고 문자 윤곽선을 위한 교체 문자에서 다른 글꼴
-
22-07-2019 - |
문제
나를 렌더링해야 합 글로 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
}
}
제휴하지 않습니다 StackOverflow