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


iOS4로 업데이트한 뒤에 좋은 점 가운데 하나가 메시지 서비스에서 글자 수를 나타낼 수 있다는 점이다.

처음 설정 및 메시지

문자 개수 설정 켜기

처음 설정은 다음과 같은 순서로 확인할 수 있습니다.

0-1.png
처음 화면

0-2.png
설정 화면 - 여기에서 주~욱 아래로 내린다.

0-3.png
메시지를 톡 건드려 준다.

1-1.png
처음 설정

위와 같은 처음 설정 화면에서 문자 개수 항목을 톡 건드린다.

1-2.png
문자 개수 설정 켜기

문자 개수 설정을 켜기 전후

1-3.png 1-4.png
문자 개수 설정 켜기 전의 문자 메시지 화면

2-2.png 2-2(1).png
문자 개수 설정 켠 후의 문자 메시지 화면

그런데 2줄 이상일 때는 문자 개수가 잘 나타나지만, 1줄일 때는 나타나지 않습니다. 그러면 1줄일 때도 나타나게 하려면 어떻게 해야 할까요?

1줄일 때도 문자 개수 설정 보이기

다시 아까의 설정 화면으로 가 봅시다.

1-2.png
문자 개수 설정 켜기 적용 상태

이 화면에서 조금 더 건드려 주면 됩니다.

3-1.png
문자 개수 설정 + 제목 필드 보기 설정 켜기

그렇습닏. '제목 필드 보기' 설정을 켜면, 항상 2줄 이상으로 메시지가 나타납니다. 다시 말해 제목 필드 1줄에 문자 내용 1줄 이상을 더하면 항상 2줄 이상이 되어 문자 개수를 항상 보여주게 됩니다.

3-2.png 3-3.png
문자 개수 설정 + 제목 필드 보기 설정을 켠 후의 문자 메시지 화면 - 2줄 이상

3-4(1).png 3-5.png
문자 개수 설정 + 제목 필드 보기 설정을 켠 후의 문자 메시지 화면 - 1줄

문자 개수가 잘 보이네요. 그런데 1줄일 때는 가끔 안 보이는 때가 있지요. 그럴 경우 1글자를 지우면 나타납니다.

3-5(1).png

1글자를 지우자 잘 나타나는 문자 개수

추가 정보

약간의 버그가 있지만, 그럭저럭 잘 나타나고 있습니다.

그리고 한트윗에 문자를 보면 트위터에서 나타내 줍니다. 이때 80글자까지가 아니라, 90글자까지 나타내주므로, 위 86글자도 잘 전송된다고 보면 됩니다.

관련 문서

내부 문서

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

'아이폰 > 아이폰 팁' 카테고리의 다른 글

아이폰 전원 끄기 및 켜기  (0) 2010.06.27
아이폰, 통화 금지하기  (1) 2010.06.26
아이폰에서 어플 삭제 및 이동  (0) 2010.06.26
아이폰에서 음력 사용하기  (0) 2010.06.08
아이폰 화면 캡처하기  (2) 2010.06.08
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

한컴오피스 베타버전 버그 26 - 유니코드 버그 2 및 문자표 버그 3

ᄒᆞᆫ글2010 베타버전을 사용하다 보니 문자표와 관련하여 이해하기 힘든 동작을 발견했습니다. 뭐, 문자표와 관련한 벌레 가운데 이해할 수 있는 벌레가 하나도 없었지만요.
게다가 이 벌레는 가장 먼저 발견(2009년 12월 30~31일경 발견)했음에도 그 벌레 발생의 규칙성을 알지 못해서 버그 리포팅을 하지 못하고 있었습니다.

벌레의 유형

ᄒᆞᆫ글 씨! 똑같은 글자이건만, 앞서 불러온 문자에 따라, 다르게 취급할 필요가 있나요? 그리고 유니코드 4자리에게서 안 나타나는 벌레가 왜 유니코드 5자리에서 나타나서 사람을 괴롭히게 만들어요?

개발자의 답변

2010년 1월 26일 버그 리포팅을 한 상태입니다.

벌레의 발견

이 벌레의 증명에는 동영상을 사용하지 않기로 했습니다. 글쇠 하나만 잘못 눌러도 ᄒᆞᆫ글에서 이 벌레를 만날 수 없습니다. 결국 ᄒᆞᆫ글 프로그램을 다시 실행해야 했습니다. 뭐 지금은 정확하게 이 벌레를 나타나게 만들 수 있지만 조금 귀찮습니다. 또한 동영상이 없어도 설명하는 데는 지장이 없습니다.

그리고 이 벌레는 앞서 설명했듯이 4자리의 유니코드에서는 나타나지 않습니다. 또한 이전에 사용했던 유니코드 문자가 5자리 이상이라면 이 벌레는 나타나지 않습니다.

준비 : 이전에 사용한 문자표의 문자 영역 재설정

아무 문자, 특히 영문자(로마자; 라틴 문자)나 숫자를 골라서 영역을 설정한 뒤에 문자표를 부릅니다. 이때 영역(블럭)을 설정의 방향은 상관이 없습니다. 이전에 사용한 문자표의 문자 영역 재설정하는 작업이 이 벌레를 발견하는 데에 매우 중요합니다.

예제 문서와 작업 준비 화면

예제 문서와 작업 준비 화면


이전에 사용한 문자 및 문자 영역을 재설정

이전에 사용한 문자 및 문자 영역을 재설정

위와 같은 화면에서 화면에 보이는 숫자 가운데 하나를 블럭 지정하여 문자표를 불렀습니다(단축키는 Ctrl+F10). 참고로 예제 문서는 Unicode-Test-2.hwp입니다.

앞서 입력한 문자가 유니코드 4자리일 때

이번 테스트에 이용할 문자는 준비 화면에서 보이는 한자들입니다.

한자에 커서를 두고 블럭 설정

한자에 커서를 두고 블럭 설정

위 그림처럼 한자 앞에 커서를 두고 블럭을 설정합니다. 이미 앞서 문자표로 불러왔던 문자의 유니코드 번호가 4자리였습니다.[각주:1]

블럭 설정

블럭 설정

위 그림처럼 블럭을 설정한 뒤 문자표를 불러옵니다. 단축키 사용해 주십시오. 지난번 그 벌레가 나오면 감당 못합니다. 단축키는 Ctrl+F10입니다.

유니코드 번호가 0208?? 설마?

유니코드 번호가 0208?? 설마?

저 번호가 맞다고 생각하지는 않겠죠? 참고로 U+0208의 문자는 다음과 같습니다.

라틴 확장-B 문자 영역에 나타난 U+0208

라틴 확장-B 문자 영역에 나타난 U+0208

