노무현 대통령 배너
BLOG main image
왕미친놈의 왕미친세상입니다. 미친 소리는 써도 되지만, 근거 없는 소리는 쓰면 안 됩니다.


유니코드 지원이란?

우리가 흔히 "프로그램이 유니코드를 지원한다"라고 말할 때는 그 프로그램이 유니코드를 나타낼 수 있느냐가 아니라, 그 프로그램의 메뉴나 오류 메시지를 표현하는 코드 페이지가 유니코드이냐를 뜻합니다. 당연한 말이겠지만, 그 프로그램에서 유니코드 문자를 입력할 수 있는지는 전혀 고려하지 않습니다.

이때 프로그램 메뉴나 오류 메시지를 유니코드로 나타내는 경우에 네이티브로 유니코드를 지원한다는 표현을 사용하기도 합니다.

유니코드 출력

그렇다면 유니코드를 지원하는 프로그램만 유니코드를 올바르게 나타낼 수 있을까요? 유니코드를 지원하지 않는 프로그램은 유니코드를 올바르게 나타낼 수 없을까요? 그렇지는 않습니다. 유니코드 지원과 유니코드 표현은 아무런 관련도 없습니다. 아, 관련이 있기는 합니다. 특정 코드 페이지를 지원하는 프로그램은 그 코드 페이지에 해당하는 문자를 나타내기가 좀 더 쉽습니다.

그렇지만 그 둘 사이의 관계가 절대적이지는 않습니다. 화면 표시는 그저 화면 표시일 뿐 그 이상의 것이 아니기 때문입니다. 물론 텍스트 편집 프로그램의 경우에는 화면 표시가 매우 중요한 요소이지만, 실제 프로그램의 실행과는 별로 관련이 없습니다.

좀 더 전문적인 용어를 써서 말한다면, 유니코드 출력은 문자 인코딩(Character encoding)의 문제이고, 유니코드 지원은 문자 집합(Character set)의 문제입니다.

유니코드를 지원하지 않는 프로그램의 유니코드 출력 예시

CLCL

멀티 클립보드 프로그램인 CLCL은 유니코드를 지원하지 않는 프로그램, 곧 지원하는 문자 집합이 유니코드가 아닙니다. 그러나 클립보드 지원 프로그램이기 때문에 클립보드에 복사한 내용 가운데 유니코드가 있을 경우 그것을 잘 출력해 줍니다. 물론 이 경우 폰트가 잘 지원되어야 하지만, 그에 대해서는 논외로 합니다. 한편 CLCL도 유니코드 출력이 기본 기능은 아닙니다. 추가적인 DLL 파일이 필요하지만, 그것만 설치한다면 아무 문제 없이 유니코드 출력이 가능합니다. 더구나 그 DLL 파일이 유니코드를 네이티브로 지원하지도 않습니다.

예시 1 : 유니코드를 잘 나타내는 CLCL

예시 1 : 유니코드를 잘 나타내는 CLCL


예시 2 : 유니코드를 뭉개져 버린 CLCL

예시 2 : 유니코드를 뭉개져 버린 CLCL


위 두 화면은 유니코드를 CLCL이 어떻게 나타내는지를 보여주고 있습니다. 예시 1은 기본 출력인데, 현재 유니코드로 설정한 상태입니다. 기본값은 TEXT입니다. 예시 2TEXT일 때의 화면 출력을 보여 주고 있습니다. 게다가 예시 1예시 2는 현재 화면에 보이는 상태 그대로 붙여넣기가 가능합니다. 다시 말해 화면 출력과 프로그램의 유니코드 지원이 별 상관이 없다는 뜻이지요.

Notepad++

좀 더 확실하게 보여줄 필요가 있다면, 텍스트 편집기 가운데 유니코드 버전과 ANSI 버전을 함께 제공하는 프로그램을 선택하면 됩니다. 대표적인 프로그램이 바로 Notepad++입니다.

메모장의 유니코드 출력 - 옛한글은 한국어 영역이 아닌 유니코드 영역에 있다.

예시 3 : 메모장의 유니코드 출력 - 옛한글은 한국어 영역이 아닌 유니코드 영역에 있다.


Notepad++ ANSI 버전의 유니코드 출력

예시 4 : Notepad++ ANSI 버전의 유니코드 출력


Notepad++ 유니코드 버전의 유니코드 출력

예시 5 : Notepad++ 유니코드 버전의 유니코드 출력


위의 세 그림은 유니코드 버전이냐는 사실과 유니코드를 출력할 수 있느냐는 사실과는 관련이 적음을 보여주고 있습니다. 유니코드를 출력할 수 있느냐는 오로지 프로그램이 유니코드 폰트 및 유니코드 합자를 지원하는 알고리듬을 가지고 있느냐에 좌우됩니다.

관련 문서

 

이 글은 스프링노트에서 작성되었습니다.


글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

요즘 한컴오피스 2010 베타버전을 사용하다 보니 조금 이상한 현상을 발견했습니다. 한/글에서는 제대로 보이는 괄호가 웹페이지에서는 약간 다르게 보이는 현상입니다.

  • 참고 : 이 글에 나타난 사항을 바탕으로 블로그의 글꼴 설정을 바꾸었습니다.

벌레의 유형

남들은 다 날씬해 보이기를 바라는데, 이 벌레는 홀로 뚱뚱해 보이기를 바라고 있습니다.

개발자의 답변

버그 리포팅을 하지 않았습니다. 이 글을 쓰기 시작할 때까지는 적용되어 있던 글꼴 가운데 돋움 옛한글 글꼴(ODOTUM.TTF)은 MS 오피스2000 팩키지 또는 확장 팩에 포함되어 있던 글꼴입니다. 현재 이 파일에 대한 지원을 MS에서 중단한 상태입니다. 그래서 그 글꼴을 삭제하였습니다. 생각 같아서는 굴림 옛한글 글꼴도 삭제하고 싶지만, 그것이 기본 글꼴에 대한 확장이라서 그냥 두었습니다.

