2010년 2월 21일 일요일

아크로에디트, 파일 내용 변경 버그

AcroEdit는 가끔 옛한글이 포함된 문서를 사용자의 동의 없이 수정하는 버그를 갖고 있습니다. 오래전에 발견했지만 줄곧 다른 버그 리포팅에 밀려 있던 벌레를 다시 발견했습니다. 나중에 올려야지 하다 보니 깜빡 잊고 있었죠.

  • 참고 : 이 문서는 많은 그림을 포함하고 있어서 읽어오는 데 오래 걸릴 수도 있습니다. 느긋하게 기다려 주십시오.

벌레의 유형

불러온 파일의 원형을 유지하지 못하게 만드는 벌레입니다. 이 벌레는 추가적인 다른 벌레를 발생시키고 있습니다.

아크로에디트에서 편집한 뒤에 뭉개진 글자 - ᄒᆞᆫ

아크로에디트에서 편집한 뒤에 뭉개진 글자 - ᄒᆞᆫ

개발자의 답변

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

벌레의 발견

옛한글을 텍스트 편집기에서 시험하다가 발견했습니다.(옛한글과 텍스트 편집기 참고) 그런데 그때 올리지 않았더니 오랫동안 기억 속에 묻혀 버렸습니다.

이 벌레는 파일 내용을 제멋대로 바꾸어서 사람을 화딱지 나게 만드는 벌레입니다. 크게 두 경우가 있습니다. 한 경우는 클립보드로 붙이기, 다른 한 경우는 파일을 불러왔다가 저장하기입니다.

클립보드에서 붙이기

예제 코드는 다음 문장입니다.

[code html] <span class="jamocomposed_block" style="font-family: '돋움 옛한글','Dotum Old Hangul','바탕 옛한글','Batang Old Hangul','궁서 옛한글','Gungsuh Old Hangul','굴림 옛한글','NewGulim Old Hangul','은 자모 바탕 확장','Un Jamo Batang Ex','UnJamoBatangEx','은 자모 바탕','Un Jamo Batang','UnJamoBatang','은 바탕','Un Batang','UnBatang',Code2002,Code2001,Code2000,serif; font-size: 105%;">ᄒᆞᆫ말ᄊᆞ미 듀ᇰ귁에 달아 문ᄍᆞᆼ와로 서르 ᄉᆞᄆᆞᆺ디 아니ᄒᆞᆯᄊᆡ</span> [/code]

위 내용을 텍스트 파일로 저장하면 536바이트가 됩니다. 이 htm 파일은 utf-8로 인코딩되어 있습니다.

시험용 파일 Test-1.htm : 536바이트

시험용 파일 Test-1.htm : 536바이트

위 파일을 메모장에서 열면 아래와 같습니다.

메모장에서 본 내용

메모장에서 본 내용

이상태에서 그대로 복사하여 티스토리에 편집창의 HTML 모드에서 붙여넣기를 하였습니다. 테스트 블로그에 있는 문서입니다.

옛한글이 잘 나타난 화면

옛한글이 잘 나타난 화면

그냥 Test-1.htm 파일을 파이어폭스에서 보면 다음과 같습니다.

잘 보이는 옛한글

잘 보이는 옛한글

위 그림에서 보이는 내용을 소스 보기 하면 다음과 같습니다.

소스 보기 : Test-1.htm

소스 보기 : Test-1.htm

위 소스 보기 화면에서 내용을 복사하여 아크로에디트에 붙여넣기를 하였습니다.

처참하게 깨져 버린 옛한글

처참하게 깨져 버린 옛한글

참고로 저 상태에서 utf-8로 저장하면 491바이트가 됩니다.

시험용 파일 Test-2.htm : 491바이트

시험용 파일 Test-2.htm : 491바이트

원인은 알 수 없지만 용량이 줄어 버렸습니다. 물론 파일 내용도 바뀌었습니다.

메모장에서 본 내용 그림에 나타난 소스를 복사하여 아크로에디트에 복사하였습니다.

메모장의 내용을 아크로에디트로 복사하여 붙여넣기를 한 다음 저장한 화면

메모장의 내용을 아크로에디트로 복사하여 붙여넣기를 한 다음 저장한 화면

그런데 겉보기에는 아무런 이상이 없지만, 아무튼 이번에도 이상한 점이 발견되었습니다.

시험용 파일 Test-3.htm : 533바이트

시험용 파일 Test-3.htm : 533바이트

원본은 분명히 536바이트였는데, 지금은 533바이트입니다. 겨우 3바이트이지만, 내용이 바뀌었습니다.

옛한글을 제대로 나타내지 못하는 화면

옛한글을 제대로 나타내지 못하는 화면

어찌된 일인지 아크로에디트로 저장한 Test-3.htm 파일은 옛한글을 제대로 나타내지 못하고 있습니다. 앞서 나타난 옛한글이 깨지는 결과는 파이어폭스의 문제라고 생각할 수도 있으나, 지금 이 결과는 아크로에디트의 문제로 봐야 할 듯싶습니다.

