다음을 통해 공유


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 구조에서 lfCharSetlfFaceName 멤버의 값을 기반으로 글꼴을 열거합니다.

EnumFontFamilies마찬가지로 EnumFontFamiliesEx 모든 글꼴 스타일을 열거합니다. 글꼴의 모든 스타일이 동일한 문자 집합을 포함하는 것은 아닙니다. 예를 들어 Fontorama Bold에는 ANSI, 그리스어 및 키릴 자모 문자가 포함될 수 있지만 Fontorama Italic에는 ANSI 문자만 포함될 수 있습니다. 따라서 지정된 글꼴이 ANSI 문자 집합인 경우에도 특정 문자 집합을 덮는다고 가정하지 않는 것이 가장 좋습니다. 다음 표에서는 lfCharSetlfFaceName대한 다양한 값 조합의 결과를 보여 줍니다.

의미
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;

EnumFontFamiliesEnumFontFamiliesEx 대한 콜백 함수는 매우 유사합니다. 주요 차이점은 ENUMLOGFONTEX 구조에 스크립트 필드가 포함되어 있다는 것입니다.

lfCharSetlfFaceName값에 따라 EnumFontFamiliesEx 글꼴에 고유한 문자 집합이 있는 경우와 동일한 글꼴을 여러 번 열거합니다. 이렇게 하면 사용자에게 부담이 될 수 있는 광범위한 글꼴 목록을 만들 수 있습니다. 예를 들어 Century Schoolbook 글꼴은 발트어, 서양, 그리스어, 터키어 및 키릴 자모 문자 집합에 대해 표시할 수 있습니다. 이를 방지하려면 애플리케이션에서 글꼴 목록을 필터링해야 합니다.

많은 동아시아 언어의 글꼴에는 영어 이름과 지역화된 이름이라는 두 개의 서체 이름이 있습니다. EnumFonts, EnumFontFamiliesEnumFontFamiliesEx 시스템 로캘이 글꼴의 언어와 일치하지 않으면 영어 서체 이름을 반환합니다.

디바이스 컨텍스트의 그래픽 모드가 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

참고 항목

EnumFontFamExProc

EnumFontFamilies

EnumFonts

글꼴 및 텍스트 함수

글꼴 및 텍스트 개요

LOGFONT