문서 편집기에서 Hello를 입력하고 필기체 글꼴을 적용한 뒤 일반 텍스트 칸에 붙여 넣으면, 글자는 남지만 글꼴은 대개 사라집니다. 이번에는 ℋℯ𝓁𝓁ℴ를 복사해 보세요. 모양이 그대로 남는 경우가 많습니다.
두 번째 예가 글꼴 정보를 함께 보내는 것은 아닙니다. 서로 다른 유니코드 문자를 담고 있기 때문입니다.
문자와 글리프는 다르다
유니코드는 추상적인 문자에 번호를 부여합니다. 글꼴과 렌더링 시스템은 그 문자를 화면의 글리프로 그립니다. A를 세리프체, 둥근 글씨, 붓글씨로 그려도 문자는 여전히 U+0041입니다.
CSS에서 Arial을 Georgia로 바꾸면 글리프 디자인만 달라집니다. 꾸민 문자 생성기는 다른 길을 택해 A를 𝐀(MATHEMATICAL BOLD CAPITAL A)나 𝔄(MATHEMATICAL FRAKTUR CAPITAL A) 같은 문자로 대체합니다.
그래서 결과가 일반 텍스트 클립보드를 통해 이동할 수 있습니다. 모든 결과를 ‘글꼴’이라고 부르는 것은 편리하지만 기술적으로 정확하지는 않습니다.
유니코드에 모양이 다른 알파벳이 있는 이유
가장 큰 출처는 Mathematical Alphanumeric Symbols 블록입니다. 수학에서는 스타일이 의미를 가질 수 있습니다. 굵은 글자, 필기체, 이중선 글자가 기본 모양은 같아도 서로 다른 종류의 대상을 나타내기도 합니다.
유니코드는 다음과 같은 계열을 인코딩했습니다.
- 굵게·기울임 라틴 및 그리스 문자
- 필기체와 굵은 필기체
- Fraktur와 굵은 Fraktur
- 이중선 문자와 숫자
- 산세리프 및 고정폭 수학 문자
이 문자들은 일반 텍스트 수식에서 의미의 차이를 보존하기 위해 만들어졌습니다. 유니코드 표준도 단순히 일반 문장을 꾸미는 용도로 쓰지 말라고 설명합니다. 소개글과 닉네임에서의 사용은 기술 문자 집합을 창의적으로 재활용한 사례입니다.
일부 알파벳에 이상한 빈칸이 있는 이유
필기체나 이중선 알파벳을 자세히 보면 몇몇 글자만 이웃과 멀리 떨어진 코드 포인트에 있습니다.
ℂ, ℍ, ℕ, ℙ, ℚ, ℝ, ℤ 등은 완전한 수학 알파벳이 추가되기 전부터 Letterlike Symbols 블록에 존재했습니다. 유니코드는 표를 가지런히 만들기 위해 같은 문자를 중복 인코딩하지 않습니다. 따라서 새 블록에는 빈자리가 남고 프로그램은 기존 코드 포인트를 사용합니다.
눈에 보이는 알파벳은 이어지지만 내부 주소는 이어지지 않습니다.
다른 ‘글꼴’ 스타일이 쓰는 방법
Hello는 동아시아 컴퓨팅에서 온 전각 호환 문자를 사용합니다.ᴛɪɴʏ는 음성 문자와 수식 문자를 빌려 스몰캡을 흉내 냅니다.Hₑₗₗₒ는 불완전한 아래 첨자 집합을 조합합니다.- 원문자와 사각형 문자는 둘러싸인 영숫자에 속합니다.
- 뒤집힌 문자는 회전한 라틴 문자와 닮은 다른 문자를 대신 사용합니다.
이 집합들은 완전한 장식용 알파벳으로 설계되지 않았습니다. 빠진 글자, 들쭉날쭉한 높이와 기기별 지원 차이는 서로 다른 목적의 문자를 한 스타일로 묶은 결과입니다.
정규화가 기본 문자를 드러낼 수 있다
유니코드에는 여러 정규화 방식이 있습니다. 호환 정규화인 NFKC와 NFKD는 수학 문자, 전각 문자, 원문자, 위 첨자 등을 일반 문자에 가까운 형태로 바꿀 수 있습니다. NFKC를 적용하면 𝐇가 H가 되기도 합니다.
검색, 비교, 콘텐츠 검토와 보안에는 유용합니다. 반대로 플랫폼이 붙여 넣은 꾸밈 문자를 더 단순한 문자로 저장하거나 표시할 수 있다는 뜻이기도 합니다.
실제 사용할 때의 대가
- 지원 글꼴이 없으면 네모 상자로 보일 수 있습니다.
- 검색이나 @멘션에서 일반 글자와 같은 것으로 처리되지 않을 수 있습니다.
- 스크린 리더가 긴 유니코드 이름을 읽거나 이상하게 철자를 나눌 수 있습니다.
- 계정명, URL, 복구 정보는 확인하기 어려워집니다.
- 의도하지 않은 수학 의미가 생길 수 있습니다.
짧은 장식용 제목에 사용하고 계정, 링크, 연락처, 중요한 안내는 일반 문자로 유지하는 편이 안전합니다.
핵심은 ‘서식’이 아니라 ‘치환’입니다. 생성기가 바꾸는 것은 문자를 그리는 글꼴 파일이 아니라 입력한 문자 자체입니다.
귀여운 특수문자 글꼴과 영문 필기체 변환기의 결과를 위 현미경에 붙여 코드 포인트를 비교해 보세요.