# GNU Unifont

> Clean Markdown view of GeekNews topic #25051. Use the original source for factual precision when an external source URL is present.

## Metadata

- GeekNews HTML: [https://news.hada.io/topic?id=25051](https://news.hada.io/topic?id=25051)
- GeekNews Markdown: [https://news.hada.io/topic/25051.md](https://news.hada.io/topic/25051.md)
- Type: GN+
- Author: [neo](https://news.hada.io/@neo)
- Published: 2025-12-14T04:41:42+09:00
- Updated: 2025-12-14T04:41:42+09:00
- Original source: [unifoundry.com](https://unifoundry.com/unifont/index.html)
- Points: 4
- Comments: 2

## Topic Body

- 전 세계 유니코드 문자에 대한 **글리프(문자 도형)** 를 포함한 자유 폰트로, **GNU 프로젝트**의 일부로 유지되는 공개 폰트임  
- 15.1.01 버전부터는 이민서와 이호석의 기여로 **새로운 조합 인코딩(6/3/1 방식)** 이 도입되어 개선된 한글 글리프 체계 적용  
- 최신 **17.0.03**버전에서는 중국어·일본어 한자와 아랍어·음악 기호 등 다수의 글리프가 수정·추가됨  
- **BMP(기본 다국어 평면)** 전체 65,536 코드포인트를 지원하며, **SMP(보조 다국어 평면)** 및 **CSUR(ConScript Unicode Registry)** 영역도 점차 확장 중임  
- **GNU GPLv2+ 폰트 임베딩 예외**와 **SIL Open Font License 1.1**의 **이중 라이선스**로 배포되어, 상용 소프트웨어에서도 자유롭게 사용 가능함  
- **전 세계 문자 체계의 완전한 커버리지**를 목표로 하는 대표적인 오픈소스 유니코드 폰트 프로젝트  
  
---  
  
### GNU Unifont 개요  
- GNU Unifont은 **모든 인쇄 가능한 유니코드 코드포인트**에 대한 글리프를 포함하는 폰트로, GNU 프로젝트의 일부로 유지됨  
  - 기본 다국어 평면(BMP, U+0000~U+FFFF)을 완전 지원  
  - 보조 다국어 평면(SMP, U+010000~U+01FFFF) 및 **CSUR/Under-CSUR** 영역도 지속 확장 중  
- **상용 소프트웨어에서도 사용 가능**하며, 파생 폰트는 동일한 라이선스로 공개해야 함  
  - 라이선스는 **GNU GPLv2+ (폰트 임베딩 예외 포함)** 및 **SIL Open Font License 1.1**  
  - 파생 폰트의 공개를 통해 공공 이익을 보장함  
  
### 저작권 및 라이선스  
- 수천 개의 글리프는 **개별 기여자들의 창작물**로, 각국 저작권법의 보호를 받음  
  - 일부는 기존 문자 형태, 일부는 **아이콘·상징 디자인**으로 국제 보호 수준이 더 높음  
- 독일 저작권법 관련 메모랜덤이 공개되어 있음  
- Unifont 13.0.04 이후 버전부터 **GPL 2+ / SIL OFL 1.1** 이중 라이선스로 배포됨  
  - 문서에 폰트를 포함(embed)하는 것은 GPL 위반이 아님  
  
### 폰트 다운로드 및 형식  
- 표준 빌드와 **CSUR/Under-CSUR PUA 글리프 포함 버전** 제공  
  - **OpenType(.otf)** , **PCF**, **BDF**, **PSF**, **HEX** 등 다양한 형식 지원  
  - Windows, macOS에서 설치 가능하며, macOS 터미널에서는 **Antialias 옵션**을 켜야 가독성 확보  
- 일부 렌더링 엔진은 글리프 간격 정보를 무시하므로, **모노스페이스 전용 엔진**에서는 표시 오류 가능  
  
### Unifont의 한계  
- 각 인쇄 가능한 코드포인트당 **하나의 글리프만 저장**  
  - 인도계 문자(데바나가리, 벵골어, 타밀어 등)나 **위치에 따라 형태가 변하는 문자(아랍어 등)** 는 정확히 렌더링되지 않음  
  - 복잡한 스크립트는 **전문 OpenType 폰트** 사용이 권장됨  
  
### 새 글리프 기여  
- 새로운 글리프를 추가하려면 **사전 이메일 연락** 필요  
  - 중복 작업 방지를 위해 협의 후 참여 가능  
- 중국 정부가 저작권을 보유한 **15×16 픽셀 한자 글리프(Plane 2, 3)** 는 자유 폰트에 포함 불가  
  
### 최신 릴리스 — Unifont 17.0  
- **2025년 11월 1일 버전 17.0.03**  
  - 중국어 ‘馬(말)’·‘鳥(새)’ 부수 포함 한자 100여 개 이상 수정  
  - 1935~2013년 간의 **중국 간체자 표준 목록** 반영  
  - 2009년 발표된 **현대 상용자 부수 규격** 포함  
- **2025년 10월 18일 버전 17.0.02**  
  - Plane 0~3 전반에서 **Paul Hardy, David Corbett, 晓晓Akatsuki, Boris Zhang** 등 다수 기여  
  - 아랍어, 체스 기호, CJK 확장자 등 다수 수정  
- **2025년 9월 9일 버전 17.0.01**  
  - 아랍어 확장-B, 통화 기호, 텔루구·칸나다 문자 등 추가  
  - Plane 1~3에서 **새로운 아랍어 확장-C, Sidetic, Tolong Siki, Beria Erfe, Adlam** 등 다수 스크립트 추가  
  
### 이전 주요 버전  
- **Unifont 16.0 (2025년 상반기)**  
  - 아랍어, 그리스어, 한글, 음악 기호 등 다수 수정  
  - **Sitelen Pona**, **Zbalermorna** 등 CSUR 스크립트 추가  
- **Unifont 15.1 (2024년)**  
  - **이호석(Ho-seok Ee)** 의 **조합형 한글 6/3/1 Johab 인코딩** 도입  
  - **TrueType 대신 OpenType 기본 빌드로 전환**  
  - **한글, CJK 확장자, Wen Quan Yi 글리프** 대규모 개선  
  
### 글리프 커버리지  
- Plane 0~3, Plane 14, Plane 15까지 **광범위한 유니코드 평면 지원**  
  - Plane 0: 기본 다국어 평면 (모든 주요 문자 완전 커버)  
  - Plane 1: 보조 다국어 평면 (음악 기호, 상형문자, 고대 문자 등)  
  - Plane 2~3: **CJK 확장 한자**  
  - Plane 14: 태그 및 변형 선택자  
  - Plane 15: **CSUR/Under-CSUR** 사설 영역  
  
### CSUR 및 UCSUR 스크립트  
- **Tengwar, Cirth, Aurebesh, Klingon, Sitelen Pona, Sadalian** 등  
  - 다양한 인공 문자(conlang script) 포함  
  - 일부는 아직 미완성 상태로 표시  
  
### 일본어 및 중국어 변형  
- **JIS X 0213** 표준을 완전 지원하는 **unifont_jp** 버전 제공  
  - 초기에는 **Jiskan16**, 이후 **Izumi16** 공개 글리프로 교체  
- 중국어 버전은 **통용규범한자표** 완전 커버  
  - **Wen Quan Yi(文泉驛)** 프로젝트의 공개 글리프를 기반으로 함  
  
### 기술적 세부사항  
- **TrueType 변환**은 **Luis Alejandro González Miranda**의 스크립트를 기반으로 함  
  - `.hex` → `.sfd` → `.ttf` 변환 자동화  
- **16×16 픽셀 그리드**를 기본으로 하며, 향후 **32×32 픽셀 글리프** 지원 예정  
  
### 향후 계획  
- SMP 평면의 16×16 픽셀 글리프는 모두 완성됨  
- **탕구트(Tangut)** 등 복잡한 스크립트는 32×32 픽셀로 향후 제작 예정  
- **CSUR 스크립트 추가 작업** 지속 중  
- 모든 신규 기여는 **GPL 2+ / SIL OFL 1.1** 조건으로 공개해야 함  
  
### 프로젝트 의의  
- GNU Unifont은 **전 세계 문자 체계의 디지털 접근성 확보**를 목표로 하는 대표적 자유 폰트  
- **오픈소스 생태계, 국제화(i18n), 폰트 엔지니어링** 분야에서 핵심 인프라 역할 수행  
- 지속적인 커뮤니티 기여를 통해 **유니코드 표준의 시각적 완성도**를 높이는 프로젝트임  
  
---   
  
### [Unifont의 한글 폰트 페이지 - Hangul(Hangeul) Font](https://unifoundry.com/hangul/index.html)  
  
### 한글의 기원과 구조  
- 한글은 **세종대왕이 1443~1446년** 사이에 창제하여 1446년 *훈민정음 해례본*으로 반포  
  - 창제 목적은 “백성이 쉽게 배우고 매일 편리하게 쓰게 하려 함”으로 명시  
  - 해례본은 제자 원리를 설명한 주석서로, **2차 세계대전 중 발견된 유일본**이 보존되어 있음  
- 한글은 **초성(자음)·중성(모음)·종성(받침)** 세 요소로 이루어진 **음절 블록 구조**  
  - 예시: “한글”은 ‘ㅎ+ㅏ+ㄴ’, ‘ㄱ+ㅡ+ㄹ’의 조합으로 구성  
  - 모음과 반모음(y, w)은 초성 오른쪽 또는 아래쪽에 배치  
  
### 자음의 구성 원리  
- 자음은 **발음 기관의 형태를 본뜬 다섯 기본 자음**(ㄱ, ㄴ, ㅁ, ㅅ, ㅇ)에서 출발  
  - 여기에 획을 더해 17개의 원래 자음이 만들어짐  
  - 일부 자음은 **쌍자음 형태로 강세**를 표시  
- **조합형 자모(Compatibility Jamo)** 도 Unicode에 포함되어 있으며, 일부 옛 자모는 현재 사용되지 않음  
  
### 모음의 구성 원리  
- 모음은 **하늘(양), 사람(중), 땅(음)** 의 삼재 개념에서 유래  
  - 기본 요소: 점(ㆍ), 수평선(ㅡ), 수직선(ㅣ)  
- 원래 11개의 모음이 존재했으며, **ㆍ(아래아)** 는 현대 표준어에서는 사라졌으나 **제주 방언**에 남아 있음  
- 모음 결합으로 **이중모음(diphthong)** 이 형성되며, 일부는 현대 한글에서 사용되지 않음  
- **Unifont Hangul 자모 세트**는 고대와 현대의 모든 모음·이중모음을 지원  
  
### Unicode 내 한글 영역  
- 한글은 다음 **Unicode 범위**에 포함  
  - **U+1100–U+11FF:** Hangul Jamo  
  - **U+3130–U+318F:** Hangul Compatibility Jamo  
  - **U+A960–U+A97F:** Hangul Jamo Extended–A  
  - **U+AC00–U+D7A3:** Hangul Syllables  
  - **U+D7B0–U+D7FF:** Hangul Jamo Extended–B  
  - **U+FFA0–U+FFDF:** Half-width Compatibility Jamo  
- **초성·중성·종성의 조합 위치 조정**이 폰트 디자인의 핵심이며, **비트맵 폰트에서도 조합형 음절 표현 가능**  
  
### X11 조합형(Johab) 폰트와 Unifont  
- **Johab 인코딩 폰트**는 초성·중성·종성을 결합해 음절 글리프를 생성  
  - Unix X11 환경의 **Hanterm 터미널**에서 사용  
- **Hanterm용 무료 폰트**는 GPL 호환이 아니었기 때문에, Unifont에서는 **새로운 한글 음절 글리프를 직접 제작**  
  - 변환 과정: Perl 스크립트 *johab2ucs2.pl* → .hex → .bdf 변환  
  - 기존 폰트(iyagi16, johabg16 등)는 **한터미널 전용 라이선스**로 제한  
- 이후 **새로운 Hangul Syllables 세트**를 수년간 제작하여 Unifont에 포함  
  
### 최근 기여와 인코딩 개선  
- **이민서(Minseo Lee)** : 2023년, Hanterm 순서 기반의 현대 글리프와 고대 글리프 수정본 제공  
  - Perl 스크립트 개선 및 Unicode 범위 내 자모 일관성 수정  
- **이호석(Ho-Seok Ee)** : **Johab 6/3/1 인코딩** 제안  
  - 초성 6, 중성 3, 종성 1의 조합 구조로, 기존보다 **글리프 생성이 단순화**  
  - **Private Use Area(U+E000–U+E8FF)** 로 코드 포인트 이동 제안  
  - **Unifont 15.1.01 버전**부터 이 인코딩 방식 채택  
  
### Unicode 한글 음절 블록 (U+AC00–U+D7A3)  
- 총 **11,172개 음절 글리프**로 구성  
  - 초성 19개(또는 채움자 1개), 중성 21개, 종성 27개(또는 없음)  
  - 조합식: (19×21)×28 = 11,172  
- 모음으로 시작하는 단어는 **초성 ‘ㅇ(이응)’** 을 채움자로 사용  
- Unifont 5.1 이후 버전에서는 **새로운 음절 블록 생성 과정**이 별도 문서 *Generating Hangul Syllables* 에 상세히 기술됨

## Comments



### Comment 47708

- Author: joyfui
- Created: 2025-12-14T13:16:35+09:00
- Points: 1

마인크래프트의 못생긴 한글폰트의 정체가 얘죠...

### Comment 47693

- Author: neo
- Created: 2025-12-14T04:41:43+09:00
- Points: 1

###### [Hacker News 의견들](https://news.ycombinator.com/item?id=46248859) 
- 우리는 Solvespace의 텍스트 창과 속성 브라우저에 **GNU Unifont**을 사용함  
  실행 파일에 바로 내장되어 있어서 매우 유용했음. 일부 사용자는 설계에 CJK 문자를 포함하는데, 모든 플랫폼에서 그냥 잘 작동함  
  CAD의 홀 주석을 살펴보던 중, **카운터보어(counter-bore)** 와 **카운터싱크(counter-sink)** 기호가 이미 Unifont에 포함되어 있어 놀라웠음  
  실험용 웹 버전은 [여기서 볼 수 있음](https://cad.apps.dgramop.xyz/)
  - 웹 버전의 단순함이 정말 멋짐. Solvespace는 내가 가장 좋아하는 **MCAD 프로그램**으로, 빠르게 PCB 테스트용 지그를 만들 때 항상 먼저 찾는 도구임  
    기하가 단순할 때는 사용감이 매우 쾌적함
  - 단지 폰트 선택만으로 이런 멋진 효과가 나오는 게 신기함. 물론 Unifont와 Unicode 전체에는 수많은 인류의 시간이 들어갔겠지만, **청동기 시대 CAD 엔지니어**가 Linear A로 이름을 써도 문제없다는 발상이 마음에 듦
  - 웹 버전이 정말 깔끔함. Solvespace는 기능은 제한적이지만 **제약 조건을 표현할 때의 유연함과 즐거움**이 압도적임  
    언젠가 코드에 들어가서 “제약을 생성할 수 없습니다”라는 모달 대화창을 대체해보고 싶음
- 다른 사람들을 위해 정리하자면, **GNU Unifont은 비트맵 폰트**임  
  BMP의 모든 코드 포인트에 고정된 글리프를 제공하고, 일부 다른 평면의 코드 포인트도 포함함  
  언어별 렌더링 지식 없이도 Unicode 텍스트를 편집할 수 있는 에디터에 유용함  
  다만 데바나가리 같은 복잡한 스크립트를 쓸 때는 **형태 조합(shaping)** 이 없어 실제 텍스트처럼 보이지 않음  
  - 여기서 BMP는 BitMap이 아니라 **Unicode Basic Multilingual Plane**을 의미함. 즉, 처음 65,536개의 코드 포인트 영역임
  - 그럼 포인트 크기마다 별도의 파일이 있는 것인지 궁금함. 폰트에 대해 내가 아는 게 거의 없다는 걸 새삼 느낌
- 그 웹사이트의 첫 문장은 GNU Unifont이 **무엇인지 설명해야 하지 않나** 싶음. 아마 거의 모든 Unicode 코드 포인트를 포함한 단일 copyleft 폰트인 듯함
  - 사실 두 번째와 세 번째 문장이 이미 정확히 설명하고 있음. BMP의 모든 인쇄 가능한 코드 포인트에 대한 글리프를 포함하고, **마지막 수단용 폰트**로 적합함  
    다른 폰트에서 글리프를 찾지 못했을 때 문자를 표시해주는 역할임
  - “거의 모든”이 “모든”은 아님. 나는 희귀한 CJK 문자를 렌더링해야 하는 프로젝트가 있는데, Unifont에서는 제대로 표시되지 않음  
    대신 [Jigmo 폰트](https://kamichikoichi.github.io/jigmo/)를 사용했는데, CJK 글리프가 가장 완전했음
  - 나도 처음엔 헷갈렸는데, “Home”을 눌러보니 링크가 랜딩 페이지가 아니라는 걸 깨달음
  - 이런 식으로 첫 문장에서 설명이 부족한 **오픈소스 프로젝트**가 정말 많음
  - “GNU Unifont은 GNU 프로젝트의 일부이며 BMP의 모든 인쇄 가능한 코드 포인트에 대한 글리프를 포함한다”는 문장이 이미 충분히 명확하다고 생각함
- 출력했을 때도 정말 아름다움. 나는 그것을 **나선형 포스터**로 만들어 벽에 걸어두었음  
  [The Mostly Complete Unicode Spiral](https://shkspr.mobi/blog/2022/07/the-mostly-complete-unicode-spiral/)
  - 멋짐! 어떤 크기로 출력했는지 궁금함. 주요 나선 주변의 **드문드문한 한자들**은 Unicode의 자연스러운 배치인지, 아니면 연출인지?  
    전체가 은하처럼 보이고, 이모지가 바깥쪽 가장자리에 정렬된 게 인상적이었음. 지구 이모지를 찾는 재미도 있었음
- Unifont은 각 코드 포인트당 하나의 글리프만 저장함  
  그래서 **복잡한 스크립트(Indic, Arabic 등)** 는 제대로 렌더링되지 않음  
  이런 경우에는 OpenType 폰트를 사용해야 하며, Unifont은 어디까지나 **fallback용 폰트**로 적합함
- 폰트 사이트에는 종종 “Hello World” 같은 **type specimen** 미리보기 이미지가 있음. Unifont 페이지에도 그런 걸 추가하면 좋겠음
- GNU라는 이름을 보면, 모든 면에서 최고는 아니더라도 **사용자 존중** 면에서는 거의 최고라고 느껴짐
- 나는 Unifont을 시스템 전체에 적용하고, Firefox에서는 **유일한 폰트**로 강제 사용함  
  웹 폰트 다운로드도 비활성화했고, CSUR(ConScript Unicode Registry)에 내가 만든 문자도 있음  
  Qt에서는 DPI 설정이 까다롭지만 `QT_FONT_DPI=128`로 해결됨. RimWorld 같은 게임에서도 Unifont만 쓰게 하고 싶음
  - 왜 그렇게 사용하는지 궁금함
  - 나도 설치해봤는데, HN을 **200% 확대**해야 읽을 수 있었음. XFCE에서는 그럭저럭 괜찮았음
- 나는 Firefox에서 예쁜 CJK 폰트를 쓰려면 Unifont을 제거해야 했음  
  폰트 폴백이 이상하게 Unifont을 우선 선택했기 때문임
  - 해결하려면 Firefox 설정의 **Language and Appearance → Fonts → Advanced**로 들어가 각 스크립트별 폰트를 지정해야 함  
    그렇지 않으면 어떤 폰트가 선택될지 예측 불가함
  - 나도 Firefox와 Chrome에서 Unifont 글리프가 **보이지 않는 문제**를 겪었음. nixpkgs 이슈 트래커에도 관련 보고가 있음  
    Noto Color Emoji에서도 비슷한 현상이 있었음. 폰트는 정말 미묘한 세계임
- 나는 Unifont을 기반으로 **Playdate용 폰트**를 만들었음  
  [https://github.com/remysucre/cuniform](https://github.com/remysucre/cuniform)
