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 구조체에 대한 포인터입니다. 함수는 다음 멤버를 검사합니다.
구성원 | 묘사 |
---|---|
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 |
참고 항목
LOGFONT