파일을 불러왔다가 저장하기

클립보드는 복사되는 과정에서 변형이 일어날 수 있다는 의혹도 제기할 수 있습니다. 그래서 아예 파일을 직접 읽어오기로 했습니다.

메모장에서 본 내용 : 536바이트

메모장에서 본 내용 : 536바이트

위 내용을 아크로에디트에서 직접 불러오겠습니다. 불러오기에 앞서 메모장을 닫습니다. 이것은 혹시나 메모장에서 간섭이 생길 수도 있기 때문입니다.

아크로에디트에서 Test-1.htm 파일 불러오기

아크로에디트에서 Test-1.htm 파일 불러오기


아크로에디트에서 Test-1.htm 파일을 불러온 화면

아크로에디트에서 Test-1.htm 파일을 불러온 화면

위 그림은 앞서 나온 메모장의 내용을 아크로에디트로 복사하여 붙여넣기를 한 다음 저장한 화면 그림과 매우 비슷합니다. 이것을 Test-4.htm 파일로 저장했습니다.

아크로에디트에서 Test-1.htm 파일을 Test-4.htm 파일로 저장

아크로에디트에서 Test-1.htm 파일을 Test-4.htm 파일로 저장

Test-1.htm 파일과 Test-4.htm 파일은 모두 536바이트입니다. 그러면 이것을 파이어폭스에서 보면 어떻게 될까요?

Test-4.htm 파일은 미스테리를 담은 파일??

Test-4.htm 파일은 미스테리를 담은 파일??

편집도 않고 그냥 불러들였다가 다른 이름으로 저장만 했을 뿐인데 왜 이런 일이 생기는지 알 수 없었습니다.

아크로디프 프로그램에서 파일 비교

Test-1.htm 파일과 Test-4.htm 파일을 비교해 보겠습니다.

HxD 프로그램에서 비교한 Test-1.htm 파일과 Test-4.htm 파일

HxD 프로그램에서 비교한 Test-1.htm 파일과 Test-4.htm 파일

Test-1.htm 파일과 Test-4.htm 파일은 확실하게 다른 점이 있습니다. 원본인 Test-1.htm 파일을 아크로에디트에서 불러와서 아무런 수정도 없이 Test-4.htm 파일로 저장하기만 했을 뿐인데, 1바이트가 변형되어 있습니다.

이 두 파일을 아크로에디트에서 비교하면 어떻게 될까요? 정확하게는 AcroDiff(아크로디프)에서 비교하면 어떻게 될까요? AcroDiff 프로그램은는 파일 비교를 해 주는 유틸리티로서 아크로에디트에 포함되어 있습니다. 일종의 헬퍼 프로그램이죠.

AcroDiff(아크로디프) 프로그램 실행 화면

AcroDiff(아크로디프) 프로그램 실행 화면

여기에서 빨간 네모 표시를 클릭하여 파일을 왼쪽 창에 불러올 수 있습니다.

AcroDiff 프로그램에서 파일 불러오기

AcroDiff 프로그램에서 왼쪽 창에 파일 불러오기


AcroDiff 프로그램에서 왼쪽 창에 파일을 불러온 화면.

AcroDiff 프로그램에서 왼쪽 창에 파일을 불러온 화면. 이 상태에서는 내용은 나타내 주지 않습니다.

위 그림에서 파일 내용은 나타내 주지 않습니다. 파일 내용이 안 나타난다고 당황하지 마시기 바랍니다. 위 화면에서 빨간 네모 부분을 클릭하여 오른쪽 창에도 파일을 불러옵니다.

AcroDiff 프로그램에서 오른쪽 창에도 파일을 불러온 화면.

AcroDiff 프로그램에서 오른쪽 창에도 파일을 불러온 화면. 이 상태에서는 내용은 나타내 주지 않습니다.

오른쪽 창도 내용이 나타나지 않습니다. 이 화면에서 비교 실행(빨간 네모)을 클릭하여 파일 비교를 합니다.

두 창의 내용을 비교한 화면

두 창의 내용을 비교한 화면

놀랍게도 AcroDiff는 두 파일의 다른 점을 찾아내지 못하고 있습니다. 이로써 아크로에디트의 저장 과정이 아니라 불러오기에서 문제가 생김을 추측해 볼 수 있습니다.

벌레의 원인

벌레의 원인은 알 수 없었습니다. 다만 한글 깨짐 현상이 있습니다 문서와 관련이 있으리라 추측해 봅니다. 또한 아크로디프 프로그램에서 파일 비교 항목에서 보이듯이, 저장 과정에서 문제가 생긴 것이 아니라 파일을 불러왔을 때 파일 내용이 이미 변형되었으리라 추측할 수 있습니다.

관련 벌레

이 벌레와 관련이 있는 벌레는 다음과 같습니다. 다음 두 벌레는 ᄒᆞᆫ자의 화면 표시와 관련한 버그를 소개하고 있습니다.

관련 문서

내부 문서

외부 문서

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


댓글 없음:

댓글 쓰기