어이, ᄒᆞᆫ글 씨! U+0208는 한자가 아니라 라틴 확장-B라는데요.

앞서 입력한 문자가 유니코드 5자리 이상일 때

앞서 입력한 문자가 유니코드 5자리 이상인 상황은 만들기 쉽습니다. 그냥 한자에 커서를 두고 블럭 설정 화면에 보이는 한자를 골라 문자표를 두 번 연속으로 불러 내면 됩니다.

정상적으로 출력된 유니코드 번호

정상적으로 출력된 유니코드 번호

거참, 처음부터 이렇게 제대로 나오면 좀 좋습니까?

벌레 분석

무슨 까닭에서인지 맨 처음에 유니코드 번호 다섯 자리 이상인 문자를 제대로 인식하지 못한 듯싶습니다.

관련 벌레

이 벌레와 관련이 있는 벌레는 다음과 같습니다.

관련 문서

내부 문서

외부 문서

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


  1. 이때 유니코드 번호가 4자리라는 말의 뜻은 어떤 문자의 유니코드 번호를 16진수 4자리 이내로 표현할 수 있다는 뜻입니다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

나는 ᄒᆞᆫ글을 자주 쓰는데, 가끔 ᄒᆞᆫ글에 없는 한자를 볼 때면 난감하기 그지 없습니다. 또 가끔이지만 유니코드의 코드 목록을 알고 싶어하는 사람이 있는데, 그럴 때도 참 난감합니다. 뭐, 난감한 이유는 그 답이 어려워서가 아니라 한글 자료가 부족하기 때문입니다. 그런데 실상 그 자료를 보면 한국어를 꼭 알 필요는 없음을 알게 됩니다. 코드표 또는 문자표라는 것은 그저 글자만 죽 나열한 것이기 때문입니다.

유니코드의 코드표 - 한 글자 찾기

