다국어 지원의 난관 – 글꼴

다국어 지원을 하려면, 전에 몇 번 포스팅했던 것 처럼 몇 가지 요소가 갖춰져야 한다. 즉 표현할 문자 집합과 그에 대한 인코딩이 필요하다. 그렇지만 한 가지 요소가 더 필요하다. 바로 화면이나 인쇄물에서 표현되기 위한 "글꼴;font"가 그것이다.

요즘처럼 Unicode 기반의 시스템이 많이 보급된 상황에서는 많은 언어의 문자들이 쉽사리 지원이 된다. 특히나 웹 상으로 전달되는 문서들의 경우 UTF-8 등 굉장히 범용적인 문자집합/인코딩을 써서 웹 브라우져 등을 통해 쉽게 읽을 수 있고 이를 가지고 무언가 하기도 편하다.

문제는 이렇게 다국어 지원이 잘 된 일부 응용들을 벗어났을 때의 일이다. 특히나 글자하나하나가 굉장히 많은 픽셀이 필요한 (혹은 벡터가 복잡한) CJK† 문자들의 경우 문자 집합이나 인코딩 관점에서는 지원되지만 실제로는 폰트가 없어서 동작하지 않는 상황이 종종 발생한다. 즉 특정 응용에 UTF-8 등으로 전달은 할 수 있지만, 그 쪽에서 (처리에 필요한) 해석까지 다 해놓고도, 최종적으로 출력하는 부분에서 제대로된 폰트가 없어서 이상 동작하거나 제대로 출력되지 않은 화면/인쇄물을 내놓는 것이다 -_-;

실제로 지금 내가 겪고 있는 문제는 Google Chart API를 통해서 한 해 동안 사용한 태그 정보를 요약하려는 상황에서 발생했다(파이 차트가 좀 이뻐보이긴 했다…). 그러나 한글을 레이블로 사용하려한 순간… !@#$% 하게도 ??? 라고 출력되는 문자들의 압박이란…

Google Chart API의 구글 그룹스를 뒤져보니 이런 글이 있더라.

From Google Groups: CJK character in labels?

this is a known issue that we will be addressing. We already
experimented with a font that supports at least simplified Chinese and
the western stuff but our internal users did not like it. So we
postponed our i18n efforts until we get a usable font for all Unicode
characters and the ability to render all Unicode characters. All I can
say right now is, we are working on it, and it is not easy.

"어느정도는 지원가능한 상태지만 내부적으로 싫어하는 사람들이 있어서 모든 유니코드 캐릭터에 대한 쓸만한 폰트를 구하면 그 때 가서 제대로 지원하겠다" 란다. (그리고 쉽지 않다는 말까지…)

Orz. 연간 통계 정보에서 태그 관련 그래프는 내년을 기약합세다[…]

*

† 동아시아의 삼국 (중국어, 일본어, 한국어)의 문자들에 관해 표현할 때 흔히 축약해서 쓰는 단어.

ps. 사실 term_name 필드 대신에 slug 필드를 쓸 수 있긴한데, 그러면 현존하는 이 블로그 안의 링크 몇 개가 깨질 것이다 – WordPress는 링크용으로는 slug 필드를 쓰기 때문에 =_=. 일일이 redirection table에 집어넣는 방법이 있긴하지만 아직은 선택하고 싶지가 않다(일단 졸려서(…)).

Updated: 내용의 오류 수정. 실제와 정 반대로 써놓은 문장을 하나 발견해서 수정. Thanx shurain.

Jinuk Kim
Jinuk Kim

SW Engineer / gamer / bookworm / atheist / feminist

Articles: 935

6 Comments

  1. 생각해보니 GNUPlot으로 그래프 그릴 때도 비슷한 문제를 좀 겪었었다. 그 땐 뭔가 야메로 해결했던 것 같은 느낌이지만[…]

  2. 저도 테스트를 해보고 당연하게도(?) 한글이나 가나 등 알파벳을 벗어난 글자가 지원되지 않는 걸 보니 아쉽더군요. 하지만, 구글 입장에서 봤을 때 CJK 국가의 글자도 차트에 지원하려면 디메리트가 클 것 같습니다.

    우선 차트에 사용되기 알맞은 CJK 폰트를 물색하고 라이센싱을 해야하겠죠. 이거야 구글이니 쉽게 하겠지만 역시 서버에 대한 부담이 클 듯 싶습니다. 알파벳과 달리 CJK 폰트들은 그 크기도 크기거니와 출력 속도에도 큰 영향을 끼칠테니까요. 예전에 php 코드에서 GD 라이브러리를 이용하여 한글이나 한자를 출력해보았는데 속도 손실이 제법 크더군요.

    당장은 굳이 표시하려면 레이어를 그래프 위에 덮어서 쓰는 차선책이 있긴 합니다. 본래 구글 차트의 의도와 달리 좌표 계산 등의 복잡한 추가 절차가 따르지만.. -_-;

    간단한 javascript snipet 함수를 만들어서 레이어로 표시해주는 걸 만들어보는 것도 괜찮겠군요.

  3. noname / 디메릿이 크다기보단 일단 CJK 까지는 바로 지원할 수 있다는데, 내부 의견 조율 문제도 있고 (아마 코드 땜빵을 했겠지요) 해서 “모든 유니코드” 문자를 찍을 수 있게될 때까지 연기한다고 합니다.

    왠지 그 전에 바이두에서 CJK지원이 되는 그래프를 내놓을지도…

Leave a Reply