맨위로가기

GNU 유니폰트

"오늘의AI위키"는 AI 기술로 일관성 있고 체계적인 최신 지식을 제공하는 혁신 플랫폼입니다.
"오늘의AI위키"의 AI를 통해 더욱 풍부하고 폭넓은 지식 경험을 누리세요.

1. 개요

GNU 유니폰트는 유니코드의 모든 문자를 표현하는 것을 목표로 하는 비트맵 글꼴이다. .hex 형식은 8 또는 16 픽셀 너비, 16 픽셀 높이의 글리프를 정의하며, 각 글리프는 유니코드 코드 포인트, 콜론, 비트맵 문자열로 구성된다. 이 글꼴은 트루타입, BDF, PCF, .hex, PSF 등 다양한 형식으로 제공되며, 유니코드 BMP를 완벽하게 지원하고, 보충 다국어 평면과 ConScript 유니코드 레지스트리도 일부 지원한다. 그러나 OpenType 기능의 한계로 인해 복잡한 스크립트나 문맥적 형태를 완벽하게 처리하지 못하며, 주로 간단한 알파벳 스크립트나 "최후의 수단" 기본 글꼴로 사용된다. 유니폰트는 로만 치보라에 의해 1998년에 개발되었으며, 2013년 리처드 스톨만에 의해 GNU 패키지로 공개되었다.

더 읽어볼만한 페이지

  • 1998년 도입 - 게임보이 컬러
    게임보이 컬러는 1998년 닌텐도에서 출시된 휴대용 게임기로, 흑백 화면의 게임보이 단점을 보완하여 컬러 화면을 지원하며 기존 게임보이 게임과의 호환성을 갖춘 게임기이다.
  • 1998년 도입 - 보스니아 헤르체고비나 태환 마르카
    보스니아 헤르체고비나 태환 마르카는 1995년 데이턴 협정에 따라 도입되어 유로에 고정 환율로 연동된 보스니아 헤르체고비나의 통화이다.
  • 유니코드 글꼴 - 노토 폰트
    노토 폰트는 구글이 개발한 글꼴 모음으로, 텍스트 렌더링 시 글꼴이 없어 문자가 깨져 보이는 문제를 해결하고자 'No Tofu'에서 유래되었으며, 다양한 언어와 문자를 지원하는 것을 특징으로 한다.
  • 유니코드 글꼴 - 본고딕
    본고딕은 어도비가 공개한 범-중일한 서체 패밀리로, 각 지역의 관례와 표준을 반영하여 디자인되었으며 여러 파생 폰트의 기반이 되는 특징을 가진다.
  • 오픈 소스 글꼴 - 노토 폰트
    노토 폰트는 구글이 개발한 글꼴 모음으로, 텍스트 렌더링 시 글꼴이 없어 문자가 깨져 보이는 문제를 해결하고자 'No Tofu'에서 유래되었으며, 다양한 언어와 문자를 지원하는 것을 특징으로 한다.
  • 오픈 소스 글꼴 - OCR-B
    OCR-B는 1960년대 ECMA에서 개발되어 ISO 1073-2로 채택된 광학 문자 인식 관련 표준 글꼴이며, 다양한 디지털 환경에서 사용되고 퍼블릭 도메인 버전도 존재한다.
GNU 유니폰트
기본 정보
GNU Unifont 로고
GNU Unifont 로고
링크"http://unifoundry.com/unifont.html"
"http://savannah.gnu.org/projects/unifont/"
스타일유니코드
비트맵
산세리프
분류듀오스페이스
제작자로만 치보라, 폴 하디
글리프 수2,096,578
라이선스"소스 코드: GPL-2.0-or-later"
"글꼴: GPL-2.0-or-later 와 Font-exception-2.0, SIL OFL 1.1 (13.0.04 이후)"
"매뉴얼: GFDL-1.3-or-later"
웹사이트unifoundry.com/unifont/
savannah.gnu.org/projects/unifont/
제작일1998년
최신 릴리스 버전15.0.06 (2023년 12월 15일)
샘플[[파일:Unifont sample v13.0.06.png|Unifont sample v13.0.06.png]]
전체 샘플 이미지[[파일:Unifont full sample v13.0.06 0000-1FFFFF.png|Unifont full sample v13.0.06 0000-1FFFFF.png]]
지원 언어예 (아랍어)
예 (키릴 문자)
예 (데바나가리 문자)
예 (그리스어)
예 (히브리어)
예 (이모지)
예 (국제 음성 기호)
예 (라틴어)
관련 정보
참고https://www.minecraft.net/en-us/article/minecraft-1-20-pre-release-5

