숫자 서식

타이포그래피

숫자 서식

Numeral Styles

숫자 서식은 폰트가 숫자를 그리는 방식, 특히 숫자의 폭과 세로 정렬을 정하는 OpenType 기능입니다.

비례 (기본)1,1118,84212,34590,067
고정폭 (tabular)1,1118,84212,34590,067
고정폭 숫자는 자릿수가 세로로 딱 맞습니다. 표·가격에 유리해요.

정의

숫자 서식은 폰트가 숫자를 그리는 방식을 골라 쓰는 기능입니다. 그중 가장 자주 쓰는 것이 숫자의 폭을 다루는 설정입니다. 고정폭(tabular) 숫자는 0부터 9까지 모든 숫자가 똑같은 너비를 차지하도록 만들어져, 숫자를 위아래로 쌓으면 자릿수가 세로로 딱 맞아떨어집니다. 반대로 비례(proportional) 숫자는 글자마다 어울리는 폭을 가져서, 예를 들어 1은 좁고 0은 넓게 그려집니다. 같은 폰트 안에 이 두 방식이 함께 들어 있어, 쓰는 곳에 맞춰 골라 쓸 수 있습니다. 어느 쪽이 더 좋은 것이 아니라 목적이 다른 두 도구인 셈입니다. 이 선택은 font-variant-numeric 속성으로 지정합니다.

왜 중요한가

표나 가격, 대시보드의 지표처럼 숫자를 세로로 나란히 늘어놓는 곳에서는 자릿수가 어긋나면 읽기가 무척 불편해집니다. 비례 숫자는 폭이 제각각이라 위아래 줄의 같은 자리 숫자가 서로 어긋나, 값의 크기를 한눈에 비교하기 어렵습니다. 고정폭 숫자를 쓰면 모든 자릿수가 수직으로 정확히 맞아떨어져, 어느 값이 크고 작은지 눈으로 훑기만 해도 바로 보입니다. 또 실시간으로 바뀌는 숫자에서도 고정폭을 쓰면 값이 갱신될 때 자릿수 폭이 달라 좌우로 흔들리는 현상을 막을 수 있습니다. 반대로 문장 속에 섞여 들어가는 숫자는 굳이 폭을 맞출 필요가 없어, 주변 글자와 자연스럽게 어울리는 비례 숫자가 더 보기 좋습니다. 이처럼 같은 숫자라도 어디에 놓이느냐에 따라 알맞은 서식이 달라집니다.

흔한 실수

  • 표나 가격표에 비례 숫자를 그대로 쓰는 경우입니다. 자릿수가 세로로 어긋나 값을 비교하기 어렵고, 목록이 지저분해 보입니다. 세로로 정렬돼야 하는 숫자에는 고정폭(tabular)을 지정하세요.
  • 반대로 문장 속 숫자에까지 고정폭을 강제하는 경우입니다. 좁아야 자연스러운 1 같은 숫자가 억지로 넓어져 글자 사이가 뜨게 되고, 문장의 흐름이 어색하게 끊겨 보입니다.
  • 숫자를 세로로 맞추려고 고정폭 대신 빈칸이나 여러 개의 공백을 손으로 끼워 넣는 경우입니다. 글꼴이나 화면 크기가 바뀌면 정렬이 곧바로 어긋나므로, 이런 자리에는 손수 맞추지 말고 고정폭 숫자에 맡기는 편이 훨씬 안정적입니다.

실무 팁

  • 표와 가격, 대시보드처럼 숫자가 세로로 정렬돼야 하는 곳에는 tabular-nums를, 문장 속에 섞이는 숫자에는 비례(proportional) 숫자를 쓰세요. 둘 다 font-variant-numeric으로 지정합니다.
  • 값이 실시간으로 바뀌는 카운터나 타이머에는 고정폭 숫자를 쓰세요. 자릿수 폭이 일정해야 숫자가 갱신될 때 좌우로 들썩이지 않고 제자리에 머물러, 훨씬 안정적으로 보입니다. 초를 세는 타이머에서 이 흔들림은 특히 눈에 잘 띕니다.
  • 숫자 서식을 정하기 전에 쓰려는 폰트가 그 기능을 지원하는지 먼저 확인하세요. 일부 폰트는 고정폭 숫자를 아예 담고 있지 않아, 지정해도 아무 변화가 없을 수 있습니다. 이럴 때는 숫자만 고정폭을 지원하는 다른 글꼴로 바꿔 쓰는 방법도 있습니다.

AI에게 시키기

표·가격·대시보드 숫자 열이 세로로 안 맞을 때

아래에 붙여넣을 코드에서 표·가격표·대시보드 지표처럼 숫자가 세로로 쌓이는 열을 전부 찾아, 그 숫자에 font-variant-numeric: tabular-nums를 적용해줘. 0부터 9까지 모든 자릿수가 똑같은 폭을 차지하게 만들어서 위아래 줄이 자릿수 단위로 딱 맞아떨어지게 하는 게 목적이야. 문장 속에 섞여 들어간 숫자에는 절대 적용하지 말고, 세로로 정렬돼야 하는 열에만 넣어줘. 어느 요소에 적용했고 왜 그 자리인지 표로 정리해줘.

실시간 카운터·타이머가 갱신될 때 좌우로 들썩일 때

[컴포넌트 성격 — 예: 결제 카운트다운 타이머]가 값이 바뀔 때마다 자릿수 폭이 달라져서 숫자가 좌우로 들썩여. 이 숫자에 font-variant-numeric: tabular-nums를 적용해서 자릿수 폭을 항상 일정하게 고정해줘. 그래야 값이 갱신돼도 숫자가 제자리에 머물고 흔들리지 않아. 초 단위로 바뀌는 타이머라면 이 흔들림이 특히 눈에 잘 띄니 꼭 잡아줘.

숫자마다 tabular/proportional 어디 쓸지 규칙 잡을 때

아래에 붙여넣을 코드의 숫자를 전부 훑어서 성격에 맞는 숫자 서식으로 정리해줘. 표·가격·대시보드·실시간 카운터처럼 세로 정렬이나 폭 고정이 필요한 숫자는 font-variant-numeric: tabular-nums, 문장 속에 자연스럽게 섞이는 숫자는 proportional-nums(1은 좁고 0은 넓게)로 지정하는 게 기준이야. 세로로 맞추려고 손으로 끼워 넣은 공백이나 빈칸이 있으면 전부 걷어내고 tabular-nums에 맡겨줘. 마지막으로 지금 쓰는 폰트가 tabular 숫자를 실제로 지원하는지 확인하고, 지원 안 하면 숫자만 다른 글꼴로 바꾸는 방법을 알려줘. 어느 숫자를 어느 서식으로 바꿨는지 매핑표로 정리해줘.

관련 개념