글꼴을 3D 게임 세계에 렌더링해야하므로 GetGlyphOutline 개요 함수를 사용하여 문자 모양을 텍스처로 렌더링합니다. 그러나, 나는 문자가 주어진 글꼴에 존재하지 않는 경우를 처리 할 수 있기를 원합니다 (아시아의 다른 국제 텍스트의 경우처럼). Windows 텍스트 렌더링은 필요한 문자가있는 글꼴을 자동으로 대체합니다. 하지만 GetGlyphOutline은 그렇지 않습니다. 이 사건을 어떻게 감지하고 대체 글리프의 윤곽을 잡을 수 있습니까? Mac OS X Core Text는 주어진 글꼴과 문자열에 맞는 대체 글꼴을 가져 오는 기능이 있습니다. Windows에서 이와 비슷한 것이 있습니까?Windows : 다른 글꼴의 대체 문자에 대한 글리프 개요 가져 오기
답변
내가 알아야 할 것을 찾았습니다 : IMLangFontLink interface, 특히 MapFont 메소드는 윈도우에서 사용할 대체 글꼴을 찾는 데 필요한 기능을 포함하고 있습니다.
나는 역시 GetGlyphOutline
으로 의아해했습니다. 동일한 작업을 수행 할 수 있는지 확실하지 않지만 TextOut()
을 BeginPath()
, EndPath()
및 GetPath()
과 조합하여 혼합 스크립트 텍스트 개요를 얻을 수있었습니다.
예를 들어, 심지어 Arial 글꼴로, 나는 일본어 텍스트의 경로를 얻을 수 있어요 「テ ス ト」(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
}
}
이 방법이 효과가 있지만, 글꼴을 렌더링하기 위해 LineTo를 사용하지 않고 글꼴 개요 만 얻을 수 있습니까? 또한 앤티 앨리어싱을 얻지 못할 것이며 TTF 글꼴로 베 지어 곡선을 올바르게 처리 할 것인가? –
@jonas : 모두 당신이 그린 장치 컨텍스트 (그리고 그 구성 방법)에 달려 있습니다. 또한'BeginPath'와'EndPath'에서'LineTo'를 사용하면'StrokePath' 또는'EndPath'를 사용할 때까지 아무 것도 그려지지 않습니다. 또한 이것은 일단 경로를 얻으면 3D 객체로 돌출 시키거나 화면에 그릴 수있는 경로를 얻을 수 있음을 보여줍니다. – dreamlax
- 1. C#에서 글꼴의 지원 문자 가져 오기
- 2. Windows 사용자 이름 가져 오기 - 다른 방법
- 3. WIndows CE에서 대체 CJK 글리프를 표시하는 방법은 무엇입니까?
- 4. 글꼴의 모든 세부 정보를 알고있는 문자의 크기 가져 오기
- 5. charmap에서 Wingdings 글꼴의 주어진 문자에 대한 키 입력을 결정하는 방법은 무엇입니까?
- 6. reg.exe에 대한 WinAPI 대체
- 7. 아스키 문자에 대한 getch() 응답
- 8. DataGridView에서 대체 행 상태 가져 오기
- 9. 웹 페이지 가져 오기, 다른 결과 가져 오기?
- 10. 플래시 + xml - 글꼴의 다른 언어
- 11. iPhone에서 특정 문자 글리프 렌더링
- 12. Windows 레지스트리에서 데이터 가져 오기
- 13. 다른 경로에서 쿠키 가져 오기
- 14. FontForge SVG 가져 오기에서 글리프 크기
- 15. 특수 문자에 대한 필수 검증
- 16. 문자에 대한 Java BufferedReader 동작?
- 17. Windows/Linux에서 wxPython을 사용하는 글꼴의 차이
- 18. 다른 XSLT를 동적으로 가져 오기
- 19. 다른 하나의 파일 가져 오기
- 20. 다른 파일에서 변수 가져 오기
- 21. 다른 서버에서 css 가져 오기
- 22. 다른 앱에서 정보 가져 오기
- 23. 다른 클래스에서 값 가져 오기
- 24. 다른 앱에서 정보 가져 오기
- 25. 다른 레이아웃의 위젯 가져 오기
- 26. 다른 테이블의 필드 가져 오기
- 27. 파이썬 가져 오기 다른 폴더
- 28. 다른 날의 데이터 가져 오기
- 29. 두 문자에 대한 XOR 연산
- 30. 중첩 이스케이프 문자에 대한 문제
인 IMLangFontLink 인터페이스 라이브러리는 항상 Windows에 설치되어 있습니까? – epotter
내가 알 수있는 한 Internet Explorer 4.0 이상이 설치됩니다. IE가 제거되었는지 여부와 관계없이 모든 Windows 시스템에 있다고 가정하는 것이 안전한지 여부는 알 수 없습니다. –