2. .hex 글꼴 형식

GNU 유니폰트의 .hex 형식은 폭이 8 또는 16 픽셀이고 높이가 16 픽셀인 글리프를 정의한다.[2] 대부분의 서구권 스크립트 글리프는 8 픽셀 너비로 정의할 수 있지만, 다른 글리프(특히 CJK 세트)는 일반적으로 16 픽셀 너비로 정의된다.[2] .hex 형식은 새로운 글립 문자를 쉽게 추가할 수 있도록 고안된 중간 형식이다.

2. 1. 글리프 정의

GNU 유니폰트 파일(unifont.hex)에서 각 글리프는 한 줄로 표현된다. 각 행은 4자리 유니코드 16진수 코드 포인트, 콜론, 비트맵 문자열로 구성된다.[2] 비트 문자열은 너비 8 픽셀 글리프의 경우 32자리 16진수, 너비 16 픽셀 글리프의 경우 64자리 16진수이다.[2] 비트 문자열의 '1' 비트는 'on' 픽셀에 해당하며, 픽셀 비트는 왼쪽에서 오른쪽으로, 위에서 아래로 저장된다.[2]

예를 들어 ASCII 대문자 'A' 글리프는 다음과 같이 정의된다.[2]

```

0041:0000000018242442427E424242420000

```

여기서 `0041`은 16진수 유니코드 코드 포인트(10진수 65, 문자 'A')이며, 콜론 다음의 문자열은 비트맵을 나타낸다.[2] 이 예에서 글리프 너비는 8픽셀이므로 비트 문자열은 32개의 16진수로 구성된다.[2] 비트 문자열이 8개의 0으로 시작하므로 상위 4개 행은 비어 있고, 4개의 0으로 끝나므로 하위 2개 행도 비어 있다.[2] 이는 라틴 글리프의 기본 글꼴 디센더가 기준선에서 2개 행 아래, 대문자 높이가 기준선에서 10개 행 위에 있음을 의미한다.[2]

2. 2. 비트맵 문자열

GNU 유니폰트 파일(unifont.hex)에서 각 글리프는 한 줄로 표시되며, 이 줄은 4자리의 유니코드 16진수 코드 포인트, 콜론(:), 비트맵 문자열로 구성된다. 비트맵 문자열은 글리프의 너비에 따라 달라지는데, 8픽셀 너비의 글리프는 32자리의 16진수로, 16픽셀 너비의 글리프는 64자리의 16진수로 표현된다.[2]

비트 문자열에서 '1' 비트는 해당 픽셀이 '켜짐(on)' 상태임을 나타낸다. 픽셀 비트는 왼쪽에서 오른쪽, 위에서 아래 순서로 저장된다. 즉, 비트 문자열을 2진수로 변환했을 때, 1은 켜진 픽셀을, 0은 꺼진 픽셀을 의미하며, 이 픽셀들이 모여 글리프의 형태를 구성한다.[2]

ASCII 대문자 'A' 글리프의 예시는 다음과 같다.[2]

```

0041:0000000018242442427E424242420000

```

`0041`은 'A'의 유니코드 코드 포인트(16진수)이며, 콜론 뒤의 32자리 16진수 문자열이 비트맵 데이터이다. 이 예시는 8픽셀 너비 글리프이므로 32자리 16진수로 표현되었다. 비트맵 문자열의 처음 8자리가 0이므로 상위 4개 행은 비어있고, 마지막 4자리가 0이므로 하위 2개 행도 비어있다. 이를 통해 'A' 글리프의 모양과 위치를 파악할 수 있다.[2]

2. 3. 예시

ASCII 대문자 'A' 글리프를 예시로 들어 .hex 형식의 구조를 설명하면 다음과 같다.

```

0041:0000000018242442427E424242420000

```

첫 번째 숫자 0041은 16진수 유니코드 코드포인트로, 10진수 65, 즉 문자 'A'의 코드 포인트이다. 콜론(:)은 코드 포인트와 비트맵을 구분한다. 이 예시에서 글리프는 8 픽셀 너비이므로 비트 문자열은 32자리의 16진수로 표현된다.

