2010-03-11 2 views
7

두 개 이상의 스크립트에 텍스트가 포함 된 문자열이 있다고 가정 해보십시오. TextOut과 같은 GDI 함수를 사용하면 Windows는 "글꼴 연결"을 수행합니다. 즉, GDI는 선택한 글꼴로 할 수있는 것을 그려서 나머지는 자동으로 선택한 적절한 글꼴로 그립니다. 예를 들어, 텍스트의 일부가 영어 (로마 알파벳 사용)이고 일부가 중국어 (CJK 문자 사용)이고 Arial이 선택되면 영어 부분이 Arial로 그려지고 중국어 부분은 CJK 글리프가있는 다른 글꼴로 그려야합니다.Windows에서 글꼴 연결을 위해 선택한 글꼴을 확인할 수 있습니까?

내 질문은 어떤 글꼴을 선택할지 (또는 선택했는지) 결정하는 방법이 있습니까?

자동 글꼴 연결을 수행하지 않는 저급 Uniscribe API로 텍스트를 그려야합니다. 나는 내 자신의 글꼴 연결을 구현했지만 때로는 알고리즘이 같은 텍스트에 대해 TextOut보다 다른 글꼴을 선택합니다. Windows 알고리즘을 더 잘 이해하려고 노력하고 있지만 시각적으로 글꼴을 식별하는 것이 좋지 않습니다 (특히 익숙하지 않은 스크립트에서).

답변

2

글꼴은 레지스트리 항목에 의해 선택됩니다. 글꼴 연결이 장치에서 활성화되어

경우 마이크로 소프트 \ HKEY_LOCAL_MACHINE \ 소프트웨어 \에서 레지스트리 키의 하위 키를 열거하여 레지스트리 을 검사 할 수 있습니다 : 그것은 잘 관련 부분을 인용 this article.에 설명되어 있습니다 Windows NT \ CurrentVersion \ FontLink \ SystemLink 글꼴을 기본 글꼴에 연결된 글꼴의 매핑을 확인할 수 있습니다. Regedit를 사용하여 추가 하위 키를 만들어 링크 을 추가 할 수 있습니다.

+3

감사합니다. 훌륭한 자료입니다. 그러나 나는 다른 블로그에서 그 레지스트리 키가 단지 이전 버전과의 호환성을 위해 있고 더 이상 실제로 글꼴 연결을하지 않는다고 읽었습니다. 예를 들어, 내 컴퓨터 TextOut에서 레지스트리의 해당 부분에없는 기본 글꼴에 대한 글꼴 연결을 수행합니다. 그리고 다른 글꼴을 위해 선택된 글꼴이 기본 글꼴에 따라 다르므로 글꼴 대체도 아닙니다. –

+0

IMLangFontLink 확인 : http://msdn.microsoft.com/en-us/library/aa767872%28v=VS.85%29.aspx –

+0

이전 반복에서 IMLangFontLink2를 사용했지만 LTR 스크립트를 혼합 할 때 문제가 발생했습니다. RTL 스크립트. 나는 이것이 꽤 오래된 해결책이라고 생각하며 아마도 이전 버전과의 호환성을 위해 남아있을 것이다. –

관련 문제