다음을 통해 공유


EUDC 및 PUA 문자 작성, 매핑 및 정렬

애플리케이션은 TextOutExtTextOut과 같은 출력 함수를 사용하여 다른 문자를 쓰는 것처럼 최종 EUDC(사용자 정의 문자) 및 PUA(프라이빗 사용 영역) 문자를 화면이나 프린터에 씁니다. 이러한 함수는 EUDC를 사용하도록 설정된 경우 EUDC 또는 PUA 문자 글꼴에서 문자 정보를 자동으로 검색합니다. 자세한 내용은 최종 User_Defined 및 프라이빗 사용 영역 문자를 참조하세요.

EUDC 또는 PUA 문자를 작성할 때 텍스트 출력 함수의 작업은 현재 선택한 글꼴에 따라 달라집니다. 선택한 글꼴이 통합 EUDC 또는 PUA 문자 글꼴인 경우 함수는 해당 글꼴에서 문자 정보를 검색합니다. 선택한 글꼴이 연결된 개별 EUDC 글꼴이 있는 DBCS( 더블 바이트 문자 집합 ) TrueType 글꼴인 경우 함수는 지정된 EUDC 글꼴에서 정보를 검색합니다. 마찬가지로 선택한 글꼴이 연결된 개별 PUA 문자 글꼴이 있는 유니코드 TrueType 글꼴인 경우 함수는 PUA 문자 글꼴에서 정보를 검색합니다. 선택한 글꼴에 연결된 EUDC 또는 PUA 문자 글꼴이 없는 경우 함수는 시스템 기본 EUDC 글꼴에서 정보를 검색합니다. 문자가 시스템 기본 EUDC 글꼴에 없거나 시스템 기본 EUDC 글꼴이 없는 경우 함수는 선택한 글꼴로 정의된 기본 문자를 씁니다.

애플리케이션은 MultiByteToWideCharWideCharToMultiByte 함수를 사용하여 유니코드와 EUDC를 매핑할 수 있습니다. MultiByteToWideChar 함수는 대부분의 EUDC를 유니코드 PUA의 문자에 매핑합니다. 그러나 특정 국가 또는 지역 표준을 지원하기 위해 일부 EUDC는 PUA가 아닌 유니코드 코드 포인트에 매핑할 수 있습니다. WideCharToMultiByte 함수는 이러한 매핑이 있고 코드 포인트에 유니코드에 유효한 비 PUA 매핑이 없는 경우 PUA의 문자를 해당 EUDC에 매핑합니다. 모든 코드 페이지에 EUDC 범위가 있는 것은 아닙니다. WideCharToMultiByte 호출에 지정된 코드 페이지에는 EUDC 범위에 매핑하기 위한 EUDC 코드 범위가 포함되어야 합니다. 코드 페이지에 EUDC 코드 범위가 없는 경우 함수는 유니코드 PUA의 모든 문자에 대한 기본 문자를 검색합니다.

MultiByteToWideCharWideCharToMultiByte 는 왕복 매핑을 보장하지 않습니다. 즉, EUDC를 포함하는 특정 멀티바이트 문자열로 시작하고, MultiByteToWideChar 를 사용하여 문자열을 유니코드에 매핑하고, WideCharToMultiByte를 사용하여 원래 DBCS에 다시 매핑하고, 원래 문자열과 동일하지 않은 결과로 끝날 수 있습니다. EUDC를 유니코드에 매핑하는 애플리케이션은 필요한 모든 문자가 적절한 코드 페이지 EUDC 영역과 유니코드 PUA 간에 왕복할 수 있도록 해야 합니다.

애플리케이션은 한 코드 페이지에서 다른 코드 페이지로 EUDC를 매핑하려고 시도해서는 안 됩니다. 애플리케이션이 한 코드 페이지에서 EUDC로 시작하고 MultiByteToWideChar를 사용하여 유니코드에 매핑하고 WideCharToMultiByte를 사용하여 다른 DBCS에 매핑하는 경우 결과에 대한 보장은 없습니다. 원래 문자는 대상 코드 페이지에서 다른 EUDC에 매핑되거나 정의되지 않은 문자로 매핑될 수 있습니다. 마찬가지로 유니코드 문자열을 EUDC 범위가 있는 코드 페이지에 매핑하면 의도하지 않은 결과가 있을 수 있습니다. 유니코드 문자열에 PUA 코드 포인트가 포함된 경우 코드 포인트가 동일한 문자를 나타내지 않는 EUDC에 매핑될 수 있습니다.

애플리케이션은 CompareString 함수의 ANSI 버전을 사용하여 EUDC가 포함된 DBCS 문자열을 비교할 수 있습니다. 함수는 문자 값을 비교하기 전에 문자를 유니코드에 효과적으로 매핑합니다. 애플리케이션은 ANSI 버전의 LCMapString 함수 및 LCMAP_SORTKEY 값을 사용하여 문자열에 대한 정렬 키를 만들 수 있습니다. 이 함수는 먼저 문자를 유니코드에 효과적으로 매핑합니다. PUA의 모든 문자는 다른 모든 유니코드 문자 다음에 정렬됩니다. 영역 내에서 문자는 숫자 순서로 정렬됩니다. 애플리케이션이 GetStringTypeA 함수를 사용하여 EUDC에 대한 CTYPE 정보를 검색하려고 하면 함수는 각 문자에 대해 NULL 을 검색합니다.

유니코드 및 문자 집합 사용