비트 문자열은 8개의 0으로 시작하므로 상위 4개 행은 비어 있다 (8 비트, 바이트 당 2개의 16진수, 8 픽셀 전체 글리프의 경우 행 당 8비트). 비트 문자열은 4개의 0으로 끝나므로 하단 2개 행도 비어 있다. 기본 글꼴 디센더는 기준선보다 2줄 아래에 있고, 높이가 기준선보다 10행 높다는 것은 암묵적으로 정해져 있다. 이는 라틴 글리프가 있는 GNU 유니폰트의 경우에 해당한다.

이 형식을 처리하는 방법에는 여러 가지가 있다. 초기에는 문자열을 텍스트 편집기에서 편집 가능한 ASCII 아트 표현으로 변환하는 `hexdraw` 스크립트가 사용되었다. 다른 방법으로는 전체 코드 포인트 범위에 대한 비트맵 이미지 그리드를 생성하고 이미지 편집기를 사용하는 것이 있다. 어떤 방법을 사용하든, 편집된 글리프는 나중에 저장을 위해 .hex 파일로 다시 변환된다.[2]

2. 3. 1. hexdraw 표현

`hexdraw` 스크립트는 .hex 형식의 글리프 정의를 사람이 읽기 쉬운 ASCII 아트 형태로 변환하여 시각적으로 표현한다. 예를 들어, 다음은 ASCII 대문자 'A'에 대한 글리프 정의이다.

```

0041:0000000018242442427E424242420000

```

이 정의에서 첫 번째 숫자(0041)는 16진수 유니코드 코드 포인트이다. 16진수 0041은 10진수 65이며, 이는 문자 'A'의 코드 포인트에 해당한다. 콜론(:)은 코드 포인트와 비트맵을 구분한다. 글리프의 너비가 8픽셀이므로 비트 문자열은 32개의 16진수로 구성된다.

`hexdraw` 스크립트는 이 문자열을 다음과 같이 시각적으로 표현한다.[2]

```

0041:

––––––––

––––––––

––––––––

––––––––

–––##–––

––#––#––

––#––#––

–#––––#–

–#––––#–

–######–

–#––––#–

–#––––#–

–#––––#–

–#––––#–

––––––––

––––––––

```

이 표현은 텍스트 편집기에서 편집한 다음, 동일한 유틸리티를 사용하여 16진수 문자열로 다시 변환할 수 있다. 이러한 중간 형식을 통해 새로운 글리프 문자를 쉽게 추가할 수 있다.[2]

3. 역사

GNU 유니폰트는 1990년대부터 개발되어 온 비트맵 글꼴이다. 유니폰트의 발전 과정은 다음과 같이 요약될 수 있다.

연도내용
1994년 ~ 1998년로만 치보라가 유니폰트 포맷을 개발[7][5]
2008년루이스 알레한드로 곤살레스 미란다가 유니폰트를 트루타입으로 변환하는 프로그램을 작성, 폴 하디가 결합 문자 지원[3][4]
2013년리처드 스톨만이 유니폰트를 GNU 패키지로 공개, 폴 하디를 메인테이너로 지정[5]


3. 1. 초기 개발

로만 치보라(Roman Czyborra)는 1994년부터 노력하여 1998년에 유니폰트(Unifont) 포맷을 만들었다.[7][5]

2008년, 루이스 알레한드로 곤살레스 미란다(Luis Alejandro González Miranda)는 유니폰트를 트루타입 폰트로 변환하는 프로그램을 작성했다. 폴 하디(Paul Hardy)는 나중에 트루타입 버전에서 결합 문자를 지원하도록 수정했다.

이후, 리처드 스톨만은 2013년 10월에 폴 하디를 유지보수 담당자로 하여 유니폰트를 GNU 패키지로 공개했다.

3. 2. 트루타입 변환

2008년 루이스 알레한드로 곤살레스 미란다는 이 글꼴을 트루타입 글꼴로 변환하는 프로그램을 작성했다.[3] 폴 하디는 나중에 트루타입 버전의 문자 조합을 지원하도록 수정했다.[4]

3. 3. GNU 패키지

