REFERENCE‎ > ‎

한글 기준 너비

"한글 2바이트, 영문 1바이트" 혹은 "2칸, 1칸" 류의 표현을 자주 듣는다.
전형적인 EUC-KR의 잔재이고, character set과 encoding을 구분하지 못하기 때문에 발생하는 일이다.

유니코드 character set을 UTF-8 인코딩으로 표현하는 게 대중화된지도 이미 꽤 된 지금까지도 저렇게 표현하는 건 불성실의 표상이라고 밖에 할 수 없다.

유니코드 문자 한 글자가 실제로 몇 바이트로 표현될지는 표현 시점의 인코딩에 따라 달라지므로 알 수 없고 따라서 바이트 단위로 계산할 수 없다. 그리고 한 글자가 시각적으로 표시되는 것도 폰트의 영향을 받게 되므로 표시 시점에서 얼마나 공간을 차지할지도 확정적으로 판단할 수 없다.

표시 시점에 CSS를 사용할 수 있다면 폰트 기준으로 고정 너비를 나타내는 em, ex 등의 단위를 사용할 수 있다.
http://php.net/manual/en/function.mb-strwidth.php 함수를 사용하면 미리 대응된 상수에 따라 글자의 너비를 계산할 수 있으나 완전히 일치한다고 할 수는 없다.

Comments