리치 에디트 컨트롤에서 글꼴 바인딩을 사용하는 방법
Microsoft Rich Edit 3.0은 컨텍스트에 따라 일반 텍스트 문자에 문자 집합을 할당합니다. 몇 가지 예는 다음과 같습니다.
- 그리스 문자는 GREEK_CHARSET할당됩니다.
- 한글 기호는 HANGUL_CHARSET할당됩니다.
- 가나 문자가 근처에 있을 때는 SHIFTJIS_CHARSET이 중국어 문자에 할당되며, 근처에 가나 문자가 없으면 GB2312_CHARSET이 중국어 문자에 할당됩니다.
- 비중립 ANSI 문자는 모든 이벤트에서 ANSI_CHARSET 할당됩니다.
참고
리치 편집 컨트롤은 내부적으로 유니코드를 사용하므로 이러한 문자 집합 사용은 글꼴 사양에 사용된 원래 형식과 다릅니다. 그러나 CHARFORMAT 구조체에는 문자 집합에 대해 잘 정의된 위치가 있습니다.
공백 및 숫자와 같은 중립 문자에는 컨텍스트에 따라 문자 집합이 할당됩니다. 예를 들어 동일한 문자 집합의 문자로 둘러싸인 빈 문자는 해당 문자 집합을 가져옵니다. 양방향 텍스트에 사용되는 중립 및 숫자는 유니코드 양방향 알고리즘을 기반으로 하는 방식으로 문자 집합이 할당됩니다.
- C/C++
- Windows 사용자 인터페이스 프로그래밍
문자 집합이 할당된 후 Rich Edit는 삽입 지점 주위의 텍스트를 앞뒤로 검색하여 문자 집합에 사용된 가장 가까운 글꼴을 찾습니다. 문자 집합에 대한 글꼴을 찾을 수 없는 경우 Rich Edit는 해당 문자 집합에 대해 클라이언트에서 선택한 글꼴을 사용합니다. 클라이언트에서 문자 집합에 대한 글꼴을 지정하지 않은 경우 Rich Edit는 해당 문자 집합의 기본 글꼴을 사용합니다. 클라이언트가 다른 글꼴을 원하는 경우 클라이언트는 항상 변경할 수 있지만 이 방법은 대부분의 경우 작동합니다. 현재 기본 글꼴 선택은 다음 표를 기반으로 합니다. 기본 글꼴은 프로세스별로 설정되며 UI 사용 및 비 UI 사용에 대한 별도의 목록이 있습니다.
언어 | UI 글꼴 이름 | UI 글꼴 크기 | UI가 아닌 글꼴 이름 | UI가 아닌 글꼴 크기 |
---|---|---|---|---|
서부, CE, ME, 베트남어 | 타호마 주 | 8 | Arial | 10 |
일본어 | MS UI 고딕 | 9 | MS P 고딕 | 10 |
한국어 | 굴림 | 9 | 굴림 | 9 |
중국어 간체 | Simsun | 9 | SimSun | 10 |
중국어 번체 | PMingLiU | 9 | PMingLiU | 9 |
태국어 | MS Sans Serif | 8 | 타호마 주 | 14 |
기호 | 윙딩스 | 8 | Wingdings | 10 |
데바나가리어 | 망갈 | 8 | 망갈 | 10 |
타밀어 | Latha | 8 | Latha | 10 |
그루지야어, 아르메니아어 | Arial 유니코드 | 8 | Arial 유니코드 | 10 |
따라서 기본 글꼴 바인딩 테이블(항목에는 문자 집합, 글꼴 이름 및 크기 포함)에서 리치 편집을 사용하면 ANSI_CHARSET 여러 문자 집합과 일치할 수 있지만 적절한 문자 집합은 일대일로 다른 글꼴과 일치합니다. 보다 정확하게 말하자면, 리치 에디트는 다른 대안을 찾지 못할 때마다 ANSI_CHARSET을 사용합니다. 이보다 더 세분성을 지정할 수 있습니다. 예를 들어 아랍어 실행에 대한 특정 ARABIC_CHARSET, 그리스어 실행에 대한 특정 그리스어 글꼴 등을 할당합니다. 이 세분성은 원하는 문자 집합 스탬프가 있는 글꼴이 글꼴에 바인딩된 영역 앞의 문서 어딘가에 있는 경우에도 사용됩니다.
리치 편집은 현재 문자 집합을 지원한다고 주장하지만 불완전한 글꼴에서 누락된 글리프를 다루지 못합니다. 복잡한 스크립트의 렌더링 시, Rich Edit는 해당 글리프가 누락된 것을 인식하지만, 백업 저장소에서 새 글꼴을 사용하는 것을 유발하지는 않습니다. 일반적으로 운영 체제의 기본 글꼴 연결이 이 작업을 수행합니다.
Rich Edit 4.1: 스크립트의 기본 글꼴을 설정하려면 CHARFORMAT2EM_SETCHARFORMAT 호출하고, yHeight, bCharSet, bPitchAndFamily, szFaceName및 lcid 멤버에 대한 값을 지정합니다. 또한 특정 코드 페이지의 기본 글꼴을 얻으려면 CHARFORMAT2EM_GETCHARFORMAT 호출하여 bCharSet 및 lcid 멤버에 대한 값을 지정합니다.