리처드 스톨만은 2013년 10월 유니폰트를 GNU 패키지로 공개하고 폴 하디를 메인테이너로 지정했다.[5]

4. 현황

유니코드 기본 다국어 평면(BMP)은 216(65,536)개의 코드 포인트를 포함하며, 이 중 2,048개는 UTF-16 대리 코드 포인트로, 6,400개는 개인 사용 영역으로 예약되어 있다. 글리프를 할당할 수 있는 코드 포인트는 57,088개이다.

GNU 유니폰트는 유니코드 12.1.0에 정의된 대로 기본 다국어 평면을 완벽하게 지원한다. 부속 글꼴인 유니폰트 어퍼(Unifont Upper)와 유니폰트 CSUR은 각각 보충 다국어 평면과 ConScript 유니코드 레지스트리를 상당 부분 지원한다.[4]

버전 12.1.02에서는 JIS X 0213 문자 집합에 있는 10,000개의 일본어 한자를 지원하는 유니폰트 JP가 출시되었으며, 이 중 일부는 보충 표의 문자 평면에 있다.

글꼴의 CJK 표의 문자 대부분은 WenQuanYi의 Unibit 글꼴에서 복사되었다.[4]

4. 1. 유니코드 지원 범위

GNU 유니폰트는 유니코드 12.1.0에 정의된 대로 기본 다국어 평면(BMP)을 완벽하게 지원한다.[4] 유니폰트 어퍼(Unifont Upper)와 유니폰트 CSUR은 각각 보충 다국어 평면과 ConScript 유니코드 레지스트리를 상당 부분 지원한다.

버전 12.1.02에서는 JIS X 0213 문자 집합에 있는 10,000개의 일본어 한자를 지원하는 유니폰트 JP가 출시되었으며, 이 중 일부는 보충 표의 문자 평면에 있다.

글꼴의 대부분의 CJK 표의 문자는 WenQuanYi의 Unibit 글꼴에서 복사되었다.[4]

유니폰트는 인쇄 가능한 유니코드 코드 포인트당 하나의 글리프만 저장하기 때문에 복잡한 레이아웃을 가진 스크립트를 올바르게 렌더링하는 데 필요한 OpenType 기능을 제공하지 않으며, 결합형 분음 부호를 기본 문자와 올바르게 배치하지 않는다. 문맥적 형태도 제대로 처리되지 않는다. 따라서 유니폰트는 간단한 알파벳 스크립트에 적합하거나 개별 문자를 렌더링하는 "최후의 수단" 기본 글꼴로만 사용하도록 되어 있다. 아부기다를 올바르게 렌더링하거나, 한자 표의 문자가 보충 평면에 인코딩되거나 BMP에 인코딩되지 않은 대부분의 역사적 (또는 소수 민족 현대) 스크립트를 렌더링하려면 추가 글꼴이 필요하다.

4. 2. 한계

GNU 유니폰트는 인쇄 가능한 유니코드 코드 포인트당 하나의 글리프만 저장한다. 이 때문에 복잡한 레이아웃을 가진 스크립트를 올바르게 렌더링하는 데 필요한 OpenType 기능을 제공하지 않으며, 결합형 분음 부호를 기본 문자와 올바르게 배치하지 않는다 (이러한 조합이 미리 결합된 형태로 유니코드에 인코딩되지 않은 경우).[4] 문맥적 형태(연결 유형 및 하위 클러스터 포함)도 제대로 처리되지 않는다. 이는 기본 글꼴에 포함할 글리프 수를 증가시키며, 현재 OpenType 제한으로 인해 단일 유니코드 평면에 존재할 수 있는 모든 필요한 조합을 나타내기 위해 필요한 모든 글리프를 인코딩하는 것이 불가능하다 (이는 현재 두 개의 평면에 인코딩된 모든 표의 문자를 완전히 지원할 수 없는 중국어 글꼴과 세 번째 평면에도 해당된다).

따라서 유니폰트는 간단한 알파벳 스크립트에 적합하거나 개별 문자를 렌더링하는 "최후의 수단" 기본 글꼴로만 사용하도록 되어 있지만, 실제 텍스트를 올바르게 읽는 것을 어렵게 만들거나 때로는 불가능하게 만들 수 있다. 아부기다 (그리고 선택적인 결합형 분음 부호로 작성된 셈 어족의 압자드)를 올바르게 렌더링하려면 이 글꼴 전에 다른 글꼴을 지정해야 하며, 한자 표의 문자가 보충 평면에 인코딩되거나 BMP에 인코딩되지 않은 대부분의 역사적 (또는 소수 민족 현대) 스크립트를 렌더링하려면 추가 글꼴이 필요하다.

