ASCII 아트는 컴퓨팅 초창기부터 이어온 개발자 문화의 정수입니다. 터미널 시작 배너부터 README 헤더, IRC 채널 인사말까지 다양한 곳에 활용되어 왔습니다. 이 가이드에서는 텍스트-ASCII 아트 변환의 원리, 상황에 맞는 FIGlet 폰트 선택법, 그리고 온라인 도구를 사용한 즉시 생성 방법을 설명합니다.

ASCII 아트 텍스트란?

ASCII 아트 텍스트는 표준 인쇄 가능 문자를 사용하여 대형 글자 모양을 표현합니다. 픽셀 아트와 달리 ASCII 아트는 순수하게 문자로만 구성됩니다. 고정폭 폰트를 사용하는 어떤 환경에서든 올바르게 렌더링됩니다: 터미널, 마크다운 파일, 소스 코드 주석, 일반 텍스트 이메일 등.

 _   _      _ _       
| | | | ___| | | ___  
| |_| |/ _ \ | |/ _ \ 
|  _  |  __/ | | (_) |
|_| |_|\___|_|_|\___/ 

FIGlet 폰트의 작동 원리

FIGlet(Frank, Ian, and Glenn’s Letters)은 ASCII 아트 텍스트를 생성하는 표준 라이브러리입니다. FIGlet 폰트는 각 문자를 여러 줄의 ASCII 표현으로 매핑하는 일반 텍스트 파일(.flf)입니다. 엔진은 입력 문자열을 읽고 각 문자의 자형을 검색하여 행별로 조립합니다.

출력에 영향을 미치는 주요 매개변수:

  • 폰트 — 자형 스타일 정의 (블록, 스크립트, 그림자, 3D 등)
  • 너비 — 줄 바꿈 전 최대 문자 수
  • 레이아웃 — 문자 간 간격 (full, fitted, 또는 smushed)
  • 방향 — 왼쪽에서 오른쪽 또는 오른쪽에서 왼쪽

인기 FIGlet 폰트

폰트스타일최적 용도
standard깔끔하고 가독성 좋음범용, README 헤더
banner전체 대문자, 굵음짧은 배너와 공지
slant이탤릭 기울기코드 섹션 구분선
shadow이중 그림자터미널 인사말
big크고 단순함빠른 시각적 강조
block두꺼운 3D프로젝트 로고
script필기체 스타일창의적인 헤딩
doom스페이스 인베이더 스타일게임 프로젝트, 레트로 감성
speed둥근 현대적모던 CLI 도구
3d3차원감깊이감 있는 로고

주요 사용 사례

README 헤더

GitHub와 GitLab은 코드 블록 안의 ASCII 아트를 올바르게 렌더링합니다:

```
  ____                 _____           _ 
 / __ \___  ___ ____  |_   _|__   ___ | |
/ / _` / _ \/ _ `|/ _` || |/ _ \ / _ \| |
\ \__,_\___/\_,_/_/|_/ |_|\___/\___/|_|
 \____/                                  
```

대부분의 터미널 너비와 GitHub 미리보기 창과의 호환성을 위해 너비를 80자 이내로 유지하세요.

터미널 시작 배너

많은 개발자가 ~/.zshrc~/.bashrc에 ASCII 아트를 추가합니다:

# ~/.zshrc
cat << 'EOF'
  ____              _       ___  __ ___ 
 |  _ \ _____   __/ \     / _ \/ _/ __|
 | | | / _ \ \ / / _ \   | | | | |___ \
 | |_| |  __/\ V / ___ \  | |_| | |___) |
 |____/ \___| \_/_/   \_\  \___/|_|____/
EOF

코드 섹션 구분선

긴 소스 파일에서 논리적 섹션을 구분하기 위해 ASCII 구분선을 사용하기도 합니다:

# ============================================================
# ██████╗  █████╗ ████████╗ █████╗ ██████╗  █████╗ ███████╗███████╗
# ============================================================

프로그래밍으로 ASCII 아트 생성하기

Node.js (figlet 패키지)

npm install figlet
import figlet from 'figlet';

figlet.text('Hello World', { font: 'Standard' }, (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Promise 기반
const result = figlet.textSync('ZeroTool', { font: 'Slant' });
console.log(result);

Python (pyfiglet 패키지)

pip install pyfiglet
import pyfiglet

# 기본 폰트
result = pyfiglet.figlet_format("Hello World")
print(result)

# 특정 폰트 지정
result = pyfiglet.figlet_format("ZeroTool", font="slant")
print(result)

# 사용 가능한 폰트 수 확인
fonts = pyfiglet.FigletFont.getFonts()
print(f"{len(fonts)}개 폰트 사용 가능")

Go (go-figure 패키지)

go get github.com/common-nighthawk/go-figure
import figure "github.com/common-nighthawk/go-figure"

func main() {
    myFigure := figure.NewFigure("Hello World", "standard", true)
    myFigure.Print()

    // 컬러 출력
    colorFigure := figure.NewColorFigure("ZeroTool", "slant", "green", true)
    colorFigure.Print()
}

너비와 줄 바꿈 고려 사항

ASCII 아트는 컨테이너가 너무 좁으면 깨집니다. 경험 규칙:

  • 80열: 대부분의 터미널에서 안전, 클래식 기본값
  • 120열: 대부분의 IDE 터미널과 현대 디스플레이에서 안전
  • 로고에서 줄 바꿈 완전 방지 — 생성 전에 대상 너비를 먼저 확인

문자 너비가 짧은 폰트(speed, small)는 같은 열 수에서 더 많은 텍스트를 담을 수 있습니다. 복사 전에 생성기의 너비 미리보기로 확인하세요.

깔끔한 출력을 위한 팁

  1. 좁은 폰트에서는 대문자 사용 — 많은 FIGlet 폰트가 대문자용으로 설계되어 있어 소문자 자형이 불균형해 보일 수 있음
  2. 고정폭 폰트 환경에서 테스트 — 가변폭 폰트는 행을 잘못 정렬함
  3. 원클릭 복사 — 온라인 도구는 정확한 간격을 유지한 원시 여러 줄 문자열을 복사
  4. 다른 대상을 위한 이스케이프 — JSON 문자열에서 줄 바꿈은 \n이어야 하며, YAML에서는 리터럴 줄 바꿈을 보존하기 위해 블록 스칼라(|) 사용

온라인 ASCII 아트 생성기 사용법

ZeroTool 텍스트를 ASCII 아트로 변환 →

어떤 텍스트든 붙여넣고, 200가지 이상의 FIGlet 폰트 중에서 실시간 미리보기로 선택하고, 원클릭으로 복사하세요. 설치 불필요, API 키 불필요, 속도 제한 없음 — 모두 브라우저에서 실행됩니다.

기능:

  • 입력하거나 폰트 변경 시 실시간 미리보기
  • 200가지 이상의 FIGlet 폰트를 스타일별로 분류
  • 클립보드에 원클릭 복사
  • 대상 컨테이너에 맞는 너비 제어
  • 첫 번째 로드 후 오프라인에서도 사용 가능

텍스트에서 즉시 ASCII 아트 생성 →