문자 표시 폭 계산기
터미널에서 문자열이 몇 칸을 차지하는지 셉니다. 로케일에 따라 갈리는 모호 문자를 두 값으로 내고, 코드포인트·자소·바이트가 왜 다 다른지도 보여 줍니다.
표시 폭
16칸
자소 13개 · 코드포인트 13개 · UTF-8 19바이트
East Asian Width (UAX #11)입니다.
|도구스 dogus 855 | |가나다 | |abcdef |
고정폭 글꼴로 보아야 제대로 보입니다.
코드포인트 단위입니다.
사용 방법
- 1문자열을 넣으면 표시 폭이 나옵니다.
- 2모호 문자가 섞이면 두 값이 함께 나옵니다.
- 3맞출 칸 수를 넣어 표가 어떻게 정렬되는지 봅니다.
- 4한 글자씩 뜯어 어느 문자가 몇 칸인지 확인합니다.
자주 묻는 질문
유니코드가 East Asian Width(UAX #11)에서 한글·한자·가나를 Wide로 정해 두었기 때문입니다. 고정폭 글꼴에서 라틴 문자의 두 배 폭으로 그려집니다.
모호(Ambiguous) 범주 때문입니다. 그리스·키릴 문자와 ± ※ ○ → 같은 기호는 동아시아 글꼴에서 2칸, 그 밖에서 1칸으로 그려집니다. 표준도 "문맥에 따른다"고만 적어 두어 하나로 정할 수 없습니다.
대개 모호 문자입니다. 코드에서 1칸으로 세었는데 터미널이 2칸으로 그리면 그만큼 밀립니다. 이모지도 터미널마다 1칸으로 그리는 곳이 있어 어긋납니다.
2칸입니다. 다만 가족 이모지처럼 여러 이모지를 ZWJ로 이은 것은 코드포인트마다 더하면 8칸이 나오는데, 화면에는 글리프 하나로 2칸만 차지합니다. 그래서 폭은 코드포인트가 아니라 자소 단위로 세야 합니다.
세는 대상이 다르기 때문입니다. 가족 이모지 하나가 자소 1개, 코드포인트 7개, JS .length 11, UTF-8 25바이트, 표시 폭 2칸입니다. SMS 바이트를 셀 때와 터미널 칸을 맞출 때가 서로 다른 숫자입니다.
폭이 0입니다. 악센트나 변형 선택자처럼 앞 글자에 얹히는 문자는 자리를 차지하지 않습니다. ZWJ도 마찬가지입니다.
알아두면 좋은 점
- 범주 판정은 유니코드 UAX #11의 주요 구간을 옮긴 것으로 전수가 아닙니다.
- 실제 터미널은 글꼴과 렌더러에 따라 다르게 그릴 수 있습니다.
- 이모지를 1칸으로 그리는 터미널도 있습니다.
- 자소 나누기는 브라우저의 Intl.Segmenter를 씁니다. 지원하지 않는 환경에서는 코드포인트 단위로 떨어집니다.
함께 보면 좋은 도구
마지막 검증: 2026년 8월 31일 · 결과는 참고용 추정치입니다.