5. 배포

일본어중국어 샘플


GNU 유니폰트는 다양한 형식과 특수 버전으로 제공된다. "표준 빌드"는 트루타입(오픈타입) 형식, BDF, PCF, .hex, PSF 형식으로 제공되며, "특수 버전"은 FontForge 사용자나 APL 프로그래머 등을 위해 제작되었다.[4] 소스는 빌드 시 연결되어 다른 형식으로 변환되는 작은 .hex 파일들로 구성된다.[2]

5. 1. 제공 형식

유니폰트는 15.0.6 버전 기준으로 "표준 빌드"에 대해 트루타입(오픈타입) 형식, BDF, PCF, .hex, PSF 형식으로 제공된다. 트루타입 빌드는 두 개의 글꼴로 나뉜다.[4]

폴 하디(Paul Hardy)는 요청에 의해 제작된 몇 가지 "특수 버전"을 제공한다. 여기에는 FontForge 사용자가 읽을 수 있도록 코드 포인트 값으로 채워진 빈 글리프가 있는 비트맵 TTF(SBIT), APL 프로그래머를 위한 글리프가 있는 PSF 비트맵, 로만(Roman)의 .hex 형식 단일 파일 버전이 포함된다.[4]

5. 2. 특수 버전

폴 하디(Paul Hardy)는 요청에 의해 다음과 같은 몇 가지 "특수 버전"을 제공한다.[4]

  • FontForge 사용자를 위한 비트맵 TTF(SBIT). 빈 글리프가 코드 포인트 값으로 채워져 있다.
  • APL 프로그래머를 위한 PSF 비트맵.
  • 로만(Roman)의 .hex 형식 단일 파일 버전 (아래 참조).


소스의 실제 구성은 빌드 시 함께 연결되어 다른 형식으로 변환되는 더 작은 .hex 파일들로 구성된다.[2]

5. 3. 벡터화

루이스 알레한드로 곤살레스 미란다는 폰트포지를 사용하여 글리프 비트 맵 분포 형식의 유니폰트(unifont.bdf) 글꼴을 벡터화하고 TrueType 형식으로 변환하는 스크립트를 작성했다.[8][3] 폴 하디는 최신 트루타입 버전의 문자 조합(악센트 등)을 처리하기 위해 이 스크립트를 조정했다.[9][4]

참조

[1] 웹사이트 Minecraft 1.20 Pre-Release 6 https://www.minecraf[...] 2023-05-25
[2] 웹사이트 Unifoundry Unicode Utilities http://unifoundry.co[...] 2019-04-16
[3] 간행물 GNU Unifont in TrueType format http://www.lgm.cl/tr[...]
[4] 간행물 GNU Unifont Glyphs http://unifoundry.co[...] 2008-07-16
[5] 웹사이트 Roman Czyborra's GNU Unifont page http://czyborra.com/[...] 2009-06-03
[6] 문서 http://czyborra.com/
[7] 문서 Roman Czyborra's GNU Unifont page http://czyborra.com/[...]
[8] 간행물 GNU Unifont in TrueType format http://www.lgm.cl/tr[...]
[9] 간행물 GNU Unifont Glyphs http://unifoundry.co[...]



본 사이트는 AI가 위키백과와 뉴스 기사,정부 간행물,학술 논문등을 바탕으로 정보를 가공하여 제공하는 백과사전형 서비스입니다.
모든 문서는 AI에 의해 자동 생성되며, CC BY-SA 4.0 라이선스에 따라 이용할 수 있습니다.
하지만, 위키백과나 뉴스 기사 자체에 오류, 부정확한 정보, 또는 가짜 뉴스가 포함될 수 있으며, AI는 이러한 내용을 완벽하게 걸러내지 못할 수 있습니다.
따라서 제공되는 정보에 일부 오류나 편향이 있을 수 있으므로, 중요한 정보는 반드시 다른 출처를 통해 교차 검증하시기 바랍니다.

문의하기 : help@durumis.com