2017년 12월 15일 금요일

GTK+의 에모지


GTK+에 관심이 없더라도 GTK+에 관련되었으면서도 모두가 관심있을 만한 주제에 대해 써 보겠습니다. 바로 그놈 3.26부터 추가된 에모지!

🌀🌁🤐🤑🤒🤔 <- 이런 겁니다.

일본어로 그림 문자라는 뜻인 에모지(絵文字, えもじ)는 일본의 통신사들이 다양한 감정 표현을 문자 메시지에서 보낼 수 있도록 이것 저것 커스텀 이모티콘을 추가하면서 시작됐습니다. 아스키 아트로 이루어졌던 이모티콘에 비해 컬러풀한 에모지는 커뮤니케이션을 풍부하게 만들었죠. 유니코드에 들어 있는 에모지는 이들 일본 통신사들이 사용하던 에모지를 표준화하는 과정에서 나왔습니다. 하지만 표준화 덕분에 갈라파고스로 유명한 일본 내부에서나 쓰이던 에모지가 이제 전세계에서 쓰이게 되었습니다.

유니코드 에모지 목록: https://unicode.org/emoji/charts/full-emoji-list.html

에모지가 트루타입 폰트에 어떻게 들어 있는 걸까요? 트루타입의 글꼴 데이터는 기본적으로 윤곽선 곡선(spline)의 조합이지 에모지에서 나오는 색과 그라데이션 등등을 넣을 만한 곳이 없어 보입니다. 그래서 사실 곡선 데이터에 있는 게 아니라 별도의 테이블에 에모지 데이터가 들어 있는데요. 몇 가지 타입이 있습니다. 예전에는 어도비 Type3 폰트 표준에 따라 PNG 이미지를 내장하는 방식을 썼고 애플에서는 아직도 쓰는 방식입니다. 최근의 파이어폭스나 안드로이드, 그리고 우리가 쓰는 GTK+는 OpenType 폰트에 SVG 포맷의 벡터 그래픽 데이터를 넣는 방식을 씁니다. 아직 에모지 글꼴이 없으면 Noto Color Emoji 글꼴을 설치해 보세요. 구글 픽셀 등에서 사용하는 안드로이드 기본 에모지 글꼴입니다.이렇게 에모지가 이쁘게 나옵니다.



이런 내부 방식을 생각해 보면 그놈 3.26에서 어떤 소프트웨어가 업데이트되었을지 예상해 볼 수 있습니다. SVG in OpenType 에모지 폰트를 제대로 표시하려면 cairo, fontconfig, pango, gtk가 모두 업데이트되어야 합니다. 여러분 눈 앞에 에모지를 보이게 하는 소프트웨어는 이들 여러 라이브러리의 조합의 결과입니다.

👏👏👏

(추가) 최근 GTK에서 에모지를 입력하려면 입력창에서 Ctrl+. (점) 또는 Ctrl+; (세미콜론) 키를 눌러보세요. 단 GTK 기본 위젯이 아닌 자체 제작한 입력 위젯에서는 동작하지 않을 수 있습니다.

댓글 1개: