Facename vs. Fontname

(Windows GDI LOGFONT 관점에서 Facename vs. Fontname)

Windows GDI에서 LOGFONT 구조체를 볼 때, 그리고 글꼴 이름을 이야기 할 때 종종 헷갈리는 부분이 Facename 과 Fontname 이다.
결론부터 말하면,

LOGFONT에는 facename만 있고, fontname이라는 필드는 없다.
흔히 말하는 font name은 대부분 lfFaceName을 의미한다.


LOGFONT의 실제 필드

Face Name (lfFaceName)
정의:
  • GDI에서 폰트를 식별하기 위한 “서체 패밀리 이름”
  • 사용자가 보통 인식하는 글꼴 이름
예시:

Font Name 이라는 용어는 어디서 나오나?

1. 일반적인 용어(비공식)로 UI, 문서, 개발자 대화에서 "font name" ≒ face name 으로 등장한다.
2. TrueType / OpenType 내부 이름 (완전히 다른 개념)
폰트 파일 내부에는 여러 이름이 있다.
| 이름              | 설명           |
| --------------- | ------------ |
| Family Name     | Arial        |
| Subfamily Name  | Bold         |
| Full Name       | Arial Bold   |
| PostScript Name | Arial-BoldMT |
3. DirectWrite / GDI+ / WPF
다른 API에서는 font name이 더 세분화된다.

DirectWrite 예:
  • Font Family Name
  • Font Face Name
  • Full Font Name

FaceName과 FontName에 왜 혼동이 생기나?
1. 문서/예제에서 // set font name 처럼 등장한다.
2. UI에서 “글꼴 이름”이라고 표시된다.

결과적으로 font name이라는 말이 FaceName을 가리키는 관용어처럼 사용된다.

코드 안에서 FaceName 대신에 FontName 이름을 써도 되나?

FontName 변수명 / 메서드 이름이 틀린 건 아니다. 대부분의 개발자에게 font name = 글꼴 이름 = Arial, 맑은 고딕 등으로 자연스럽게 인식되기 때문에 FaceName에 들어가는 문자열을 FontName이라 부르는 건 관용적으로 흔한 일이다.
그렇지만 실무적으로는 써도 되지만 “정확한 코드”를 지향한다면 권장되지는 않는다.

FontName이라는 이름은 다음 중 무엇인지 모호해질 수 있다.

| 가능성             | 의미               |
| --------------- | ---------------- |
| Face Name       | Arial            |
| Full Name       | Arial Bold       |
| File Name       | arialbd.ttf      |
| Display Name    | Arial (TrueType) |
| PostScript Name | Arial-BoldMT     |

지금은 LOGFONT만 써서 상관 없더라도, 나중에 DirectWrite / GDI+ / 폰트 메타데이터를 섞으면 의미 충돌이 생긴다.

라이브러리·유지보수를 생각하면 faceName이 더 정확하고 안전하다.

이미 팀에서 FontName이 널리 쓰이고 있다면
주석 한 줄로 의미를 고정하는 것도 좋은 선택이다:


Show Comments