Unscii - 블록형 그래픽을 위한 비트맵 유니코드 폰트
(viznut.fi)- Unscii는 고전 시스템 폰트를 기반으로 한 비트맵 유니코드 폰트 세트로, 문자 셀 아트와 터미널·프로그래밍 환경 모두에 적합한 형태
- 주요 버전은 unscii-8(8×8 픽셀) 과 unscii-16(8×16 픽셀) 이며, 여러 대체 스타일과 누락된 글리프를 보완한 ‘full’ 변형 포함
- Unicode 13.0의 ‘레거시 컴퓨팅’ 문자 추가를 반영해 Unscii 2.0이 출시되었으며, 기존 오류 수정과 가독성 개선, 신규 문자 추가가 이루어짐
- Amiga, Commodore 64, IBM PC 등 고전 시스템 폰트의 시각적 특징을 연구해 중립적이고 일관된 형태를 구현
- 레거시 문자 예술과 현대 유니코드 환경을 연결하는 도구로, 아스키 아트 및 터미널 그래픽 재현에 중요한 역할
Unscii 개요
- Unscii는 클래식 시스템 폰트를 기반으로 한 비트맵 유니코드 폰트 세트
- 문자 셀 아트(character cell art)에 적합하며, 터미널 및 프로그래밍 환경에서도 사용 가능
- 두 가지 주요 변형: unscii-8 (8×8 픽셀) , unscii-16 (8×16 픽셀)
- unscii-8에는 여러 대체 스타일 존재
- unscii-16-full은 Fixedsys Excelsior와 GNU Unifont의 누락된 글리프를 포함
- unscii-16-full은 GPL, 나머지 변형은 퍼블릭 도메인
- 제작자는 Viznut
Unscii 2.0
-
Unicode 13.0(2020-03-10) 에서 ‘레거시 컴퓨팅’용 그래픽 문자 214개 추가
- PETSCII, Teletext/Videotex 등 누락된 문자가 포함
- Unscii 1.x에 이미 포함되어 있던 문자들이 정식 유니코드 매핑을 획득
- Unscii 2.0은 이 매핑 반영이 주요 업데이트 사유
- 추가로 일부 문자의 오류 수정, 가독성 개선, 신규 문자 추가 수행
- 유니코드에서 현재 사용 가능한 문자들의 테스트 이미지 제공
예시 (EXAMPLES)
- Amiga ANSI 아트: Hellbeard의 Divine Stylers, unscii-16으로 렌더링
- PC ANSI 아트: Rad Man의 Ansi Love, unscii-16으로 렌더링
- Commodore 64 PETSCII 그림: Redcrab의 I Has Floppy, Dr.TerrorZ의 The First Ball, Mermaid의 Gary
- 소스 코드 패키지에는 비트맵→Unscii 변환기 포함
- 256색 xterm 팔레트를 사용한 unscii-8 변환 예시 제공
다운로드 (DOWNLOADS)
- 실제 비트맵 형식은 HEX와 PCF 두 가지
- HEX는 Unifont 프로젝트와 동일한 단순 헥스덤프 형식
- TTF, OTF, WOFF는 벡터화된 버전
-
PCF 버전은 U+FFFF 이상의 문자 미포함
- 그러나 새 그래픽 문자는 PUA(Private Use Area) 범위에 제공
- 매핑 정보는
<uns2uni.tr>파일에 포함
배경 (BACKSTORY)
- Unicode에는 의사그래픽(pseudographic) 문자가 존재하지만, ANSI 아트에서 거의 사용되지 않음
- MUD 등에서도 MS-DOS 코드페이지 437의 블록 문자만 사용
- 기존 유니코드 폰트의 비-CP437 그래픽 문자 구현이 불완전했기 때문
- Unicode Consortium은 의사그래픽 구현에 관심이 적었음
- “폰트가 없으면 아트도 없고, 아트가 없으면 폰트도 없다”는 악순환 존재
- 이를 해결하기 위해 아트 호환 유니코드 폰트로서 Unscii 개발
디자인 기반
- 8×8 시스템 폰트는 선 두께에 따라 1픽셀형과 2픽셀형으로 구분
- Unscii는 2픽셀형을 채택, 고전 시스템 간 유사성이 높아 중립적 형태 구현 용이
- 8×8 버전의 시각적 기반 시스템:
- Amiga (Topaz-8), Amstrad CPC, Atari 8-bit/Arcade/32-bit, BBC Micro, Commodore 64, IBM PC (CGA/VGA 80×50)
- 8×16 버전은 8×8을 변환 원칙에 따라 확장
- 참고 폰트: Windows Fixedsys, IBM PC VGA, X Window 8x13/9x15, Macintosh Monaco, Digital VT420, DejaVu Sans Mono, Lucida Console, Inconsolata
-
중립적 형태를 우선하되, 아트 연결성이나 가독성이 필요한 경우 조정
- 예:
/\XY는 아스키 아트 연결성 유지,iIl의 세리프는 길게 조정
- 예:
- 정의되지 않은 8×16 글리프는 8×8의 높이 2배 버전으로 대체
추가 변형 및 문자 매핑
- 게임 폰트와 얇은 선 폰트를 연구해 unscii-8-thin, unscii-8-mcr, unscii-8-fantasy 제작
- 유니코드에 없는 수백 개의 문자를 PUA 영역에 매핑
- U+E080..E0FF: Teletext/Videotex 블록 모자이크
- U+E100.. : PETSCII, Videotex 부드러운 모자이크, 추가 음영, 둥근 모서리 등
- U+E800.. : 비정형적이지만 유용한 교차선, 대각선, 비직선 패턴 등
- U+EC00.. : 게임 지향 비트맵 등 특이 문자
- Unicode 13.0 이후 일부 문자는 정식 유니코드에 포함되었으나, 호환성을 위해 PUA 매핑 유지
Hacker News 의견들
-
약간 주제에서 벗어나지만 관련된 내용임
예전에 HTML + Canvas로 인베이더류 게임을 만들 때 IBM PC OEM 폰트를 찾다가 VileR의 The Ultimate Oldschool PC Font Pack을 발견했음
수많은 ROM에서 OEM 폰트와 그 변형들을 복원한 정성이 놀라울 정도임
사이트는 세밀한 아카이브뿐 아니라 라이브 미리보기와 종횡비 보정 같은 기능도 제공해서 탐색하는 재미가 큼
나는 거기서 여러 OEM 폰트를 비교하며 내 프로젝트에 쓸 최적의 폰트를 찾느라 몇 시간을 보냈음- 이 팩의 Px437 Verite 9x6 폰트를 메인 터미널 폰트로 수년째 쓰고 있음
ANSI 아트 같은 레트로 용도에도 좋고, 현대적인 환경에서도 완벽히 어울림
- 이 팩의 Px437 Verite 9x6 폰트를 메인 터미널 폰트로 수년째 쓰고 있음
-
Viznut이 만든 오디오/비주얼 라이브 코딩 툴 IBNIZ를 공연에서 사용한 적이 있음
정말 불타는 경험이었음
IBNIZ 링크- Viznut은 정말 많은 놀라운 프로젝트를 만들어왔음
그의 작품 목록은 Pouet 프로필에서 볼 수 있음 - 이 데모를 너무 좋아함
그 괴짜스러움과 천재성이 부럽고, 나도 그걸 보면서 조금은 전염되었기를 바람
- Viznut은 정말 많은 놀라운 프로젝트를 만들어왔음
-
내 로컬 Nerd Font가 일부 그래픽 글리프를 지원하지 않음
이런 부분이 추가되면 좋겠음- 나는 Iosevka Nerd Font를 사용하는 st 터미널에서 정확한 출력을 얻었음
lsof로 확인해보니 여러 폰트가 fallback으로 사용되고 있었음
DejaVuSans, DroidSansFallback, Segoe UI Symbol 등 다양한 폰트가 섞여 결과적으로 완벽한 렌더링이 나왔음 - 관련 이슈는 GitHub #1959에 있음
- Nerd Font는 비표준이라 별로라고 생각함
- 나는 Iosevka Nerd Font를 사용하는 st 터미널에서 정확한 출력을 얻었음
-
지금 MUD를 만들고 있는데, 이 폰트들이 내가 원하던 바로 그 스타일임
완벽한 타이밍의 공유에 감사함 -
터미널에 Sixel 지원이 드디어 들어오면서
Sixel 위키에서 보듯 40년 만에 한 바퀴를 돈 느낌임- 하지만 Sixel은 이미 1988년에 터미널에 도입되었음
9600bps 시리얼 링크로 비압축 컬러 래스터 데이터를 전송하는 건 끔찍한 아이디어였음
지금은 기가비트 환경이라 사용자 시간은 덜 낭비되지만 여전히 CPU와 복잡성 낭비임
차라리 웹 브라우저에 FTP나 Gopher 지원이 있었으면 좋겠음
- 하지만 Sixel은 이미 1988년에 터미널에 도입되었음
-
Constantine Bytensky의 cnxt 폰트도 비슷한 계열임
unscii를 좋아한다면 cnxt도 마음에 들 것임
CNXT는 “Constantine’s Nine x Twenty”의 약자임 -
사이트가 지금은 안 열리지만, 나는 어떤 모노스페이스 폰트에서도 작동하는 사이드 프로젝트를 만들었음
바이너리를 유니코드로 변환하고 다시 되돌리며, 제어 문자를 관련 심볼로 치환함
printable-binary 프로젝트
UTF-8 문자 하나(1~3바이트)가 입력 데이터 1바이트에 대응하며, 평균 70% 정도 크기가 증가하지만
UTF-8을 이해하는 어떤 매체에서도 바이너리 독립성을 얻을 수 있음- 멋진 아이디어임
하지만 실제 서비스에서는 base64가 크기를 33%만 늘리므로 더 효율적일 수 있음
- 멋진 아이디어임
-
이런 폰트들이 정말 멋짐
나는 그 ASCII 아트 감성이 그리워서 내 블로깅 플랫폼 lmno.lol에 배너 형태로 추가했음 -
Unscii는 훌륭함
예전에 모바일에서도 쓸 수 있는 간단한 Unscii 아트 에디터를 만들었음
unicode-drawing-club.netlify.app -
파비콘이 The Grate Book of Moo의 로고와 거의 동일하거나 매우 비슷해 보임
Hacker News에서는 너무 마이너한 레퍼런스일 수도 있겠지만, 알아보는 사람은 있을 것 같음