Retro Game & PC/매뉴얼 팁 작업

도트프린터 출력 에뮬레이션 업데이트

smores 2023. 11. 18. 00:04

조합형 코드로 된 텍스트 파일을 읽어서 도트프린터 출력을 흉내낸 듯한 postscript 파일로 만들어주는 프로그램이다. 이전 버전은 조합형 코드를 읽어서 도트를 찍을 모든 좌표를 계산하여 텍스트 파일에 좌표 데이터를 준비해 놓고, 별도의 postscript 로 만들어주는 실행파일을 배치파일로 돌리는 식의 두단계 작업이어서 번거로왔다. 게다가 폰트 사이즈, 라인 간격, 문단 폭 등을 조절하기 불편한 상황이었다. 즉, 실제로 쓰기 위한 프로그램이라기 보다 개념 확인차 만든 테스트 프로그램 수준이었던 셈. 

 

해당 프로그램을 업데이트 하여 파이썬 코드 하나로 바로 포스트스크립트까지 만들어준다. 내용이 긴 텍스트는 알아서 페이지 별 포스트 스크립트 파일을 여럿으로 나누어 만들어준다.

 

사용법은 일단 윈도우즈 노트패드에 텍스트 문장을 준비해 놓고 저장할 때 UTF-8 이 아닌 ANSI 포맷으로 강제적으로 저장을 해 놓는다. 이 파일은 역시 함께 업데이트 해 놓은 KS2TG.exe 로 조합형 텍스트로 변환하고, 준비된 조합형 텍스트로 도트 프린터 흉내를 내는 포스트 스크립트 파일로 만든다.

 

조합형 코드 텍스트와 MimicDotPrinter_V2.py 파이썬 코드를 같은 폴더에 준비하고 실행하면 파일 이름 및 폰트 사이즈 스케일 값, 도트 사이즈 스케일 값, 라인 간격 스케일 값, 사용할 한글 폰트 등을 묻는다. 그냥 엔터를 치면 꺾인 괄호 안의 디폴트 값으로 진행.

 

기본 값의 경우 도트 사이즈는 180 dpi 기준이므로 1 inch / 180 = 25.4 mm / 180 ~ 0.141 mm 정도의 검은 원으로 그려준다. 이 사이즈를 바탕으로 프린터에서는 한글 기준 24x24 도트로 한 글자를 만드는 식이며 (영문은 12x24), 따라서 한 글자의 사이즈는 24 x 0.141 ~ 3.387 mm 의 폭과 높이를 가진다. 그리고 라인 간격은 이 높이 대비 스케일을 곱한 것을 사용한다. 

 

그런데 프로그램에서 폰트 스케일을 1 이 아닌 값으로 하면 그 비율로 한 글자의 크기가 조절되고, 그 사이즈를 기준으로 도트 사이즈와 간격이 조절되지만, 도트의 사이즈만 도트 간격과 상관 없이 따로 스케일을 조절할 수 있다. 이는 글자를 더 진하거나 흐리게 보이도록 할 수 있다는 의미이다. 그리고 재계산 된 폰트 사이즈를 기준으로 라인 간격 스케일 값을 곱해서 라인 간격이 정해지는 식이다. 

 

문단의 폭과 종이 내에서 한 페이지 내에서 상하 최대로 쓸 수 있는 영역의 사이즈 역시 정해준다. 기본적으로는 Letter 사이즈 배경위에 이 영역 사이즈가 중심에 놓이는 것으로 처리하지만, ghostview 에서 용지 종류를 A4 로 하면 살짝 위치가 시프트될 수 있다. 이 문제를 조절하려면 파이썬 코드의 165, 166 번라인에 정의된 용지 사이즈 (현재는 letter 사이즈 - 1 인치로 잡아 놓았다. 숫자는 인치 단위) 를 고쳐서 사용하면 된다. 파이썬 코드는 특별히 외부 라이브러리 같은건 전혀 사용하지 않는다.

 

 

아래는 실행 예

 

사용한 조합형 텍스트 파일

j1.txt
0.00MB

 

그리고 실행으로 두 페이지의 포스트스크립트 파일이 만들어지며, ghostview 로 보면 이런 식으로 나온다.

 

 

 

 

다른 폰트와 도트 사이즈로 실행한 예

 

 

 

아래는 ghostview 를 이용해서 PDF 로 바꾸서 무료인 FoxitReader PDF 뷰어로 보는 스크린샷

 

 

다음은 애플베이식 코드를 AppleWin 에서 텍스트로 덤프하여 프린트한 사례. 옛날 잡지에서 보는것과 비슷한 포맷이 추억을 되살린다. ^^

 

 

 

MimicDotPrinter_V2.py
0.01MB

 

ks2tg.zip
0.07MB

 

Fonts.zip
0.01MB

 

 

-----------------

업데이트 V2.1

 

- 여러개의 postscript 파일을 자동을 PDF 로 바꾸고 하나의 PDF 로 merging 까지 해 줌.

- ghostscript, gsview 설치되어 있어야 함. 설치된 디렉토리는 코드 시작부분에 정의되어 있으므로 틀릴경우 수정 필요.

- PDF 하나로 merging 후에는 나누어져 있던 페이지별 PDF 는 삭제. 단 PS 는 남겨둠.

- merging 된 PDF는 소스 데이터 (조합형 텍스트 파일) 파일명 뒤에 .pdf 를 붙여서 만듬.

 

MimicDotPrinter_V2.1.py
0.01MB