텍스트 자릿수 맞추기, 어떻게 계산되나

여러 줄로 된 목록을 모두 같은 글자수로 가지런히 맞추고 싶은데, 공백을 아무리 넣어도 줄 끝이 어긋나는 분들을 위한 글입니다. 결론부터 말하면 텍스트 패딩(자릿수 맞추기)은 "각 행의 글자수를 세고, 목표 너비에서 모자란 만큼을 지정한 문자로 채우는" 단순한 계산입니다. 어디에 채우는지(왼쪽·오른쪽·양쪽)와 무엇을 한 글자로 세는지만 알면 결과가 왜 그렇게 나오는지 정확히 읽을 수 있습니다.

요약 ① 방향은 모자란 칸을 어디에 붙일지만 정합니다. 왼쪽=앞, 오른쪽=뒤, 양쪽=반씩이며 나누어 떨어지지 않으면 왼쪽은 내림(Math.floor)이라 남는 한 칸이 오른쪽으로 갑니다. ② 글자수는 코드포인트 단위(Array.from)로 세어 한글과 대부분의 이모지가 1글자로 잡히고, 화면상 폭(전각·반각)이 아니라 글자 개수로 맞춥니다. ③ 이미 목표 너비보다 긴 행은 기본적으로 그대로 두고, '너비 초과 라인 잘라내기'를 켜야만 앞에서부터 잘립니다.

줄마다 길이가 달라 끝이 안 맞는 상황

등폭(monospace) 글꼴 문서에서 목록을 만들 때 이 문제가 자주 생깁니다. 예를 들어 "사과 / 바나나 / 키위"처럼 이름 길이가 제각각이면, 뒤에 가격이나 설명을 붙였을 때 시작 위치가 줄마다 어긋납니다.

눈으로 보기에 표처럼 반듯하게 정렬하려면 각 행이 모두 같은 글자수가 되도록 짧은 행 뒤(또는 앞)에 공백이나 기호를 채워 길이를 맞춰야 합니다. 이것이 바로 텍스트 패딩입니다.

문제는 이 "채우는 규칙"이 눈에 잘 안 보인다는 점입니다. 공백으로 채우면 결과가 그대로처럼 보이고, 한글과 영어가 섞이면 글자수를 맞췄는데도 끝이 안 맞는 것처럼 느껴집니다. 그래서 계산이 실제로 어떻게 이뤄지는지 알아둘 필요가 있습니다.

도구 없이 직접 맞추는 방법

원리는 손으로도 그대로 할 수 있습니다. 순서는 세 단계입니다.

  1. 각 행의 글자수를 센다. 여기서 세는 단위는 '글자 개수'입니다. 한글 한 글자, 영문 한 글자, 대부분의 이모지 하나가 각각 1로 셉니다. 바이트 수가 아니라는 점이 중요합니다.
  2. 부족분을 계산한다. 목표 너비에서 그 행의 글자수를 뺍니다. 예를 들어 목표 너비가 5인데 "사과"는 2글자이므로 부족분은 3입니다.
  3. 방향에 맞춰 채운다. 오른쪽 정렬이면 뒤에, 왼쪽 정렬이면 앞에 부족분만큼 채웁니다. 양쪽이면 부족분을 반으로 나눠 왼쪽은 내림으로 넣고 남는 칸은 오른쪽으로 보냅니다.

"사과 / 바나나 / 키위"를 목표 너비 5, 오른쪽 방향, 채움 문자를 점(.)으로 두고 손으로 계산하면 이렇게 나옵니다.

사과...
바나나..
키위...

스프레드시트로도 같은 계산을 할 수 있습니다. 오른쪽 채우기는 =A1 & REPT(".", 5-LEN(A1)) 형태입니다. 여기서 LEN은 글자 개수를 세고 LENB는 바이트 수를 세므로, 자릿수를 맞출 때는 LEN을 쓴다는 점이 위 도구의 계산 기준과 같습니다.

다만 행이 많아지면 한 줄씩 세어 채우는 일이 번거롭고, 양쪽 정렬처럼 부족분을 반으로 나누는 계산에서 실수가 나기 쉽습니다. 아래 도구는 입력을 넣으면 줄 단위로 나눠 같은 규칙을 실시간으로 적용해 보여줍니다.

저희 도구로 확인하기.

텍스트 패딩 생성기

설치·회원가입 없이 여러 줄 텍스트를 지정한 글자수로 실시간 정렬하고 바로 복사합니다.

자주 헷갈리는 지점

