프로그래밍/MFC/WIN32

MFC 현재 윈도우 폰트 속성

nanze 2021. 12. 28. 17:16
반응형

현재 윈도우의 폰트 속성을 알고 싶을 경우가 있다. 폰트 속성을 알아아내기 위해서는 다음 코드를 보자.

BOOL TestDlg::OnInitDialog()
{
    LOGFONT lf;
    CDialogEx::OnInitDialog();
    //생략
    m_bigfont.CreatePointFont(200, "굴림");
    GetDlgItem(IDC_EDIT)->SetFont(&m_bigfont);
    GetFont()->GetLogFont(&lf);
    lf.lfItalic = TRUE;
    // 주어진 로그 폰트 속성을 이용하여 폰트를 생성한다.
    m_stylefont.CreateFontIndirect(&lf);
    GetDlgItem(IDC_EDIT)->SetFont(&m_stylefont);
    
    //생략
    return TRUE;
}

위 코드를 보면 GetFont 함수를 이용하여 현재 윈도우의 CFont 객체를 얻어오고 GetLogFont 함수를 호출하여 현재 폰트의 속성 값을 얻어올 수 있다. 

MSDN 에서 LOGFONT 정보를 보면 다음과 같다. 

typedef struct tagLOGFONTA {
  LONG lfHeight;
  LONG lfWidth;
  LONG lfEscapement;
  LONG lfOrientation;
  LONG lfWeight;
  BYTE lfItalic;
  BYTE lfUnderline;
  BYTE lfStrikeOut;
  BYTE lfCharSet;
  BYTE lfOutPrecision;
  BYTE lfClipPrecision;
  BYTE lfQuality;
  BYTE lfPitchAndFamily;
  CHAR lfFaceName[LF_FACESIZE];
} LOGFONTA, *PLOGFONTA, *NPLOGFONTA, *LPLOGFONTA;

lfHeight

글꼴의 문자 논리적 높이를 말한다. 문자 높이 값은 문자 셀 높이에서 내부 행간 값을 뺀 값이다. 지정된 값의 의미로는 다음과 같이 사용된다.

- 0 보다 값이 클 경우 값을 장치 단위로 변환하고 사용 가능한 글꼴의 셀 높이와 일치시킨다.

- 0 일 경우 기본 높이 값을 사용한다.

- 0 보다 작을 경우 값을 장치 단위로 변환하고 사용 가능한 글꼴의 문자 높이에 절대값을 일치시킨다. 

MM_TEXT 모드의 경우 다음 공식을 사용하여 지정된 포인트 크기의 글꼴 높이를 구할 수 있다. 

lfHeight = -MulDiv(PointSize, GetDeviceCaps(hDC, LOGPIXELSY), 72);

lfWidth

글꼴 문자의 논리적 평균 너비이다.

 

lfEscapement

폰트에 쓰여진 글꼴의 각 라인의 각도를 의미한다. (1/10 도)

 

lfOrientation

각 글자의 기준서의 각도를 의미한다. (1/10 도)

 

lfWeight

글꼴의 두껍기를 의미한다. (0~1000 사이 값을 갖는다.)

400 => 기본  700 => 볼드 

0이 사용되면 글꼴의 기본 값이 사용된다.

 

lfItalic

글꼴의 이탤릭체 여부를 의미한다.

 

lfUnderline

글꼴의 밑줄 여부를 의미한다.

 

lfStrikeOut

글꼴의 취소선 여부를 의미한다.

 

lfCharSet

글꼴의 문자집합을 의미한다.

 

lfOutPrecision

글꼴 출력의 정밀도를 의미한다. 

 

lfClipPrecision

글꼴 클리핑 정밀도를 의미한다. 클리핑 경계에 이는 문자를 처리 방법을 정의

 

lfQuality

글꼴 출력의 품질을 의미한다.

 

lfPichAndFamily

글꼴 피치와 계열 정보를 의미한다.

 

lfFaceName

글꼴의 이름을 의미한다. 

반응형