풀숲에 토끼가 있다: Simeji 얼굴문자를 태국어·미얀마어 사이에 넣었더니 Unicode 야생동물원이 된 이야기

문제의 생물은 이것이다.

이 글 공유하기

이 글 공유하기

광고
광고

1. 5초 결론: 눈에는 토끼 한 마리, 내부에는 코드 포인트 세 개

문제의 생물은 이것이다.

ꪔ̤̮

작은 토끼가 정면을 보는 것처럼 보이지만, Unicode에 등록된 토끼 이모지는 아니다. 바탕은 U+AA94 TAI VIET LETTER LOW TO, 그 아래에 U+0324 COMBINING DIAERESIS BELOW, U+032E COMBINING BREVE BELOW가 붙어 있다.[1][2]

즉 화면은 “토끼”라고 말하지만 내부 데이터는 “Tai Viet 문자 + 결합 부호 + 결합 부호”라고 말한다.

귀여운데 서류가 복잡하다.

2. 30초 요약: ‘풀’ 사이에 넣자 진짜 서식하기 시작했다

시작은 장식용 얼굴문자였다.

- ̗̀ ꪔ̤̥ꪔ̤̮ꪔ̤̫ ̖́-

미얀마 문자 사이에 넣으면:

မြန်မာမြန်မာမြန်မာ ꪔ̤̮ မြန်မာမြန်မာ

문자를 모르는 사람의 눈에는 둥글고 빽빽한 형태가 풀숲처럼 보이고, 그 사이에서 토끼가 얼굴만 내민 것처럼 느껴진다.

태국어에서는 더 강했다.

ภาษาไทยꪔ̤̮ภาษาไทย

“잠깐, 저기 토끼 있지 않나?”

그래서 10마리를 넣었다.

ภาษาไทยꪔ̤̮ภาษาꪔ̤̥ไทยภาษาꪔ̤̫ไทยꪔ̤̮กำลังꪔ̤̥เขียนอยู่ꪔ̤̫ภาษาไทยꪔ̤̮ภาษาꪔ̤̥ไทยภาษาꪔ̤̫ไทยꪔ̤̮

이제 문장이 아니라 야생동물 개체수 조사다.

3. ‘토끼’의 진짜 구성

모양 코드 포인트
ꪔ̤̥ U+AA94 + U+0324 + U+0325
ꪔ̤̮ U+AA94 + U+0324 + U+032E
ꪔ̤̫ U+AA94 + U+0324 + U+032B

U+AA94는 실제 Tai Viet 문자 체계의 자음이다.[1] 그 아래에 별개의 Unicode 결합 부호가 겹쳐진다.[2]

Unicode가 몰래 토끼를 넣은 것이 아니다. 사람의 시각이 문자 조합에서 얼굴을 발견했을 뿐이다.

얼굴문자 문화는 그 틈을 놓치지 않았다.

4. 왜 태국어가 특히 좋은 위장막처럼 보일까

태국 문자가 이상하다는 뜻이 아니다. 읽지 못하는 사람이 형태를 바라볼 때 생기는 시각적 농담이다.

태국어는 기본 문자 주변, 특히 위아래에 여러 기호가 놓일 수 있다. 또한 영어처럼 모든 단어 사이에 공백을 넣는 방식이 아니다. Unicode 줄바꿈 규칙에서도 태국 문자는 적절한 단어·줄 경계를 찾기 위해 언어 의존적인 문맥 분석이 필요한 문자군으로 다뤄진다.[4]

그 속에 아래쪽 결합 부호 두 개를 가진 ꪔ̤̮를 넣는다.

태국어 독자는 외부 문자가 섞였다는 것을 알 수 있지만, 비독자에게는 곡선과 위아래 표식이 연속된 ‘질감’ 속에 토끼 얼굴이 섞여 보인다.

ภาษาไทยꪔ̤̮ภาษาไทย

시각적으로는 **풀, 풀, 풀… 어? 방금 눈 마주쳤나?**가 된다.

5. 미얀마·크메르·말라얄람·싱할라도 참가 가능