유니코드의 문자 목록은 당연한 말이겠지만, 유니코드 컨소시엄 홈페이지(http://www.unicode.org/)에서 구하면 됩니다. 그런데 그걸 알려주면 영어라고 싫어하거나 화를 내는 사람이 있습니다. 앞서 말한 "난감한 이유"가 이것입니다.

각설하고 유니코드 문자 목록이 기록된 문서를 찾아가 봅시다.

유니코드 컨소시엄 홈페이지

유니코드 컨소시엄 홈페이지

홈페이지에 접속한 뒤에는 목적을 정확히 정해야 합니다. 이 사이트에는 매우 많은 정보가 있어서 정확한 목적에 맞는 자료를 찾기가 오히려 쉽지 않기 때문이죠. 일단 문자 목록 또는 코드표(문자표)만을 찾아봅시다.

코드표를 찾는 이유가 그저 한두 글자를 찾을 생각이라면 그냥 코드표(Code Charts) 페이지를 찾으면 됩니다.

코드표 페이지 찾아 가기

코드표 페이지 찾아 가기

유니코드 컨소시엄 홈페이지에서 The Unicode Standard를 클릭, Code Charts를 클릭합니다.

유니코드 문자표 페이지

유니코드 문자표 페이지

위와 같이 언어별로 코드 영역별로 구분이 되어 있습니다. 오른족에 보이는 CJK로 시작하는 부분이 바로 한자에 대한 유니코드입니다. CJK는 Chinese, Japanese, Korean을 합쳐서 부르는 명칭인데, 세 나라 언어에서 공통된 부분이 바로 한자입니다. 친절하게 괄호로 묶어서 Han이라고 표기해 주었죠.

만약 코드 번호를 알고 있다면 맨 위에 보이는 Look up by character code: 라는 부분에 입력하면 됩니다. 시험삼아 004B를 찾아 보았습니다. 004B는 영문자 K 입니다. 유니코드에서는 Latin(라틴 문자)으로 표기되어 있습니다.

찾을 코드 번호를 입력하고 [Go]를 클릭!

찾을 코드 번호를 입력하고 [Go]를 클릭!


정상적으로 찾아준 화면

정상적으로 찾아준 화면

위의 화면은 정상적으로 찾아준 화면입니다. http로 시작하는 곳을 살펴보면, 우선 http://www.unicode.org/charts/PDF/U<입력한 코드 번호가 들어 있는 영역>.pdf 라는 형식을 가지고 있습니다. 그리고 그 뒤에 (0.4 MB)라는 형태로 pdf 파일의 용량을 표시하고 있지요.

그렇다면 존재하지 않은 유니코드 번호를 입력하면 어떻게 될까요? ᄒᆞᆫ글에서 가끔 나타나는 F로 시작하는 유니코드 주소를 입력해 보겠습니다. F0704를 입력하기로 하죠.

존재하지 않으리라 여겨지는 코드 번호를 입력하고 [Go]를 클릭!

존재하지 않으리라 여겨지는 코드 번호를 입력하고 [Go]를 클릭!


얼핏 보면 정상적으로 찾아준 듯싶은 화면

얼핏 보면 정상적으로 찾아준 듯싶은 화면

위 화면은 얼핏 보면 정상적으로 찾아주었다고 여겨집니다. 하지만 결정적으로 용량 부분이 특이합니다. 바로 (0.0 MB)이라고 되어 있지요. 펄 스크립트가 자동으로 생성해 주는 웹페이지이기 때문에 나타나는 현상으로 여겨집니다. 아무튼 저렇게 용량이 0.0 MB이면 파일이 없는 것이고, 따라서 그 번호를 가진 유니코드는 현재 존재하지 않습니다.

유니코드의 코드표 - 언어별 찾기

유니코드 문자표 페이지에서 자신이 자주 쓰는 언어의 코드표만 받아서 보면 됩니다. 클릭하면 다운로드가 되거나 웹브라우저에서 바로 볼 수 있습니다.

하나하나 받기 귀찮은 사람은 http://www.unicode.org/charts/PDF/ 라는 주소에서 플래시겟 등의 다운로드 관리자를 사용하여 몽땅 내려받을 수도 있습니다.

유니코드의 코드표 전체 찾기

유니코드 전체의 코드 번호 및 코드표를 찾고 싶다면 The Unicode Standart를 클릭한 뒤, 이어서 Latest Version을 클릭합니다. 그러면 현재 존재하는 가장 최신 버전의 웹페이지로 이동합니다.

유니코드 최신 버전 페이지 찾아 가기

유니코드 최신 버전 페이지 찾아 가기


Unicode 5.2.0 웹페이지 - 현재 최신 버전입니다.

Unicode 5.2.0 웹페이지 - 현재 최신 버전입니다.

여기에서 우리가 찾으려는 자료는 유니코드 코드표 전체입니다. 앞서 유니코드 문자표 페이지에서도 유니코드 코드표 전체를 보았습니다만, 여기에서 찾는 것은 그렇게 나뉜 자료가 아니라 한데 묶인 자료입니다. 그렇게 유니코드 문자가 한데 묶인 자료를 유니코드 캐릭터 데이터베이스(the Unicode Character Database (UCD))라고 부릅니다.

왼쪽에 보이는 5.2.0 UCD 부분이 우리가 찾는 그것입니다.

왼쪽에 보이는 5.2.0 UCD 부분이 우리가 찾는 그것입니다.

왼쪽에 있는 사항을 설명하자면 다음과 같습니다.

  • (files) : 유니코드 표준 5.2.0의 최종 데이터 파일을 모아두었습니다. 우리가 찾으려는 파일도 여기에 있습니다. 세 개의 하위 디렉터리가 있는데, "ucd" 디렉터리는 UCD의 데이터 파일이 들어 있고, "charts" 디렉터리에는 유니코드 5.2.0 표준에 정확히 대응하는 코드표PDF 파일 형태로 들어 있습니다(The "charts" subdirectory contains an archival set of pdf code charts corresponding exactly to Version 5.2.0.). 마지막으로 "ucdxml" 디렉터리에는 UCD의 XML 버전이 들어 있습니다.
  • (about) : UCD에 대한 대략적인 설명이 들어 있습니다.
  • 5.2.0 Zipped files (for bulk download) : 유니코드 5.2.0 표준의 주요 부분으로 이루어진 Zip 파일을 다운로드합니다.

(files)을 클릭하여 디렉터리에 들어갑시다.

유니코드 표준 5.2.0의 최종 데이터 파일이 있는 디렉터리

유니코드 표준 5.2.0의 최종 데이터 파일이 있는 디렉터리

위 그림에서 charts를 클릭합니다. 이 모습은 웹브라우저마다 달라지므로 대충 비슷한 형태나 낱말을 찾아야 합니다.

위의 화면에 나타난 PDF 파일 3개가 전부입니다. 그런데 용량이 장난 아니게 큽니다. 이제까지 멀티미디어 파일이 아닌 일반 문서 파일이 저렇게 큰 것은 처음 봤습니다.

다운로드할 때 속도는 그리 빠른 편이 아니므로 느긋하게 기다려야 합니다. 실제 코드표에 해당하는 파일은 CodeCharts-MulticolHan.pdf 파일(71M, 한자 영역 데이터), CodeCharts-noHan.pdf 파일(15M, 한자 영역을 제외한 데이터)입니다. 이 두 파일은 무려 1천 쪽이 넘는 방대한 분량이므로 그냥 그러려니 하십시오. 그리고 RSIndex.pdf 파일(24M, 완벽한 유니한 부수별 한자 색인(Unihan Radical Stroke Index)) 파일입니다. 이것도 나름대로 쓸모가 있습니다.

이 파일을 모두 다 받아서 적당한 곳에 둔 뒤 PDF 파일 뷰어로 살펴보면 됩니다. 사용은 각자 알아서 하기 바랍니다. 저는 물가에 데려갈 수는 있어도 물을 떠먹일 재주는 없는 사람입니다.

덧붙이는 말

앞으로 이 코드표 파일을 참조하는 일이 생길 수도 있습니다. 그러므로 받아 두면 게시글을 읽는 데도 도움이 되리라 생각합니다. 그리고 PDF 뷰어 프로그램은 어도비 어크로뱃 리더가 가장 좋습니다. 물론 유니코드 컨소시엄에서 받은 자료만 본다면 다른 뷰어도 좋다. 하지만 현재까지 옛한글 등을 보기에는 가장 좋은 PDF 뷰어입니다. 단점은 지나치게 무거워서 자주 쓰기에는 여러 모로 부담이 되는 프로그램입니다.

관련 문서

내부 문서

외부 문서

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

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

한컴오피스 베타버전 버그 25 - 문자표 버그 2

ᄒᆞᆫ글2010 베타버전과 유니코드 버그 1 및 문자표 버그 1 문서를 작성하며 ᄒᆞᆫ글2010 베타버전에서 검증하는 과정에서 문자표와 관련한 황당한 동작을 발견했습니다.

벌레의 유형

ᄒᆞᆫ글 씨! 똑같은 문자표 아이콘이건만, 왜 때와 장소에 따라 역할이 달라지나요? 언제나 변치 않는 녀석이 더 좋답니다.

개발자의 답변

2010년 1월 25일 버그 리포팅을 한 상태입니다.

벌레의 발견

일단 동영상 두 개를 보고 나서 설명하겠습니다.[각주:1]

위 동영상(사례 1)은 ᄒᆞᆫ글 아래에 다른 프로그램이 없는 경우입니다.

위 동영상(사례 2)은 ᄒᆞᆫ글 밑에 다른 프로그램이 있는 경우입니다.

아무튼 두 경우 모두 리본 메뉴가 완전히 나타난 상태에서만 정상 작동하고, 리본 메뉴가 접힌 상태에서 메뉴를 클릭하여 임시로 펼쳤을 때에는 약간 이상한 동작을 하였습니다.

사례 1 살펴보기

일단 ᄒᆞᆫ글에서 한 글자를 선택하여 범위를 지정하고 문자표 보기(단축키는 Ctrl+F10)를 합니다. 그러면 범위를 지정한 글자를 문자표에서 찾아줍니다. 그런데 이 작업을 마우스로 아이콘을 클릭하거나 메뉴의 항목을 클릭함으로써 작동시켜 보았더니 위의 동영상에 나타난 벌레가 나타나더군요.

일단 앞서 다운로드한 그 문서(Unicode-Test-1.hwp)를 이용하여 봅시다. 아니면 직접 만들어서 시험해도 됩니다.

ᄒᆞᆫ글 아래에 아무것도 없는 상태

ᄒᆞᆫ글 아래에 아무것도 없는 상태

위 그림처럼 ᄒᆞᆫ글이 최상위에 위치한 경우의 반응을 먼저 보겠습니다.

리본 메뉴를 접은 상태에서 한 글자를 블럭 지정

리본 메뉴를 접은 상태에서 한 글자를 블럭 지정

위와 같이 한 글자를 블럭 지정합니다. 그 뒤에 입력 메뉴로 마우스를 가져갑니다.

입력 메뉴의 마우스를 가져가기 전 모습(왼쪽)

입력 메뉴의 마우스를 가져가기 전 모습

입력 메뉴의 마우스를 가져가져간 뒤의 모습(오른쪽)

입력 메뉴의 마우스를 가져가져간 뒤의 모습


입력 메뉴 확대

입력 메뉴 확대

위의 확대 그림에서 1번 쪽(글자 부분)을 클릭하면 리본 메뉴임시로 나타나고, 2번 쪽(▼ 표시 부분)을 클릭하면 풀다운 메뉴가 나타납니다.

리본 메뉴를 접은 상태에서 메뉴를 클릭하여 임시로 리본 메뉴를 불러온 화면

리본 메뉴를 접은 상태에서 메뉴를 클릭하여 임시로 리본 메뉴를 불러온 화면

위 그림에 나타난 바와 같이, (1) 1번 쪽(글자 부분)을 클릭하여 리본 메뉴를 임시로 불러오고, (2) 문자표 아이콘의 아랫부분에 있는 문자표라는 글자를 클릭합니다. 아래 그림에서는 2번의 화살표가 가리키는 곳입니다. 실수로 1번의 아이콘을 클릭하면 문자표를 이용하여 입력했던 맨 마지막 문자(그림에서는 네모로 표시된 j자 비슷한 모양인데, 이는 U+01D457 [각주:2]에 해당한다.)를 입력하게 되므로 조심해야 합니다.

문자표 글자를 클릭

문자표 글자를 클릭

(3) 마지막으로 맨 아래에 보이는 문자표...라는 부분을 클릭합니다.

위와 같은 과정을 거쳐서 정확히 실행했다면 문자표가 한 번 나타났다가 번개처럼 사라지는 희한한 현상을 목격할 수 있습니다.

문자표 글자를 클릭한 뒤 약간의 변화가 생기고 나서 마지막에 나타나는 화면

문자표 글자를 클릭한 뒤 약간의 변화가 생기고 나서 마지막에 나타나는 화면

그밖에 다른 점이 하나 더 있습니다.

문자표를 실행하기 전 제목 표시줄

문자표를 실행하기 전 제목 표시줄


문자표를 실행한 뒤 제목 표시줄

문자표를 실행한 뒤 제목 표시줄

제목 표시줄의 글자가 문자표를 실행하기 전에는 진하고 밝은 색이었습니다. 그런데 문자표를 실행한 뒤에는 연하고 어두운 색으로 바뀌었습니다.

이는 ᄒᆞᆫ글2010 프로그램 창이 마우스 포커스를 잃어버렸음을 뜻합니다. 다르게 말하면, 활성 상태의 ᄒᆞᆫ글2010 창이 비활성화되었음을 뜻합니다. 쉽게 말하면, ᄒᆞᆫ글 프로그램 창의 상태가 작업 중에서 작업 중이 아닌 상태로 바뀌었다는 뜻이지요.

  • 참고 : 위의 과정에서 한 문자를 블럭으로 지정할 필요는 없습니다. 위의 과정은 이 벌레를 발견한 과정을 재현하기 위해 블럭을 지정했으며, 블럭 지정을 하지 않아도 이 벌레는 나타납니다.

사례 2 살펴보기

사례 2에서는 ᄒᆞᆫ글 프로그램 창 아래에 다른 프로그램 창이 존재할 경우입니다. 이 경우도 앞서 말한 대로 굳이 글자에 블럭을 지정할 필요는 없습니다.

문자표를 부르기 직전

문자표를 부르기 직전


문자표를 부른 뒤 포커스를 잃는 도중!

문자표를 부른 뒤 포커스를 잃는 도중!


잠시 후 포커스를 완전히 잃어버린 ᄒᆞᆫ글 창

잠시 후 포커스를 완전히 잃어버린 ᄒᆞᆫ글 창

잠시 그대로 놔두자 포커스를 완전히 잃어버리고, ᄒᆞᆫ글 창 아래에 있던 메모장2(Notepad2) 프로그램이 마우스 포커스를 가져갑니다.

벌레 분석

무슨 이유에서인지 모르겠으나, 리본 메뉴가 활성 상태가 아닌, 임시로 리본 메뉴를 불러온 상태에서는 문자표를 정상적으로 호출하지 못한다고 여겨집니다. 아울러 문자표를 정상적으로 불러오지 못한 경우에는 문자표의 포커스 상태(또는 Z인덱스 상태)가 아닌 ᄒᆞᆫ글 프로그램 창의 포커스 상태(또는 Z인덱스 상태)를 수정해 버린다고 여겨집니다.

관련 벌레

이 벌레와 관련이 있는 벌레는 다음과 같습니다.

관련 문서

내부 문서

외부 문서

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


  1. 하루 종일 동영상 인코딩~! 문서에서 말한 그 동영상입니다. 10메가바이트 이내로 줄이느라 고생 좀 했습니다. [본문으로]
  2. U+는 유니코드임을 나타내는 접두어입니다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

한컴오피스 베타버전 버그 24 - 유니코드 버그 1 및 문자표 버그 1

ᄒᆞᆫ글2010 베타버전을 사용하다 보니 문자표와 관련하여 이해하기 힘든 동작을 발견했습니다.

벌레의 유형

ᄒᆞᆫ글 씨! 문자표에서 16진수 6자리로 이루어진 유니코드 번호는 나타낼 수 있어도 입력은 안 됩니까? 입력도 되게 하면 안 되겠니?

개발자의 답변

2010년 1월 23일 버그 리포팅을 한 상태입니다.

벌레의 발견

위키백과의 한컴 2바이트 코드[각주:1] 문서에 나타난 사항을 검증하면서 발견하였습니다. 검증 과정에서, 이 문자표는 또 다른 판도라 상자일 수도 있다는 점을 알게 되었습니다.

문자 코드의 코드 번호 붙여넣기 및 직접 입력

문자 코드의 코드 번호붙여넣기를 하느냐, 아니면 직접 입력하느냐에 따라 문자표의 반응이 달랐습니다.

문자표에서 HNC 코드유니코드를 각각 붙여넣기직접 입력을 하면서 어떻게 문자표가 반응하는지를 살펴보기로 하겠습니다.

HNC 코드와 유니코드를 문자표에 입력할 예시

HNC 코드와 유니코드를 문자표에 입력할 예시

위와 같이 두 번의 예시가 있습니다. 이것을 이용하여 실험을 해 봅시다.
아, 실험에 앞서 파일을 먼저 다운로드해 주시기 바랍니다.

HNC 코드 붙여넣기

문자표에 HNC 코드를 붙여넣기로 입력해 보겠습니다.

문자표를 처음 실행했을 때의 위치

문자표를 처음 실행했을 때의 위치

문자표를 처음 실행하면 위와 같이 전각 기호(일반)에 위치하게 됩니다. 물론 위와는 달리 최근 사용한 문자는 텅 비어 있겠지요.
위 그림에서 빨간 네모로 표시한 HNC 코드 부분에 알맞은 코드 번호를 넣으면 됩니다. 그 작업은 아래와 같은 순서로 하겠습니다.

  1. 예시에서 HNC 코드라고 한 부분의 코드에서 파란색 부분만을 복사하여 붙여넣기를 합니다. 앞에 붙인 0x는 복사하지 않습니다. 그럼 341C를 복사하겠습니다.
  2. 일단 문자표의 문자 영역을 다른 곳으로 옮겨 아무 문자나 하나 입력(더미 문자 입력)하겠습니다. 이는 문자 영역이 같을 때와 다를 때의 동작이 다르기 때문에 하는 조치입니다.

    다른 문자 영역의 문자를 선택하여 입력

    다른 문자 영역의 문자를 선택하여 입력


    다른 문자 영역의 문자를 선택하여 입력한 결과

    다른 문자 영역의 문자를 선택하여 입력한 결과

  3. 다시 문자표를 불러서 붙여넣기를 합니다.

    문자표를 불러오면 방금 사용한 문자를 표시하고 있습니다. 일단 HNC 코드 부분을 지웁니다.

    문자표를 불러오면 방금 사용한 문자를 표시하고 있습니다. 일단 HNC 코드 부분을 지웁니다.


    HNC 코드 부분에 방금 복사한 341C를 붙여넣기로 입력한 순간 바뀌는 문자표

    HNC 코드 부분에 방금 복사한 341C를 붙여넣기로 입력한 순간 바뀌는 문자표

  4. 위의 작업을 확인하기 위해, 이번에는 531C를 붙여넣기로 입력합니다.

    문자표에 531C를 붙여넣기로 입력

    문자표에 531C를 붙여넣기로 입력


    HNC 코드 붙여넣기로 입력 최종 결과

    HNC 코드 붙여넣기로 입력 최종 결과

위에서 검증했듯이 HNC 코드에서는 붙여넣기로 입력하면, 그 순간 문자 영역 및 문자 선택에서 방금 입력한 코드 번호에 해당하는 문자를 가리키게 됩니다.

HNC 코드 직접 입력

이번에는 HNC 코드를 직접 입력해 보겠습니다. 순서는 따로 설명하지 않겠습니다. 직접 해 보시기 바라며, 결과는 아래와 비슷하게 나와야 합니다.

531을 입력해도 아무런 변화가 없다.

531을 입력해도 아무런 변화가 없다.


531를 입력한 뒤 C를 마저 입력해야 순간이동을 한다.

531를 입력한 뒤 C를 마저 입력해야 순간이동을 한다.


HNC 코드를 직접 입력한 최종 결과

HNC 코드를 직접 입력한 최종 결과

HNC 코드에서는 직접 입력하더라도 순간이동을 해서 그 코드 번호에 해당하는 문자를 찾아 줍니다.

유니코드 붙여넣기로 입력

이번에는 유니코드를 문자표에 붙여넣기로 입력해 보겠습니다.

  1. 일단 처음에는 다른 문자 영역에서 한 문자를 입력합니다.

    아무 문자나 하나 입력

    아무 문자나 하나 입력

  2. 유니코드를 복사하여 붙여넣기로 입력합니다. 이때도 HNC 코드와 마찬가지로 앞에 붙은 U+는 복사하지 않습니다. 여기에서는 3010을 복사하겠습니다.

    HNC 코드 붙여넣기에서처럼 순간 이동에 성공!

    HNC 코드 붙여넣기에서처럼 순간 이동에 성공!

  3. 이번에는 20850를 복사하여 붙여넣기를 합니다.

    문자표에서 유니코드 20850 대신에 2085를 찾아 줍니다.

    문자표에서 유니코드 20850 대신에 2085를 찾아 줍니다.

유니코드를 붙여넣기로 입력한 최종 결과

유니코드를 붙여넣기로 입력한 최종 결과

위에서 검증했듯이 유니코드에서는 붙여넣기로 입력하면, 4자리 16진수로 이루어진 코드 번호를 입력한 경우에는 입력하는 순간 문자 영역 및 문자 선택에서 방금 입력한 코드 번호에 해당하는 문자를 가리키게 됩니다. 그러나 5자리 16진수로 이루어진 코드 번호를 입력한 경우에는 입력하는 순간 가장 아래의 한 자리는 빼먹고 위의 네 자리만 받아들여 유니코드를 찾아줍니다.

유니코드 직접 입력

이번에는 유니코드를 직접 입력해 보겠습니다. 순서는 따로 설명하지 않겠습니다.

유니코드를 네 자리 입력한 뒤에는 더 이상 입력을 받지 않습니다.

유니코드를 네 자리 입력한 뒤에는 더 이상 입력을 받지 않습니다.

위와 같은 화면에서 어쩔 수 없이 [넣기]를 클릭했습니다.

유니코드를 직접 입력한 최종 결과

유니코드를 직접 입력한 최종 결과

위에서 검증했듯이 유니코드에서는 직접 입력하면, 앞서 붙여넣기로 입력했을 때와 마찬가지로, 4자리 16진수로 이루어진 코드 번호를 입력한 경우에는 입력하는 순간 문자 영역 및 문자 선택에서 방금 입력한 코드 번호에 해당하는 문자를 가리키게 됩니다. 그러나 5자리 16진수로 이루어진 코드 번호를 입력한 경우에는 입력하는 순간 가장 아래의 한 자리는 빼먹고 위의 네 자리만 받아들여 유니코드를 찾아줍니다.

벌레 분석

이 벌레의 원인에 대해서는 알 수 없었습니다. 유니코드의 다섯 번째 자리의 입력이 왜 안 되는지 이해할 수가 없었습니다. 분명히 해당 문자의 코드를 알려줄 때에는 네 자리를 넘겨 다섯 자리인 16진수로도 보여주기 때문입니다.

일단 유니코드의 코드 번호를 보고 싶은 글자에 범위를 지정합니다.

일단 유니코드의 코드 번호를 보고 싶은 글자에 범위를 지정합니다.

분명히 코드 번호가 6자리로 나타납니다.

분명히 코드 번호가 6자리로 나타납니다.

ᄒᆞᆫ글 씨! 문자표에서 16진수 6자리로 이루어진 유니코드 번호는 나타낼 수 있어도 입력은 안 됩니까? 입력도 되게 하면 안 되겠니?

비슷한 벌레

(없음)

관련 문서

내부 문서

외부 문서

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


  1. 앞으로는 한컴 2바이트 코드HNC 코드로 줄여 부르겠습니다. [본문으로]
글쓴이는 koc/SALM입니다.
본문에 저작권에 대한 사항이 나타나지 않거나, 저작권이 BY-SA로 표기되어 있다면,
이 글은 GFDL로 공개한 글입니다.

영어나 외국어로 된 프로그램의 메시지을 한글로 바꾼 뒤에 그 언어 정보는 원래대로 두는 실수를 하는 때가 있다. 보통 때는 전혀 문제가 없으나, 간혹 문제가 생기는 경우도 있습니다. 이렇게 언어 정보가 틀려 있는 프로그램의 언어 정보를 리소스 해커(Resource HackerTM)를 이용하여 고쳐보도록 하겠습니다.

먼저 Total Commander Korean Forum :: XPG Community 사이트에서 NFO Viewer 플러그인을 다운로드합니다.

언어 정보 편집 순서

프로그램 리소스에서 언어 정보를 고치는 작업의 순서는 다음과 같습니다.

  1. 프로그램의 언어 정보 고치기
  2. 메뉴의 언어 정보 고치기
  3. 대화상자의 언어 정보 고치기
  4. 대화상자의 글꼴 정보 고치기

프로그램의 언어 정보 고치기

리소스 해커에서 파일을 열어서 가장 먼저 할 일은 프로그램 전체에 적용되는 언어 정보를 고치는 작업입니다. 프로그램 전체에 적용되는 언어정보는 아래 자료 화면에서, 주로 왼쪽 창에서 Version Info라는 항목을 살펴보면 찾을 수 있습니다.

버전 정보(Version Info)와 언어 정보

버전 정보(Version Info)와 언어 정보

다음과 같은 순서로 작업을 합니다.

  1. nfoviewer_kor.wlx 파일을 리소스 해커에서 엽니다.
  2. Version Info를 클릭하고, 1을 클릭하고, 2052를 클릭하면 위와 같은 화면을 볼 수 있습니다.
  3. 오른쪽 창에서 BLOCK "StringFileInfo" 부분과 BLOCK "VarFileInfo" 부분을 찾습니다. "Translation", 0x0804 0x04B0 부분에서 앞의 십육진수는 언어 정보이고, 뒤의 십육진수는 코드페이지 정보입니다.
  4. MSDN :: List of Localized MS Operating Systems 문서를 참조하여 언어 정보(LCID)와 코드페이지 정보를 알아둡니다.
    • 참고로 한국어의 LCID는 십육진수로 0x0412, 십진수로는 1042입니다. 그리고 코드페이지는 십진수로 949, 십육진수로는 0x03B5입니다. 다만 이번 경우에는 0x04B0(utf-16, 유니코드)을 그대로 유지합니다.
  5. "Translation", 0x0804 0x04B0 부분을 "Translation", 0x0412 0x04B0라고 고칩니다.
  6. BLOCK "080404b0" 부분을 BLOCK "041204b0"라고 고칩니다.
  7. 왼쪽 창에서 언어 정보(LCID)를 2052(중국어 간자체)에서 1042(한국어 통합완성형)로 고칩니다.

    언어 변경

    언어 변경


    새 리소스 언어 입력

    새 리소스 언어 입력

  8. 스크립트 컴파일을 클릭한다. 이 작업을 하면 지금까지 했던 작업 결과가 적용된다.
    스크립트 컴파일
  9. 저장한다.
    저장

메뉴의 언어 정보 고치기

메뉴는 대부분 글꼴 정보를 포함하고 있지 않습니다. 그 까닭은 메뉴는 대부분 비주얼스튜디오와 같은 IDE(개발 환경)에서 자동으로 만들어주기 때문이며, 또한 그 과정에서 시스템에서 기본으로 정해준 글꼴을 사용하도록 설정되어 있기 때문입니다. 물론 프로그램을 짤 때 사용자가 수동으로 바꿀 수는 있으며, 또한 메뉴 글꼴 전체를 사용자 시스템에서 고칠 수도 있습니다.

[디스플레이지 등록 정보]의 [고급 화면 배색]에서 [메뉴] 항목을 수정하는 화면

[디스플레이지 등록 정보]의 [고급 화면 배색]에서 [메뉴] 항목을 수정하는 화면

이 글에서는 그런 시스템 정보는 전혀 다루지 않지만, 참고 삼아 알려드렸습니다.

메뉴 항목과 언어 정보

메뉴 항목과 언어 정보

메뉴에 대한 언어 정보를 고치는 과정은 다음과 같습니다.

  1. nfoviewer_kor.wlx 파일을 리소스 해커에서 엽니다.
  2. Version Info를 클릭하고, 101을 클릭하고, 2052를 클릭하면 위와 같은 화면을 볼 수 있습니다.
  3. MSDN :: List of Localized MS Operating Systems 문서를 참조하여 언어 정보(LCID)와 코드페이지 정보를 알아둡니다.
  4. 왼쪽 창에서 언어 정보(LCID)를 2052(중국어 간자체)에서 1042(한국어 통합완성형)로 고칩니다.
  5. 오른쪽 창에서 LANGUAGE LANG_CHINESE, 0x2 부분을 찾습니다. 이것을 LANGUAGE LANG_KOREAN, 0x1라고 고칩니다. 이때 마지막 0x2SUBLANG_KOREAN 또는 0x01로 고쳐도 됩니다.
  6. 스크립트를 컴파일한 뒤에 저장합니다. 이때 스크립트를 컴파일하면 LANGUAGE LANG_KOREAN, SUBLANG_KOREAN 이라고 바뀐 부분이 LANGUAGE LANG_KOREAN, 0x1로 바뀝니다. 이것은 정상이므로 걱정하지 않아도 됩니다.

이 프로그램(nfoviewer_kor.wlx)에는 메뉴가 하나뿐이지만, 대부분의 프로그램은 메뉴가 여러 개로 되어 있다.

대화상자의 언어 정보 고치기

프로그램을 만들게 되면 현재 화면에 보이는 창으로 작업을 할 수 없는 때가 생기거나 메시지를 사용자에게 전달해야 하는 때가 있다. 이때 생성하는 것이 바로 대화상자이다. 대화상자에는 언어 정보와 함께 글꼴 정보가 함께 포함되는 때가 많다.

이 프로그램(nfoviewer_kor.wlx)에는 대화상자가 하나뿐이지만, 대부분의 프로그램은 대화상자가 여러 개로 되어 있다.

대화상자 항목과 언어 정보

대화상자 항목과 언어 정보

작업하는 순서는 다음과 같습니다.

  1. 앞서 작업한 메뉴를 참조하여 대화상자언어 정보(LCID)와 코드페이지 정보를 고칩니다.
  2. 글꼴 정보에서 FONT 9, "宋?"FONT 9, "굴림" 또는 FONT 10, "굴림"으로 고칩니다.
  3. 스크립트를 컴파일한 뒤에 저장합니다.

완료

그밖에 살펴야 할 사항

일단 이렇게 바꾸었으면, 메시지가 정상적으로 출력되는지를 확인해야 합니다. 이 작업에 앞서 반드시 원본을 백업해 두기 바랍니다. 백업은 선택이 아닌 필수입니다.

관련 문서

내부 문서

외부 문서

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


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

Total Commander Korean Forum :: XPG Community 사이트에서 플러그인을 살펴보다가 NFO Viewer 플러그인의 한글화된 파일이 있어서 다운로드를 하게 되었다. 한글화가 얼마나 잘 되었는지 알고 싶어서 리소스 해커(Resource HackerTM) 프로그램을 이용하여 열어보았다.

그런데 한글화된 그 플러그인의 언어 정보가 한글이 아닌 중국어였다. 다시 말해 대화상자 등의 메시지는 한글로 바꾸었으나, 정작 가장 중요한 언어 정보는 중국어인 상태로 놔두었다. 이럴 경우 한글 윈도에서는 제대로 보이지만, 중국어 윈도에서는 한글이 깨져서 나타날 수도 있다.

  • 참고 : 이 글에서는 실제로 수정하는 방법에 대해서는 다루지 않습니다.

언어 정보는 어디에?

리소스 해커에서 파일을 열면 언어 정보는 어디에서 살필 수 있을까? 이 정보는 주로 왼쪽 창에서 Version Info라는 항목을 살펴보면 알 수 있다. 대부분의 프로그램의 리소스에는 이 항목이 나타나고 있습니다.

버전 정보(Version Info) 부분에 나타난 언어 정보

버전 정보(Version Info) 부분에 나타난 언어 정보

우선 왼쪽 창에서 파랑게 된 숫자 부분을 보자. 2052라고 되어 있다. 오른쪽 창에서 BLOCK "StringFileInfo" 부분과 BLOCK "VarFileInfo" 부분을 보자. 특히 밑줄을 그은 부분을 잘 살펴야 한다.
BLOCK "StringFileInfo" 부분에서 밑줄 그은 BLOCK "080404b0" 부분과 아래의 BLOCK "VarFileInfo" 부분의 VALUE "Translation", 0x0804 0x04B0 부분을 살펴보면 무언가 눈에 들어오는 게 있다. 그렇다. 거기에 나타난 십육진수의 값이 같다. 그렇다면 위의 2052 부분은? 바로 0x0804이다. 엄밀히 말하면 왼쪽 창의 십진수 값대로 십육진수 값을 정하게 된다. 가끔 이 값이 틀리는 경우도 있는데, 그렇더라도 대부분 정상적으로 메시지를 출력해 준다. 다만 알 수 없는 문제가 생길 수도 있으므로 혹시라도 발견한 경우가 있다면, 그러한 값을 고쳐 주면 된다.

이때 "Translation", 0x0804 0x04B0 부분에서 앞의 십육진수는 언어 정보이고, 뒤의 십육진수는 코드페이지 정보입니다.

언어 정보

뭉뚱그려서 언어 정보라고 썼지만, 마이크로소프트에서는 이것을 LCID(Locale Identifier)라고 부릅니다. 이 정보는 엄밀히 말하면 언어 정보라기보다는 지역 정보와 언어 정보의 혼용에 가깝습니다.

인터넷에서 검색하여 찾아낸 언어 정보는 다음과 같습니다. 원본 페이지는 Language (Resource)입니다. 원문에는 8자로 되어 있으나, 코드페이지 부분이 잘못되어 있어서 삭제하였다.

[code text; tab-size:32; smart-tabs: true] Arabic 0401 Bulgarian 0402 Catalan 0403 Traditional Chinese 0404 Czech 0405 Danish 0406 German 0407 Greek 0408 U.S. English 0409 Castilian English 040A Finnish 040B French 040C Hebrew 040D Hungarian 040E Icelandic 040F Italian 0410 Japanese 0411 Korean 0412 Dutch 0413 Norwegian - Bokm?l 0414 Polish 0415 Brazilian Portugese 0416 Phaeto-Romanic 0417 Romanian 0418 Russian 0419 Croato-Serbian (Latin) 041A Slovak 041B Albanian 041C Swedish 041D Thai 041E Turkish 041F Urdu 0420 Bahasa 080A Simplified Chinese 0804 Swiss German 0807 U.K. English 0809 Mexican Spanish 080A Belgian French 080C Swiss Italian 0810 Belgian Dutch 0813 Norwegian - Nynorsk 0814 Portugese 0816 Serbo-Croatian (Cyrillic) 081A Canadian French 0C0C Swiss French 100C [/code]

위의 자료에서 십육진수 0x0804Simplified Chinese를 나타낸다. 이때 Simplified Chinese중국어 간체자의 영어 표기이다. 이것을 한글화 한다면 메시지뿐만 아니라 이 정보도 바꾸어 주어야 한다. 그러나 왼쪽 창에 나타나는 값(LCID 값)을 고치려면 언어 변경을 해야만 한다. 변경할 때는 십진수와 십육진수를 혼동하지 않아야 합니다.

좀 더 자세한 정보는 MSDN :: List of Localized MS Operating Systems 문서를 살펴보기 바랍니다.

코드페이지 정보

코드페이지 정보를 알아보기 쉽게 정리한 자료는 MSDN에서 찾을 수 있다. MSDN 자료는 십진수로 나타나 있으므로 십육진수를 십진수로 고쳐서 보아야 한다. 0x04B0은 십진수 1200으로 바꿀 수 있다.

Identifier .NET Name 추가 정보
1200 utf-16 Unicode UTF-16, little endian byte order (BMP of ISO 10646); available only to managed applications

윈도에서 한글화를 할 때 한글로 나타낼 수 있는 코드페이지는 1200(04b0, utf-16), 949(03B5, ks_c_5601-1987), 1361(0551, Johap) 등이며, 이 가운데 1200(04b0, utf-16), 949(03B5, ks_c_5601-1987)이 주로 쓰인다. 유니코드를 지원한다면 1200(04b0, utf-16)을 써야 하며, 유니코드를 지원하지 않는다면 949(03B5, ks_c_5601-1987)를 써야 한다.
위의 경우 처음부터 유니코드로 되어 있으므로 그것을 그대로 유지하여 쓰는 것이 좋다.

좀 더 자세한 정보는 MSDN :: List of Localized MS Operating Systems 문서를 살펴보기 바랍니다.

그밖에 살펴야 할 사항

리소스 해커를 이용하여 프로그램을 한글화할 때 그밖에도 살펴야 할 사항이 있다.

언어 정보

2052가 LCID 값이며, LANG_CHINESE 문자열이 언어 정보를 나타내는 문자열이다.

왼쪽 창의 2052 값이 LCID 값이며, LANG_CHINESE 문자열이 언어 정보를 나타내는 문자열이다.

가장 먼저 앞서 말한 LCID 값을 고쳐주어야 한다. 왼쪽 창에 나타난 LCID 값을 고치려면 언어 변경을 해야만 합니다. 변경할 때는 십진수와 십육진수를 혼동하지 않아야 합니다.

언어 정보를 가진 문자열 및 상수

각각의 메시지마다 언어 정보가 들어 있습니다. 바로 언어 정보를 가진 문자열이죠. MSDN :: Language Identifier Constants and Strings 문서에서 그 값을 찾을 수 있습니다. 이 값을 참조하여 메시지마다 그 정보를 고쳐 주어야 합니다. 이 값은 MS의 비주얼스튜디오가 아니더라도 공통으로 사용되고 있으므로 외우지는 못하더라도 그런 것이 있다는 사실은 기억해야 합니다. 만약 이것을 고친 뒤에 제대로 나오지 않는다면, 문자열을 상수값으로 고쳐주면 됩니다.

예컨대, 그림에서 LANG_CHINESE 대신에 LANG_KOREAN를 썼는데, 화면에 한글을 제대로 표시하지 못한다면, 그것의 실제 값인 0x12를 쓰면 한글을 올바르게 나타낼 수 있다.
한편 위 그림에서 LANG_CHINESE 뒤에 오는 십육진수는 SUBLANG이라고 하며, 하나의 언어에 여러 가지 문자 코드가 존재할 때 사용한다. 이 SUBLANG 값은 앞서 오는 언어 상수 값에 영향을 받으므로, 이 값이 같다고 같은 의미를 가진다고 오해하지 않아야 한다. 다시 말해 다음 두 코드에서 0x1은 서로 다른 의미를 가진다.

[code cpp] LANGUAGE LANG_KOREAN, 0x1 [/code] [code cpp] LANGUAGE LANG_CHINESE, 0x1 [/code]

참고로 위 화면의 LANGUAGE LANG_CHINESE, 0x2는 다음과 같다.

[code cpp] LANGUAGE LANG_CHINESE, SUBLANG_CHINESE_SIMPLIFIED [/code]

글꼴 바꾸기

마지막으로 글꼴을 살펴야 합니다. 간혹 글꼴 정보가 엉뚱하게 되어 있는 경우가 있다. 보통은 시스템 기본값을 쓰도록 글꼴을 설정하지 않을 때도 있는데, 차라리 그럴 경우에는 괜찮다. 그런데 엉뚱한 글꼴을 지정한 경우에는? 시스템에서 잘 처리해 주기를 바라야 한다.

위 그림에서는 글꼴 정보가 FONT 9, "宋?"라고 나타나 있습니다. 이것은 아마도 중국어의 송체를 가리킵니다. 메모장 등에서 SimSun으로 나타나는 글꼴이죠. 이것을 "굴림" 또는 "굴림체"로 바꾸어 주면 좋습니다.
그런데 이때 주의할 점이 있습니다. 보통 외국어 글꼴이 9포인트이며, 한글로는 10포인트로 바뀔 경우가 많습니다. 그러나 강제로 "굴림"과 같은 글꼴을 지정하면 글꼴 크기는 그대로 9포인트가 됩니다. 이때 10포인트로 바꾸어도 되고, 그대로 두어도 됩니다. 일단 바꾼 뒤 화면에 나타나는 모습을 보고 다시 고쳐도 됩니다.

관련 문서

외부 문서

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


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

스프링노트에서 작성한 글을 블로그에 게시하고 나면 가끔 물음표(?)로 바뀌는 일이 있다. 처음에는 내가 유니코드KS X 1001(흔히 KS C 5601로 불린다.) 코드에 들어 있지 않은 코드를 게시한 것으로 여겼다. UTF-8 표기법으로 나타낼 수 없는 문자를 U+003F(?, 물음표)나 U+FFFD(�, 유니코드 대치 문자)로 치환하는 것은 UTF-8에서의 오류 처리이기 때문이다. 그러다가 스프링노트 측에서 또는 티스토리 측에서 잘못 게시했을 수도 있다는 생각을 갖게 되었다.

벌레의 유형

  • 벌레인지 아닌지 알 수 없었다. 이 사례는 보는 관점에 따라서는 버그일 수도 있고 아닐 수도 있다.

벌레의 발견

지난 11월 18일 알까기 1 - 알툴즈 까기 문서를 작성하다가 뮤토런트의 로마자 이름(μTorrent)이 화면에 잘못 나타나고 있음을 보고 혹시나 하는 생각을 갖게 되었다. 그에 앞서 11월 2일 한/글/ 2007에서 나타난 구결 표기 오류 2 문서에 엄(厂)과 엄(广)을 입력하다가 발견하였다. 현재 그 문서는 글자가 깨진 상태로 놔두었다.

Character-Encoding-00.png
자료 화면. 문자 인코딩이 제대로 되지 않았다.

문제가 발생하는 경우

지금까지 문제가 발생한 경우는 다음과 같다.

  • 자주 쓰지 않는 한자 : 한중일 통합 영역의 한자 가운데 (1) 특정 언어 윈도에서만 정확하게 보이는 한자, (2) 기본 다국어 평면(BMP)의 U+4E00부터 U+9FA5까지의 영역에 포함되지 않는 한자는 제대로 보이지 않는 경우가 있다.
  • 자주 쓰지 않는 로마자 : 영문자는 잘 나타내 준다. 숫자도 잘 나타내 준다. 꺽쇠(< >)도 잘 나타내 준다.[각주:1] 다만 그리스 문자나 키릴 문자 등은 가끔 정확히 표현하지 못한다. 뮤토런트에서 깨진 문자도 그리스 문자이다.
  • 특별한 구문부호가 붙은 로마자 및 기호 : 움라우트 등이 붙은 문자나 기호 등에서 가끔 깨진다.

문제 해결책

크게 두 가지 해결책이 있다. 우선 특별한 구문부호가 붙은 로마자나 기호는 글자 엔티티(character entity)로 나타내면 된다는 점이다. 그 다음으로 자주 쓰이지 않는 한자는 HTML 참조 코드를 이용하는 쪽이 낫다는 점이다.

  • 글자 엔티티 이용 : © 기호를 나타내고 싶다면 &copy; 라고 표현하면 된다.
  • HTML 참조 코드 : © 기호를 나타내고 싶다면 &#x00A9; 라고 16진수로 표현하거나, &#169; 라고 십진수로 표현하면 된다.

관련 문서

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


  1. 이것은 글자 엔티티(character entity)로써 나타내 주고 있다. [본문으로]
글쓴이는 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

글 보관함