1P by GN⁺ 13시간전 | ★ favorite | 댓글 1개
  • 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)

  • 실제 비트맵 형식은 HEXPCF 두 가지
    • 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 아트 같은 레트로 용도에도 좋고, 현대적인 환경에서도 완벽히 어울림
  • Viznut이 만든 오디오/비주얼 라이브 코딩 툴 IBNIZ를 공연에서 사용한 적이 있음
    정말 불타는 경험이었음
    IBNIZ 링크

    • Viznut은 정말 많은 놀라운 프로젝트를 만들어왔음
      그의 작품 목록은 Pouet 프로필에서 볼 수 있음
    • 이 데모를 너무 좋아함
      괴짜스러움과 천재성이 부럽고, 나도 그걸 보면서 조금은 전염되었기를 바람
  • 내 로컬 Nerd Font가 일부 그래픽 글리프를 지원하지 않음
    이런 부분이 추가되면 좋겠음

    • 나는 Iosevka Nerd Font를 사용하는 st 터미널에서 정확한 출력을 얻었음
      lsof로 확인해보니 여러 폰트가 fallback으로 사용되고 있었음
      DejaVuSans, DroidSansFallback, Segoe UI Symbol 등 다양한 폰트가 섞여 결과적으로 완벽한 렌더링이 나왔음
    • 관련 이슈는 GitHub #1959에 있음
    • Nerd Font는 비표준이라 별로라고 생각함
  • 지금 MUD를 만들고 있는데, 이 폰트들이 내가 원하던 바로 그 스타일임
    완벽한 타이밍의 공유에 감사함

  • 터미널에 Sixel 지원이 드디어 들어오면서
    Sixel 위키에서 보듯 40년 만에 한 바퀴를 돈 느낌임

    • 하지만 Sixel은 이미 1988년에 터미널에 도입되었음
      9600bps 시리얼 링크로 비압축 컬러 래스터 데이터를 전송하는 건 끔찍한 아이디어였음
      지금은 기가비트 환경이라 사용자 시간은 덜 낭비되지만 여전히 CPU와 복잡성 낭비
      차라리 웹 브라우저에 FTP나 Gopher 지원이 있었으면 좋겠음
  • 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에서는 너무 마이너한 레퍼런스일 수도 있겠지만, 알아보는 사람은 있을 것 같음