미얀마:

မြန်မာမြန်မာ ꪔ̤̮ မြန်မာမြန်မာ

크메르:

ខ្មែរខ្មែរអក្សរ ꪔ̤̮ ខ្មែរខ្មែរ

말라얄람:

മലയാളം മലയാളം ꪔ̤̮ മലയാളം

싱할라:

සිංහල භාෂාව ꪔ̤̮ සිංහල

태국어:

ภาษาไทยกำลังเขียนอยู่ ꪔ̤̮ ภาษาไทย

어느 문자가 ‘우승’인지는 완전히 주관적이다. 이 문자들은 장식이 아니라 실제 언어의 정상적인 문자 체계다. 농담의 대상은 문자 자체가 아니라, 모르는 문자를 무늬처럼 보는 사람의 뇌와 그 안에서 기묘하게 위장되는 토끼 얼굴이다.

그래도 태국어는 강력한 우승 후보처럼 보인다.

6. 번역 후 문자열이 깨졌다. 하지만 Unicode 정규화만 범인이라고 할 수는 없다

10마리 문자열을 번역 계열 처리에 넣은 뒤 다음처럼 이상한 공백이 보이는 결과가 관찰됐다.

ภาษาไทยꪔ̤̮ภาษาꪔ̤̥ไทยภ าษาꪔ̤̫ไทยꪔ̤̮กำลังꪔ̤̥เข ียนอยู่...

“Unicode라서 깨졌다”는 큰 방향에서는 이해할 수 있지만, “정규화가 공백을 만들었다”고 단정할 근거는 없다.

Unicode 정규화는 동등한 문자열 표현을 분해하고 정렬하고 다시 합성하는 규칙을 정의한다.[5] 번역 시스템은 그 밖에도 문장 분할, 단어 경계 추정, 토큰화, 미지원 문자 처리, 저장, 폰트 폴백, 레이아웃, 복사·붙여넣기 같은 처리를 수행한다.

태국어·미얀마어처럼 문맥 기반 분할이 중요한 문자열에 다른 문자 체계의 기본 문자와 여러 결합 부호를 끼워 넣으면 텍스트 파이프라인 전체를 괴롭히는 훌륭한 스트레스 테스트가 된다.[4]

정확한 원인은 입력→저장→API 요청→번역 결과→응답 파싱→렌더링 단계마다 코드 포인트 배열을 비교해야 찾을 수 있다.

토끼는 귀엽다. 장애 분석은 귀엽지 않다.

7. 화면의 ‘한 글자’와 Unicode 코드 포인트 하나는 같은 말이 아니다

Unicode에는 사용자가 한 글자로 느끼는 단위를 근사하는 grapheme cluster(자소 클러스터) 개념이 있다.[3]

악센트가 붙은 글자 하나가 단일 코드 포인트일 수도 있고, 기본 문자와 여러 결합 부호로 구성될 수도 있다. 화면에서는 같은 한 글자처럼 보여도 내부 표현은 다를 수 있다.

우리 토끼도 그렇다.

  • 눈에는 토끼 한 마리
  • 내부에는 코드 포인트 세 개
  • 문자열 길이는 API 모델에 따라 다르게 셀 수 있음
  • 커서 이동은 가능하면 사용자가 보는 한 단위로 처리해야 함
  • Backspace 동작은 구현에 따라 다를 수 있음
  • 검색·비교는 정규화 정책의 영향을 받음
  • 폰트 폴백에 따라 결합 부호 위치가 달라질 수 있음

야생동물 등록부가 코드 포인트 기준이었다.

8. 농담인데 Unicode 테스트 픽스처로 꽤 쓸 만하다

ꪔ̤̮ 하나로 다음을 시험할 수 있다.

  1. UTF-8 왕복 보존
  2. 복사·붙여넣기에서 결합 부호 보존
  3. 코드 포인트와 자소 클러스터 길이 처리
  4. 커서·삭제 동작
  5. NFC/NFD 비교 정책
  6. 폰트 폴백과 결합 부호 위치
  7. 태국어·미얀마어·크메르 문맥에서 줄바꿈
  8. 번역 API 왕복
  9. 검색 인덱스
  10. 모바일·브라우저별 렌더링