벌레의 발견

파이어폭스에 나타난 이상한 괄호

파이어폭스에 나타난 이상한 괄호

처음에는 파이어폭스에서 발견했습니다.

인터넷 익스플로러에 나타난 이상한 괄호

인터넷 익스플로러에 나타난 이상한 괄호

인터넷 익스플로러에서도 확인했습니다. 제 컴퓨터에 있는 IE6은 대개 이런 용도로만 쓰입니다.

글꼴 실험 시작

왜 저렇게 이상하게 보일까요? 어떤 글꼴인지 알 수 없어서 하나하나 살펴보기로 했습니다. 대상은 제 블로그에 설정한 글꼴과 몇몇 다른 글꼴입니다.

[code html] <div style="font-size:10pt;"> <p style="font-family: '굴림';">굴림 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '굴림체';">굴림체 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '돋움 옛한글';">돋움 옛한글 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '바탕 옛한글';">바탕 옛한글 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '굴림 옛한글';">굴림 옛한글 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '굴림 옛한글 자모';">굴림 옛한글 자모 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '궁서 옛한글';">궁서 옛한글 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '은 돋움';">은 돋움 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '은 바탕';">은 바탕 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '은 자모 돋움';">은 자모 돋움 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '은 자모 바탕';">은 자모 바탕 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '은 자모 노벨';">은 자모 노벨 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '은 자모 소라';">은 자모 소라 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '함초롬바탕';">함초롬바탕 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: '함초롬돋움';">함초롬돋움 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: 'Code2002';">Code2002 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: 'Code2001';">Code2001 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: 'Code2000';">Code2000 : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> <p style="font-family: 'serif';">serif : &#x1112;&#x119E;&#x11AB;을 지우기(Del 키)를 할 때</p> </div> [/code]

위와 같은 코드를 넣은 HTML 파일을 만들어서 시험을 했습니다. &#x1112;&#x119E;&#x11AB;은 앞서 자주 나왔던 그 문자, 바로 ᄒᆞᆫ입니다. & 문자HTML 참조 코드 또는 글자 엔티티(character entity)임을 나타내고 있습니다. 뒤에 수치가 따라왔으므로 HTML 참조 코드입니다(스프링노트 : 문자 인코딩 관련 사항 참조). 이 코드는 옛한글 지원 여부를 알아보려고 넣었습니다.

다만 위에서 <div style="font-size:10pt";>라고 나타난 부분은 앞으로 바뀌게 됩니다. 이때 이 실험은 처음 시작할 때와 코드가 조금 바뀌었으며, 여기에 밝힌 사항은 이미 실험에 성공하였기에 나타난 사항임을 염두에 두기 바랍니다.

10포인트 글꼴 테스트

10포인트 글꼴에서는 이상을 발견할 수 없었습니다. 처음에는 이것 때문에 조금 헤맸습니다. 하지만 구글링 결과 글꼴 버그가 특정 크기에서만 나타나는 경우도 있다고 했기 때문에 급히 코드를 약간 고쳤습니다.

10포인트 글꼴 테스트

10포인트 글꼴 테스트

10포인트보다 큰 글꼴의 크기별 테스트

편의상 편집하여 표시합니다. 양해 바랍니다.

11포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음

11포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음

12포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음

12포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음


13포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음

13포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음


14포인트 글꼴 테스트 : 돋움 옛한글 글꼴에서 이상 발생

14포인트 글꼴 테스트 : 돋움 옛한글 글꼴에서 이상 발생


16포인트 글꼴 테스트 : 돋움 옛한글 글꼴에서 이상 발생

16포인트 글꼴 테스트 : 돋움 옛한글 글꼴에서 이상 발생


18포인트 글꼴 테스트 : 돋움 옛한글 글꼴에서 이상 발생

18포인트 글꼴 테스트 : 돋움 옛한글 글꼴에서 이상 발생


20포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음

20포인트 글꼴 테스트 : 모든 글꼴에서 이상 없음

이보다 더 큰 글꼴에서의 테스트는 저에게 필요가 없기에 여기에서 멈추었습니다. 마지막 20포인트 글꼴에 빨간 네모로 표시한 부분이 옛한글을 잘 나타내고 있는 글꼴입니다.

  • 참고로 저는 Code2000 계열 글꼴을 가지고 있지 않기에 위 그림들에서 Code2000 계열 글꼴에서 옛한글이 모두 깨지고 있습니다. 그리고 MS 오피스 확장 팩 글꼴은 제가 가진 MS Word 2000과 함께 딸려왔습니다.

벌레의 원인

이 글을 쓰기 시작할 때까지는 적용되어 있던 글꼴 가운데 돋움 옛한글 글꼴(ODOTUM.TTF)은 MS 오피스2000 팩키지 또는 확장 팩에 포함되어 있던 글꼴입니다. 아마도 그 파일에 어떤 벌레가 숨어 있었나 봅니다.

비슷한 벌레

글꼴 및 화면 표시와 관련한 버그는 다음과 같은 것이 있습니다.

관련 문서

내부 문서

외부 문서

(없음)

이 글은 스프링노트에서 작성되었습니다.

글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

카테고리

분류 전체보기 (1005)
스크립트 (22)
벌레와 팁 (126)
소프트웨어 (240)
하드웨어 (6)
이야기 (24)
말의 나무 (506)
미쳐보자 (22)
일기 (48)
아이폰 (10)

최근에 올라온 글

최근에 달린 댓글

최근에 받은 트랙백

달력

«   2024/03   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
31

글 보관함