(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 내부 이름 (완전히 다른 개념)
폰트 파일 내부에는 여러 이름이 있다.
다른 API에서는 font 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 예:
1. 문서/예제에서 // set font name 처럼 등장한다.
2. UI에서 “글꼴 이름”이라고 표시된다.
- Font Family Name
- Font Face Name
- Full Font Name
1. 문서/예제에서 // set font name 처럼 등장한다.
결과적으로 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