하지만 실제 기사에 이유 없이 뿌리면 안 된다. 테스트 데이터로 격리하고 기대 코드 포인트를 명시하는 편이 안전하다.

운영 DB에 야생 토끼를 방생하지 말자.

9. 다국어 사이트의 실무 대응

  • UTF-8을 표준으로 사용한다.
  • 정규화 정책을 문서화한다. Web 콘텐츠는 NFC가 흔하지만 원문 보존 요구와 경계를 정해야 한다.[5]
  • 바이트, 코드 유닛, 코드 포인트, 자소 클러스터를 구분한다.
  • 올바른 lang 메타데이터와 적절한 폰트·행간을 확인한다.
  • 공백 기반 분할만으로 처리할 수 없는 태국어·미얀마어·크메르 등을 실기기에서 검증한다.[4]
  • 번역 수집 과정에서 작성자가 만든 원문을 조용히 바꾸지 않는다.
  • 깨진 글자뿐 아니라 결합 부호 위치, 줄바꿈, 선택, 복사, 검색, 접근성도 QA한다.
  • 문제가 생기면 “Unicode 탓”으로 끝내지 말고 어느 단계에서 코드 포인트 열이 바뀌었는지 찾는다.

대부분 Unicode는 규칙대로 움직였다. 소프트웨어가 “보이는 한 글자 = 단순한 한 단위”라고 가정할 때 숲에서 토끼가 나온다.

10. 결론: 풀숲에 있던 것은 토끼라기보다 인간의 얼굴 인식 능력과 Unicode의 깊이였다

시작은 귀여운 얼굴문자였다.

ꪔ̤̮

미얀마 문자에 넣으니 숨은 토끼가 됐고, 태국어에 넣으니 완전히 서식했다. 10마리를 넣으니 군집이 됐고, 번역 파이프라인을 통과시키니 Unicode 디버깅 수업이 됐다.

남는 교훈은 꽤 진지하다.

  • 눈에 한 글자로 보여도 여러 코드 포인트일 수 있다.
  • 결합 부호는 기본 문자에 붙어 렌더링된다.
  • 일부 문자 체계는 언어 인식 분할이 필요하다.
  • 정규화, 분할, 줄바꿈, 폰트, 번역, 렌더링은 서로 다른 층이다.
  • 이상한 화면 하나만으로 범인을 확정할 수 없다.

그리고 한번 이것을 토끼로 본 뒤에는,

ภาษาไทยꪔ̤̮ภาษาไทย

다시는 그냥 문자열로 돌아가지 않는다.

Unicode를 공부하러 왔는데 토끼 서식 확인으로 끝났다.


이 글 공유하기

광고

다른 글 찾기

모든 기사

Mendoi-chan

이 글을 쓴 사람

Mendoi-chan

직장과 일상의 불편함을 구조화해 이해하기 쉬운 다음 행동으로 연결하는 글을 씁니다.

사이트 소개
광고

새 글

  1. 1하루에 18시간 잤다면 회복 수면일까? 긴 수면과 꿈의 변화를 보는 법
  2. 2“손주를 못 보여드려서 미안해”가 정말 필요한가?――성인 자녀가 집에 와서 같이 밥을 먹는 것만으로도 부모에게는 충분히 의미가 있을 수 있다
  3. 340세 VTuber가 ‘디지털 주민센터’가 된 날 — 나이가 수요를 없애는 게 아니라 수요의 모양을 바꿀 때
  4. 4약 일주일 만에 AI 기사 자동화가 ‘자율 공장’이 된 이야기: Ultra 한 방, Level 6, 그리고 Level 7은 아직 이르다
  5. 5AI는 엄청 유능하다. 그런데 “그래서 뭘 만들지?”에서 공장이 멈춘다 — 첫 아이디어에 불을 붙이는 사람이 능력을 생산설비로 바꾼다

함께 읽으면 좋은 글

광고