글담의 기본 계산 규칙
입력한 글의 줄바꿈은 먼저 LF로 통일합니다. Windows식 CRLF 두 문자는 LF 한 문자로 바꿉니다. 그다음 Unicode 코드 포인트 개수를 ‘공백 포함’ 글자수로 표시합니다. 공백 제외는 JavaScript의 공백 문자 판정(\s)에 해당하는 문자를 제거한 뒤 코드 포인트 수를 셉니다.
| 입력 | 코드 포인트 | UTF-8 바이트 | UTF-16 단위 |
|---|---|---|---|
| A | 1 | 1 | 1 |
| 가 | 1 | 3 | 1 |
| 😊 | 1 | 4 | 2 |
| 가 A | 3 | 5 | 3 |
| 가 (조합형) | 2 | 6 | 2 |
화면에 보이는 글자와 코드 포인트
‘가’처럼 보이더라도 완성형 한 문자일 수도, 초성 ‘ᄀ’과 중성 ‘ᅡ’ 두 문자의 조합일 수도 있습니다. 글담은 원문을 다른 형태로 바꾸는 정규화를 적용하지 않습니다. 따라서 조합형 한글은 화면상 한 글자여도 기본 글자수에서 두 자가 될 수 있습니다.
가족 이모지 👨👩👧👦 역시 여러 코드 포인트와 연결 문자로 구성됩니다. 화면에서 하나로 보이는 단위를 세는 방법은 ‘자소 군집(grapheme cluster)’ 계산입니다. 제출처가 UTF-16 길이, 코드 포인트 수, 자소 군집 수 중 무엇을 쓰는지에 따라 숫자가 달라질 수 있습니다.
바이트는 인코딩에 따라 달라요
글담의 바이트 계산은 브라우저의 TextEncoder로 계산한 UTF-8 기준입니다. EUC-KR 또는 ‘한글 2바이트’ 같은 자체 규칙을 사용하는 시스템과는 일치하지 않을 수 있습니다. 바이트 제한이 있는 입력란에서는 해당 서비스가 안내하는 기준을 먼저 확인하세요.
어절 수와 줄 수
어절은 앞뒤 공백을 제외한 뒤, 하나 이상의 공백 문자로 분리한 덩어리 수입니다. 띄어쓰기 없는 한글 문장은 하나의 어절로 표시합니다. 줄 수는 줄바꿈으로 나눈 실제 줄의 수이며 화면 폭 때문에 자동으로 접힌 줄은 포함하지 않습니다. 아무 글도 없으면 0줄, ‘안녕’ 뒤에 줄바꿈이 있으면 2줄입니다.
확인해 볼 자료
세부 동작은 MDN의 TextEncoder 설명과 Unicode의 텍스트 분할 규칙에서 확인할 수 있습니다. 글담의 계산 결과는 제출처의 최종 검증을 대신하지 않습니다.