EnumFontFamiliesExA 함수(wingdi.h)
EnumFontFamiliesEx 함수는 LOGFONT 구조체에 지정된 글꼴 특성과 일치하는 시스템의 고유한 글꼴을 모두 열거합니다. EnumFontFamiliesEx 는 서체 이름, 문자 집합 또는 둘 다를 기반으로 글꼴을 열거합니다.
구문
int EnumFontFamiliesExA(
[in] HDC hdc,
[in] LPLOGFONTA lpLogfont,
[in] FONTENUMPROCA lpProc,
[in] LPARAM lParam,
DWORD dwFlags
);
매개 변수
[in] hdc
글꼴을 열거할 디바이스 컨텍스트에 대한 핸들입니다.
[in] lpLogfont
열거할 글꼴에 대한 정보를 포함하는 LOGFONT 구조체에 대한 포인터입니다. 함수는 다음 멤버를 검사합니다.
멤버 | Description |
---|---|
lfCharSet | DEFAULT_CHARSET 설정하면 함수는 모든 문자 집합에서 고유하게 명명된 모든 글꼴을 열거합니다. 이름이 같은 글꼴이 두 개 있는 경우 하나의 글꼴만 열거됩니다. 유효한 문자 집합 값으로 설정된 경우 함수는 지정된 문자 집합의 글꼴만 열거합니다. |
lfFaceName | 빈 문자열로 설정하면 함수는 사용 가능한 각 서체 이름에 하나의 글꼴을 열거합니다. 유효한 서체 이름으로 설정하면 함수는 지정된 이름의 모든 글꼴을 열거합니다. |
lfPitchAndFamily | 운영 체제의 모든 언어 버전에 대해 0으로 설정해야 합니다. |
[in] lpProc
애플리케이션 정의 콜백 함수에 대한 포인터입니다. 자세한 내용은 EnumFontFamExProc 함수를 참조하세요.
[in] lParam
애플리케이션 정의 값입니다. 함수는 글꼴 정보와 함께 이 값을 콜백 함수에 전달합니다.
dwFlags
이 매개 변수는 사용되지 않으며 0이어야 합니다.
반환 값
반환 값은 콜백 함수에서 반환하는 마지막 값입니다. 이 값은 지정된 디바이스에 사용할 수 있는 글꼴 패밀리에 따라 달라집니다.
설명
EnumFontFamiliesEx 함수는 태그가 지정된 서체 이름을 사용하여 문자 집합을 식별하지 않습니다. 대신 항상 올바른 서체 이름과 별도의 문자 집합 값을 콜백 함수에 전달합니다. 함수는 LOGFONT 구조체의 lfCharSet 및 lfFaceName 멤버 값에 따라 글꼴을 열거합니다.
EnumFontFamilies와 마찬가지로 EnumFontFamiliesEx는 모든 글꼴 스타일을 열거합니다. 글꼴의 모든 스타일이 동일한 문자 집합을 커버하는 것은 아닙니다. 예를 들어 Fontorama Bold는 ANSI, 그리스어 및 키릴 자모 문자를 포함할 수 있지만 Fontorama Italic에는 ANSI 문자만 포함될 수 있습니다. 따라서 지정된 글꼴이 ANSI 문자 집합인 경우에도 특정 문자 집합을 포함하는 것으로 가정하지 않는 것이 가장 좋습니다. 다음 표에서는 lfCharSet 및 lfFaceName에 대한 다양한 값 조합의 결과를 보여 줍니다.
값 | 의미 |
---|---|
lfCharSet = DEFAULT_CHARSET lfFaceName = '\0' |
모든 문자 집합 내에서 고유하게 명명된 모든 글꼴을 열거합니다. 이름이 같은 글꼴이 두 개 있는 경우 하나의 글꼴만 열거됩니다. |
lfCharSet = DEFAULT_CHARSET lfFaceName = 특정 글꼴 |
모든 문자 집합과 스타일을 특정 글꼴로 열거합니다. |
lfCharSet =특정 문자 집합 lfFaceName = '\0' |
특정 문자 집합에 있는 모든 글꼴의 모든 스타일을 열거합니다. |
lfCharSet =특정 문자 집합 lfFaceName = 특정 글꼴 |
특정 문자 집합에 있는 글꼴의 모든 스타일을 열거합니다. |
다음 코드 샘플에서는 이러한 값이 사용되는 방법을 보여줍니다.
// To enumerate all styles and charsets of all fonts:
lf.lfFaceName[0] = '\0';
lf.lfCharSet = DEFAULT_CHARSET;
HRESULT hr;
// To enumerate all styles and character sets of the Arial font:
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler
}
lf.lfCharSet = DEFAULT_CHARSET;
// To enumerate all styles of all fonts for the ANSI character set
lf.lfFaceName[0] = '\0';
lf.lfCharSet = ANSI_CHARSET;
// To enumerate all styles of Arial font that cover the ANSI charset
hr = StringCchCopy( (LPSTR)lf.lfFaceName, LF_FACESIZE, "Arial" );
if (FAILED(hr))
{
// TODO: write error handler
}
lf.lfCharSet = ANSI_CHARSET;
EnumFontFamilies 및 EnumFontFamiliesEx에 대한 콜백 함수는 매우 유사합니다. 기본 차이점은 ENUMLOGFONTEX 구조에 스크립트 필드가 포함되어 있다는 것입니다.
lfCharSet 및 lfFaceName 값에 따라 EnumFontFamiliesEx는 글꼴에 고유한 문자 집합이 있을 때와 동일한 글꼴을 여러 번 열거합니다. 이렇게 하면 사용자에게 부담이 될 수 있는 광범위한 글꼴 목록을 만들 수 있습니다. 예를 들어 Century Schoolbook 글꼴은 발트어, 서양, 그리스어, 터키어 및 키릴 자모 문자 집합에 대해 나타날 수 있습니다. 이를 방지하려면 애플리케이션에서 글꼴 목록을 필터링해야 합니다.
많은 동아시아 언어의 글꼴에는 영어 이름과 지역화된 이름의 두 개의 서체 이름이 있습니다. 시스템 로캘이 글꼴의 언어와 일치하지 않는 경우 EnumFonts, EnumFontFamilies 및 EnumFontFamiliesEx는 영어 서체 이름을 반환합니다.
디바이스 컨텍스트의 그래픽 모드가 SetGraphicsMode 함수를 사용하여 GM_ADVANCED 설정되고 DEVICE_FONTTYPE 플래그가 FontType 매개 변수에 전달되면 이 함수는 시스템의 형식 1 및 OpenType 글꼴 목록을 반환합니다. 그래픽 모드가 GM_ADVANCED 설정되지 않은 경우 이 함수는 시스템의 형식 1, OpenType 및 TrueType 글꼴 목록을 반환합니다.
참고
wingdi.h 헤더는 ENumFontFamiliesEx를 유니코드 전처리기 상수의 정의에 따라 이 함수의 ANSI 또는 유니코드 버전을 자동으로 선택하는 별칭으로 정의합니다. 인코딩 중립 별칭을 인코딩 중립이 아닌 코드와 혼합하면 컴파일 또는 런타임 오류가 발생하는 불일치가 발생할 수 있습니다. 자세한 내용은 함수 프로토타입에 대한 규칙을 참조하세요.
요구 사항
요구 사항 | 값 |
---|---|
지원되는 최소 클라이언트 | Windows 2000 Professional[데스크톱 앱만] |
지원되는 최소 서버 | Windows 2000 Server[데스크톱 앱만] |
대상 플랫폼 | Windows |
헤더 | wingdi.h(Windows.h 포함) |
라이브러리 | Gdi32.lib |
DLL | Gdi32.dll |