방향에 따라 어디에 채워지는지, 양쪽일 때 남는 칸이 어디로 가는지를 한 표로 보면 명확합니다. 아래는 "가"(1글자)를 목표 너비 4, 채움 문자 대시(-)로 맞춘 결과입니다.

방향채우는 위치부족분 처리결과
왼쪽앞에 3칸---가
오른쪽뒤에 3칸가---
양쪽앞뒤 반씩왼쪽 1칸(내림), 오른쪽 2칸-가--

양쪽 정렬에서 부족분이 3처럼 홀수면 정확히 반으로 나뉘지 않습니다. 이때 왼쪽은 내림으로 1칸, 나머지 2칸이 오른쪽으로 갑니다. 그래서 좌우가 완벽히 대칭이 아니라 오른쪽이 한 칸 더 많아 보일 수 있는데, 이는 오류가 아니라 정해진 계산 규칙입니다.

가장 흔한 착각은 두 가지입니다. 첫째, 채움 문자를 공백으로 두면 결과가 화면에 그대로처럼 보여 "안 됐다"고 오해하기 쉽습니다. 실제로는 공백이 채워져 있으므로, 계산이 되고 있는지 확인하려면 점(.)이나 대시(-) 같은 보이는 문자로 바꿔 보면 됩니다.

둘째, 글자수와 바이트 수를 혼동하는 경우입니다. "사과"는 2글자이지만 UTF-8 기준 6바이트입니다. 이 도구는 바이트가 아니라 글자 개수로 맞추므로, 바이트 기준 정렬을 기대하면 결과가 예상과 달라 보입니다.

정리

  • 방향은 부족한 칸을 어디에 붙일지만 정합니다. 왼쪽은 앞, 오른쪽은 뒤, 양쪽은 반씩입니다.
  • 양쪽에서 부족분이 홀수면 왼쪽은 내림(Math.floor), 남는 한 칸은 오른쪽으로 갑니다.
  • 글자수는 코드포인트 단위로 세어 한글과 대부분의 이모지가 1글자이며, 화면 폭이 아니라 글자 개수로 맞춥니다.
  • 이미 목표 너비보다 긴 행은 기본적으로 그대로 두고, '잘라내기'를 켜야 앞에서부터 목표 너비만큼만 남깁니다.
  • 결과가 그대로처럼 보이면 채움 문자를 점이나 대시로 바꿔 확인하고, 글자수와 바이트 수를 혼동하지 않습니다.
텍스트 패딩 생성기

설치·회원가입 없이 여러 줄 텍스트를 지정한 글자수로 실시간 정렬하고 바로 복사합니다.

자주 묻는 질문

공백으로 채웠는데 결과가 그대로인 것 같아요

공백은 눈에 보이지 않아서 채워져도 화면상 변화가 잘 느껴지지 않습니다. 결과를 복사해 붙여 보면 각 행이 같은 글자수로 채워져 있는 것을 확인할 수 있습니다. 계산이 되는지 눈으로 보고 싶다면 채움 문자를 점(.)이나 대시(-)로 바꾸면 채워진 칸이 그대로 드러납니다.

한글과 영어가 섞이면 끝이 안 맞아 보여요

글자수는 맞았는데 화면에서 어긋나 보이는 이유는, 이 도구가 화면상 폭이 아니라 글자 개수로 맞추기 때문입니다. 한글은 코드포인트로 1글자로 세지만, 많은 글꼴에서 한글 한 글자가 영문·공백보다 넓게 그려집니다. 그래서 글자 개수는 같아도 등폭 글꼴에서 오른쪽 끝이 조금 어긋나 보일 수 있습니다. 이는 계산이 틀린 것이 아니라 세는 기준(글자 개수)과 보이는 폭이 다르기 때문입니다.

이미 목표 너비보다 긴 줄은 어떻게 되나요

기본값에서는 그대로 둡니다. 목표 너비보다 글자수가 이미 크거나 같으면 채울 것이 없으므로 원래 행이 유지됩니다. '너비 초과 라인 잘라내기'를 켜면 그 행을 앞에서부터 목표 너비만큼만 남기고 잘라냅니다.

이모지도 1글자로 세나요

대부분의 이모지는 코드포인트 하나여서 1글자로 셉니다. 다만 여러 코드포인트가 합쳐진 이모지(가족 이모지, 국기, 피부색이 결합된 이모지 등)는 여러 글자로 계산될 수 있습니다. 이 경우 화면에는 하나로 보여도 글자수는 2 이상으로 잡혀 채워지는 칸 수가 달라집니다.

가격 보기카톡 무료 상담