포스트스크립트

(PS에서 넘어옴)

@name@은(는) 여기로 연결됩니다. 다른 뜻에 대해서는 아래의 문서를 참조하십시오.{{틀:다른_뜻/설명문서}}

1 추신을 뜻하는 영어 단어

Postscript

라틴어 'Post Scriptum', 즉, "작성 뒤에 쓰여졌다."라는 뜻에서 나온 영어 단어로서 흔히 편지 마지막에 P.S. 혹은 PS로 쓰인다.

문서를 작성하고 마지막에 본인 확인을 위한 서명까지 한 뒤에, 급하게 추가해야 할 짤막한 내용이 생겼을때 서명 밑에 적는 것에서 유래되었다.

2 전자 문서 형식

2.1 개요

100px
어도비 포스트스크립트 공식 사이트
어도비 포스트스크립트 3 레퍼런스북 (PDF 파일)

포스트스크립트란 디지털 인쇄기술의 근간이라고 할 수 있는 프레임워크의 일종이다. PostScript, PS라고 불리우며, PDF와 같은 전자 문서 형식이며, 당연한 이야기이지만 페이지를 기술할 수 있는 PDL[2]의 일종이고, PDF의 전신이다. 후에도 서술하겠지만 PDF와 포스트스크립트는 기본적으로 페이지를 기술하는 언어라는 점에서 PDL이라는 같은 집합에 속하지만, 포스트스크립트는 단순 페이지기술에만 그치는 것이 아니라, 나중에는 프린터상에서 돌아가는 하나의 프로그램이기 때문에, 그것들을 설계할 프로그래밍 프레임워크라는 집합에도 속한다.

현재는 언어레벨 3까지 발표되고 개발이 종료되었다. 벡터기반의 그래픽모델을 기반으로 하며, 다양한 기능, 필터, 이차원 도형과 폰트, 그리고 다양한 색모델들을 지원한다. 아쉽게도 PDF와 마찬가지로 이차원 벡터가 한계이다.[3] 그런데 많은 사람들이 착각하는 것 중에 하나가 포스트스크립트 파일과 PDF는 편집을 할 수 없다는 인식이다. 이것은 PDF가 한국에서는 뷰어로만 받아보는 일이 많아서 그렇겠고, 포스트스크립트는 단순히 인쇄를 위해서만 파일을 출력하는 일이 대부분이라서 그런 것 같다.

2.1.1 어도비의 창립

어도비의 창립자인 존 에드워드 워녹, 찰스 게스케, 더그 브로츠, 에드 태프트, 빌 팩스톤이 이 기술을 1982년도에 발표하였으며, 어도비의 시작이자 지금의 어도비를 있게 만든 기술이라고 봐도 무방하다.[4] 포스트스크립트를 발표하게된 계기와 탁상출판의 혁명 등 역사적으로 그 당시부터 상당한 영향력과 기술의 진보를 불러이르켰다. 실제 NeXT[5]의 운영체제가 이 포스트스크립트 기술을 이용하여 인쇄, 디스플레이를 했으며, 스티브 잡스가 디스플레이 포스트스크립트라는 개념을 도입하여, 인쇄에 사용되던 포스트스크립트를 개량해서 디스플레이에도 똑같이 사용되게 만들었다.[6] 포스트스크립트를 디스플레이에 사용한 것은 획기적이지만 속도는 시망이다. 그 당시 부터 폰트기술과 포스트스크립트를 비롯해서 스티브 잡스와 어도비와의 관계는 깊었다. 또한 포스트스크립트는 현재 PDF의 아버지, 아니 거의 같다고 봐도 무방하며, 인디자인과 일러스트레이터 등 벡터기반의 어도비 응용프로그램들 보다도 먼저 개발되었고, 그것들의 근간이 되었다. 그냥 일러스트레이터인디자인이 포스트스크립트 파일을 만들기 위해서 탄생되었다고 봐도 된다. 바야흐로 탁상출판의 기적!

2.1.2 포스트스크립트의 위치와 한계

하지만 기술집약적이고 자본이 많이드는 인쇄기술이 사양산업이 돼 버린 지 오래인 지금, 프린터나 인쇄기술의 기술적진보가 거의 이루어지지 않은 것도 사실이다. 그 대신 인쇄에 국한되었던 포스트스크립트를 조금 더 넓은 매체에서 수용가능한 PDF가 그 자리를 대체해가고 있다.
후술하겠지만 PDF와 포스트스크립트는 그래픽 모델자체는 같지만, 몇가지 근본적인 차이가 있다. 어찌되었든 이나 iOS같은 디스플레이를 기반으로 하는 장치들은 2D 프레임워크 API[7]PDF나 포스트스크립트를 그래픽가속[8] 할 수 있도록 지원하는 데에 비해서, 인쇄기반의 매체들은 아무리 컴퓨터 성능과 그래픽처리기술이 발달해도 제대로 된 호스트기반의 레스터도 보급되지 않았고, 대부분의 프린터들도 내부의 강력하지 못한 프로세서를 통해서만 인쇄하게끔 되어 있다.
그래서 복잡한 벡터그래픽을 포함하거나[9] 큰 파일의 PDF, 포스트스크립트 파일을 인쇄하면, 컴퓨터는 놀고 있고 프린터가 아주 느리게 레스팅을 한 뒤에나 결과물을 출력해볼 수 있는 사태가 발생한다. 이 부분은 프린터 마이크로프로세서의 레스트와 관련이 있으므로 프린터에 추가로 하드디스크메모리를 단다고 크게 나아지지 않는다. 물론 PCL기반의 프린터들은 대부분 컴퓨터에서 호스트기반의 레스터로 처리를 하기 때문에 큰 파일의 PDF나 포스트스크립트를 인쇄해도 그닥 느려지지는 않는다. 더욱이 요즘 나오는 HP오피스젯 같은 PCL프린터들은 opencv를 이용해서 그래픽을 훨씬 빠르게 처리한다. 그렇기 때문에 포스트스크립트를 지원하는 척 하는 포스트스크립트 에뮬레이터가 달린 PCL 프린터는 그냥 PCL을 쓰는 게 훨씬 빠르고 정확하게 나온다. 왜냐하면 포스트스크립트 에뮬레이터는 결국 포스트스크립트로 받은 파일을 다시 PCL로 변환해서 인쇄를 해야하고, 컴퓨터에서 레스터 해주던 것을 프린터 내부에서 변환과 함께 레스터까지 해야되는 상황인지라 어마어마하게 느려진다. 왠만한 사무실에서 포스트스크립트를 지원하지 않는 프린터에 포스트스크립트 지원해준다고 좋아하면서 에뮬레이터 드라이버를 깔면, 가벼운 PDF파일을 걸어놔도 인쇄가 한참 뒤에야 되는 것을 확인하고선 뭔가 고장이 났는가 생각하는 부분이 이 경우이다.
결론적으로, 진짜 포스트스크립트 프린터가 아닌 경우, 어차피 포스트스크립트 그래픽 모델도 제대로 지원해주지 않기 때문에 그래픽이 깨져서 나올 수도 있고, 속도도 엄청 느려지기에, 그냥 PCL 드라이버를 깔 것을 권장한다. 가끔 한글파일을 출력하면 프린터에서 표 같은 것들이 깨져서 나오는 경우가 있는데, 이 경우는 PCL과 포스트스크립트 기술형식 차이에서 오는 문제이다. 애초에 한글같은 프로그램들은 그래픽모델이 Windows에서 쓰는 DirectX에 맞게끔 만들어져 있는데, PCL의 경우도 윈도우 그래픽에서 쓰이는 GDI를 쓰기 때문에 같이 호환이 되고 호스트에서 가속도 가능한 이유가 여기있다. 한마디로 PCL은 Windows화면에 보이는 그대로를 출력할 수 있다는 이야기이다. 이나, iOS에서도 그래픽모델 자체를 OpenGL기반에, PDF를 얹혀서 쓰기 때문에 화면에 보이는 그대로를 PDF나, 포스트스크립트로 무리없이 출력할 수 있다. �하지만 프린터가 포스트스크립트나 PDF를 지원해서 그 쪽 드라이버를 깔아서 설치한 경우, 한글에서 생성한 파일을 출력할 때는 앞서 이야기한 깨져서 나오는 문제가 발생할 수가 있다. 이는 PCL에서 쓰는 그래픽모델과 어도비에서 쓰는 그래픽모델 자체가 완전히 호환이 되지 않아서 생기는 문제인데, 애초에 한글 같은 프로그램에서 PDF를 완벽히 지원을 해서 출력을 해주거나[10], directx to opengl to ps를 여러번 거치는 수 밖에 없을 듯 하다.

그러나 전문가들은 포스트스크립트를 버리고 PCL을 사용하기도 곤란한 것이, 운영체제에 탑재된 호스트기반의 PCL 레스터는 프린터에서 CMYK 색공간을 지원을 하지 않기 때문에 RGB 색공간으로만 인쇄를 할 수 밖에 없는 노릇이다. 사진이나, 작품사진등을 출력하거나, 일반 사무용, 가정용에서는 오히려 RGB가 CMYK 보다 더 나을지도 모른다. 그러나 RGB색공간이 문제가 되는 이유는, 인디자인이나, 일러스트를 할 때에 CMYK 값을 찍었을 때에 그것이 CMYK 채널로 정확히 전달되어야 하는데, 한 번 RGB로 바꿔버리면 전문적으로 출판을 하거나, 작업을 하는 이들에게는 심각한 문제가 생길 수 있다. 또한 인쇄에서는 CMYK가 단순 색문제만이 아니라, 하프톤에도 지대한 영향을 주기에 이는 그리 쉽게 볼 수만은 없는 문제이다. 오히려 전자책을 만든다면 굳이 그런 문제에 연연할 이유는 없지만 말이다. 포스트스크립트는 이론상 하프톤 패턴도 조정 가능하며, OpenGL처럼 엔드 투 엔드로 어떻게 렌더링을 할 것인가도 설정 가능하다. 더욱이, CMYK를 떠나서 화폐를 복제한다고 치더라도 별색[11]을 어떻게 지정하고, 그것을 실제 용지에 어떤 패턴으로 인쇄시킬 것인가를 포스트스크립트에 모두 담을 수 있다는 이야기이다. 또한 포스트스크립트는 프린터에서 작동되는 하나의 프로그램이므로, 그 문제는 더욱 복잡하다.

포스트스크립트를 빠르게 처리하기 위한 대안으로는 프린터 자체는 1Bit CMYK 비트맵 이미지만을 지원하며, 컴퓨터의 레스터가 백그라운 프로세스로 ps to tiff를 지원해주면 쉽게 끝나는 일이다. 물론 하프톤도 쉽고 세밀하게 조절할 수 있도록 되어야 하고. 또다른 방안으로는 포스트스크립트를 버리고, OpenGL 기반의 인쇄형식을 만드는 것도 있겠다.[12] 그리고 그 OpenGL로 만든 이미지를 프린터는 앞에서 이야기한 대로, 1Bit CMYK 이미지로 가져오고 말이다. 거기다 그래픽가속까지 지원한다면 거의 전래가 없는 하이엔드급 프린터를 제작할 수 있을지도 모르겠다.[13] 하지만 프린터 제조사들은 전혀 그럴 생각을 안 하며, CMYK 색공간이 지원되는 포스트스크립트라도 재대로 지원해주면 감사해야 할 일이다. 물론 1Bit CMYK 비트맵 이미지를 지원하는 프린터는 시중에 몇몇 존재하며, 호스트기반의 외장 립도 당연히 지원하다. 하지만 그런 레이저프린터는 가격이 일반사용자들이 사용할 수 없고, 옵셋인쇄같은 윤전기들은 그냥 CTP필름에 내려받으며 되기때문에 그 문제로 굳이 고민할 필요가 없다. 역시 물질만능주의. 뭐, 일반사용자들은 조잡한 PCL 기반의 잉크젯 프린터만으로도 잉크비용을 고민하기 때문에 괜사리 하이엔드급 기술로 프린터를 만들면 되러 토너나, 잉크 팔아먹는다고 욕을 먹을 수도 있다. 그래서 HP가 인디고라는 획기적인 잉크프린터를 가정용으로 안 만들어주는 걸지도. 그런데 인디고를 가정용으로 만들어버리면 여기저기서 화폐복제한다고 난리가 아닐수도 있겠다. 물론, 단순 인디고만 있어서 되는 문제는 아니고, 화폐에서 정확히 무슨 별색을 쓰는가 CMS로 찍어서 알아봐야 되고, 그것을 일러스트로 똑같이 복각한 다음, 실제 화폐에 쓰이는 면종이와 홀로그램 띠 종이를 조달할 수 있어야겠다.[14]


PCL 프린터이든, 포스트스크립트 프린터이든, 옵셋이든 결론적으로 마지막 과정에서는 종이에 직접 새겨지는 비트맵 이미지가 필요한데, 그 비트맵 이미지는 꽤나 용량이 크다. CMYK의 경우 1Bit라고 하더라도 페이지당 수백 메가 바이트 정도된다. 이것은 프린터가 오래된 기술이라고 해도 모니터보다 훨씬 해상도가 높기 때문이다. 해상도라도 높지 않으면 다양한 밝기와 명암, 채도를 지원하는 디스플레이와 달리, 네 가지 색밖에 없는 프린터가 하프톤을 그리기 곤란하다. 요즘 프린터들 성능에 직접 레스팅을 하지만 않는다면 그 정도의 데이터는 굳이 내부 프로세서가 입출력 하는데 무리가 갈 정도는 아니며, 대신 비트맵 이미지를 저장할 수 있는 메모리는 대부분 DDR2로서 1 기가바이트도 얼마 안 하기 때문에 그것 역시 문제가 되지는 않는다. 역시 1Bit CMYK 이미지를 지원하지 않는 것은 제조사가 나쁜거야. 벡터기반의 포스트스크립트도 최종적으로 인쇄되기 위해서는 결국 비트맵 이미지로 레스트되어야 하는 것은 당연하다. PCL도 RGB기반이지만 결론적으로는 잉크가 CMYK이므로 CMYK 비트맵 이미지로 바뀌는 것 또한 당연하고. 사용자가 디스플레이에 RGB이미지를 PCL로 인쇄를 하면 결론적으로 RGB에서 CMYK로 한 번의 전환과정만 거치지만, 만약 전문출판 작업을 하는 경우이면, CMYK에서 RGB, 그리고 다시 CMYK로 거치기 때문에 PCL은 앞서 이야기 했지만 출판용으로 쓰기에는 무리가 있다.

2.2 역사


포스트스크립트의 기원은 1976년에 존 에드워드 워녹이 일 했었던 이반 엔 슈더랜드[15]라는 컴퓨터 그래픽회사로 거슬러 올라간다. 그 시기 존 에드워드 워녹은 뉴욕항에서 방대한 규모의 삼 차원 그래픽 데이터베이스를 위한 인터프리터를 개발하고 있었다. 존 에드워드 워녹은 여기서 그래픽처리를 위한 디자인시스템 언어를 생각해냈다.

이와 비슷한 시기에 제록스 파크의 연구원들은 최초의 레이저프린터 개발 했냈었고, 이에 걸맞는 페이지이미지를 정의하는 방법이 필요하게 되었다. 1975년과 1976년 사이에 밥 스풀윌리암 뉴먼은 인쇄형식을 개발해냈는데, 이는 결국 제록스 스타의 레이저프린터를 구동하는 데에 사용되었다. 그러나 이 인쇄형식은 프로그램 언어 보다는 단순 데이터에 가까웠고, 유연성이 매우 부족했다. 그래서 제록스 파크는 추후 인쇄형식의 후속으로 인터프레스라는 자체 인쇄형식을 만들기 위해서 노력하게 된다.

1978년에 이반 엔 슈덜랜드존 에드워드 워녹에게 센프란시스코 만 유타에 위치한 본사로 오기를 요청하는데, 그는 옮겨가는 것에 대해서 그리 긍정적이지 않았다. 그리고 그 후에 마틴 뉴웰과 함께 일하기 위해 제록스 파크에 입사하게 된다. 그들은 거기서 VLSI[16]설계나 유형조사, 그리고 그래픽인쇄 등에 사용될 JaM[17]이라는 디자인시스템을 작성한다. 이러한 작업은 후에 더욱 전개되어서 제록스 파크인터프레스 언어에 확장 되어진다.


존 에드워드 워녹은 후에 찰스 게스케와 함께 제록스 파크를 나와서 어도비 시스템즈를 1982년도 12월에 창립하게 된다. 그들은 더그 브로츠, 에드 태프트, 그리고 빌 팩스톤과 함께 인터프레스와 비슷하면서 포스트스크립트라고 불리는 단순한 프로그램 언어를 1984년도에 시장에 내놓았다. 이 시기에 스티브 잡스어도비를 방문하게 되는데, 그가 포스트스크립트를 레이저프린터의 구동 언어로 사용되도록 그들을 닦달했다. 잡스가 어도비의 투자자였다.


1985년 3월, 애플 레이저라이터[18]는 세계 최초로 포스트스크립트를 탑재된 프린터인데, 이것은 1980년 대 중반 탁상출판에 혁명의 불씨가 되었다. 포스트스크립트의 기술적 장점과 광범위한 가용성의 조합은 포스트스크립트를 인쇄와 그래픽적인 출력에 필수가 되게 만들었다. 1990년 대에는 포스트스크립트 인터프리터[19]가 대다수 레이저프린터들의 공통적인 구성요소가 되기도 했었다.

어쨌든 그 당시 포스트스크립트를 실현하는 비용은 상당히 비쌌었는데, 그 이유는 컴퓨터에서 출력되는 윈시 포스트스크립트 코드를 프린터에서 높은수준의 인쇄 해상도로 레스트 이미지화 시키는 해석 작업을 해야됐기 때문이다. 이는 그 당시에 아주 높은 사양의 마이크로프로세서와 충분한 메모리를 요구하는데, 어느정도 높은 사양이냐면 애플의 레이저와이터가 12 메가헤르츠의 모토롤라 68000을 사용 했었다는 것을 주목할 필요가 있다. 이 정도 사양은 프린터에 연결된 어떠한 매킨토시 컴퓨터 보다도 빠르다는 것을 의미한다. 더욱이 레이저프린터가 포스트스크립트 엔진을 지원하는 것만으로도 벌써 천 달러 이상의 추가비용이 소요되었다. 그러나 프린터 메카니즘은 가격이 추락하면서 전체 프린터 비용에서 포스트스크립트를 구현하는 비용은 괜찮은 정도의 가격으로 되어지기도 했었고, 그에 더불어 데스크탑 컴퓨터의 성능이 더욱 강력해지면서 더 이상 제한된 자원의 프린터에서 레스터 작업을 실행시키지 않아도 되었다. 2001년도에는 포스트스크립트를 지원하지 않는 싼 값의 잉크젯프린터들의 경쟁이 큰 폭으로 성장함에 따라, 스풀러에서 소프트웨어 기반의 포스트스크립트 이미지를 렌더하는 새로운 방식으로 거의 모든 저가형 프린터 모델에서 포스트스크립트를 지원할 수 있게 되었다. 포스트스크립트의 계승인 PDF 또한 그러한 방법 중의 하나이고, 큰 폭으로 전자문서 유통을 위한 사실상의 표준으로 포스트스크립트를 대체 해갔다.

하이엔드 프린터에서는 일반적으로 포스트스크립트 프로세서가 남아있고, 그것들을 사용함으로써 CPU가 문서를 출력할 때에 프린터로 포스트스크립트 이미지를 렌더링하여 전송하는 작업을 극적으로 줄여준다. 하지만 현재의 컴퓨터 성능으로는 그냥 컴퓨터에서 렌더링하는 게 낫지 않나? 다만 CMYK를 지원 안 해줘서 그렇지.

2.2.1 포스트스크립트 레벨 1

포스트스크립트의 첫 번째 버전이 처음 시장에 출시된 것은 1984년이다. 레벨 1이라는 용어가 붙여진 것은 레벨 2가 출시 되었을 때이고, 레벨 1과 레벨 2를 구분하기 위해서이다.

2.2.2 포스트스크립트 레벨 2

포스트스크립트 레벨 2는 1991년도에 레벨 1에 몇 가지 개선 사항들을 포함되어서 출시되었다. 다음과 같다.

  • 향상된 속도와 안정성.
  • In-RIP Separations 지원. 처음부터 색들이 분판되어 출력되는 Separations와 달리, 파일은 Composite 모드로 출력한 뒤에 립에서 분판이 되도록 하는 기능.
  • 이미지 압축해제. 예로 JPEG 이미지가 포스트스크립트 지원 프로그램에서 출력될 때에 압축을 해제하는 렌더링을 과정을 거칠 수 있다.
  • 복합글꼴 지원.
  • 메카니즘 차원에서 컨텐츠 양식을 다시 사용할 수 있게 하는 캐싱기능.

2.2.3 포스트스크립트 레벨 3

포스트스크립트 3는[20] 1997년도 말에 다음과 같은 기능들과 함께 출시되었다.

  • 많은 딕셔너리 기반 형태의 새 명령 연산자.
  • 더 나은 색 처리 방법.
  • 프로그램 압축, 압축 해제가 가능하고, 프로그램 청크, 그리고 어드밴스 오류 처리 기능 같은 새로운 필터들 포함.

2.3 기술

포스트스크립트의 벡터 폰트웹과 캐드를 비롯한 벡터작업에 유리하다.

포스트스크립트는 강력한 그래픽을 지원하면서도 간단하게 해석되는 프로그래밍 언어이다. 이는 사용자가 직접 프로그래밍을 해서 폰트나 도형과 같은 그래픽을 표현할 수 있는 강력한 언어를 뜻하며, 실제로 사용자가 도형들을 일일히 프로그래밍하면서 사용하기에는 조금 어렵다. 그냥 응용프로그램에서 프로그래밍 해서 만들어준다. 컴퓨터와 프린터, 어플리케이션과 윈도우서버와 같은 상호작용하는 시스템에서 진가를 발휘하는 언어이다. 중요한 점은 PDF와 마찬가지로 어플리케이션이나 장치에 독립적이다.

포스트스크립트의 기본적인 외형을 보면 텍스트와 그래픽도형, 그리고 샘플링된 이미지들이 어도비 이미지모델 상에서 인쇄되거나 디스플레이 되는 것을 알 수 있고, 인쇄시스템 구성에서 문서형식으로서 서로 통신하거나, 디스플레이 상의 텍스트 및 그래픽 모양을 실시간으로 제어할 수도 있다. 실제로 운영체제의 윈도우서버와 응용프로그램이 문서형식으로 화면을 갱신하는 방식을 뜻 한다.

포스트스크립트를 이해하기 위해서 크게 네 가지 관점에서 요약할 필요가 있는데, 이것은 포스트스크립트 레퍼런스북에도 나와있는 내용이며 다음과 같다.

  • 강력한 그래픽 원어를 내장한 범용프로그래밍언어를 지향.
  • 프로그래밍 기능을 내장한 페이지기술언어(PDL).
  • 상호작용하는 시스템에 의해서 조종되는 레스터 출력장비(프린터나 디스플레이).
  • 어플리케이션과 장치 독립적인 페이지기술 형식.

포스트스크립트는 크게 다음과 같은 기능들을 포함하고 있다. 다음 기능들 중 어느것이 혼합되어도 모두 지원 가능한 강력한 벡터그래픽 언어이다.

  • 직선, 호, 사각형 및 입방 곡선등의 임의의 도형을 만들 수 있으며, 어떤 도형들은 자기교차 및 분리된 부분들, 그리고 구멍들로 이루어져 있다.
  • 채색작업은 어떠한 형상과 두께로든 테두리가 가능하며, 어떠한 색상으로도 채울 수 있고, 또한 어떠한 그래픽소스에도 클리핑패스를 크롭시켜서 적용할 수 있다. 색상모델은 Grayscale, RGB, CMYK, 그리고 CIE-Based 등 다양한 방법으로 지정될 수 있다. 반복되는 패턴, 부드러운 음영, 색상맵핑 및 별색 같은 특정 다른 기능들은 개별의 색상모델로 모델링된다.
  • 텍스트는 완전히 그래픽과 통합되는데, 어도비 이미지모델 상에서 텍스트들은 모두 내장되고, 사용자가 정의한 폰트는 일반적인 그래픽연산에 의해서 그래픽형태의 도형들로 처리될 수 있다.
  • 샘플된 이미지들은 스캔한 사진같은 자연적인 근원이나 합성에서 파생되는데, 포스트스크립트 언어는 기술된 이미지를 어떠한 해상도나 개별의 색상모델에 대해서든 샘플 할 수 있다. 이것은 출력장치에 여러가지 방법으로 이미지를 재현시키기 위해서다.
  • 일반 좌표계체계는 선형변환, 환산, 크기조절, 회전, 반사, 기울기를 지원하며, 이러한 변환작업은 페이지, 포함된 텍스트, 그래픽 도형, 그리고 샘플된 이미지 같은 모든 요소에 균일하게 적용된다.

2.3.1 프로그램 언어

포스트스크립트에는 PDF와 달릴 범용프레임워크 기능이 들어가 있는데, 그것이 PS파일을 C언어처럼 프로그래밍 할 수 있게 만들어준다. 포스트스크립트는 인터프리터 형식이기 때문에 정확히는 C언어 보다는 파이썬에 보다 근접하지만 말이다. 이 프로그래밍 파일 안에 PDF와 마찬가지로 어도비그래픽모델을 기반으로 한 페이지디자인이 들어가 있고, 그 페이지디자인을 어떻게 이 장치에서 렌더링하고 레스터 할 것인가 하는 명령들이 들어가 있다. 물론, 인쇄할 때에 어떤 사용자가 인쇄를 했는가, 날짜, 시간, 양면인쇄나, 어떤 용지구를 쓸 것인가 하는 세세한 정보와 설정들도 들어가 있고 말이다.

예제등은 영문검색에서 많이 얻을 수 있다. http://www.egtry.com/postscript/index.html

2.3.2 유닛의 크기


포스트스크립트 내부 유닛의 크기는 72dpi이다. 이것은 1 인치 안에 72개의 점이 있다는 뜻인데, 한 개의 점이 약 0.013888... 인치의 크기이며, 약 0.0352777... 센치미터, 약 0.352777... 밀리미터 크기이다. 유닛은 프린터나 출력장비의 해상도와는 무관하다. 다만 내부적으로 1 포인트의 크기가 실제 물리적크기와 어떻게 작용하는가와 관련이 있다. 즉, 1 포인트는 72dpi 에서 1개의 점의 크기와 같다. 일러스트레이터나 인디자인에서도 기본값은 72dpi이다. 또한 어플리케이션에서 내부적으로 실제 물리크기를 쓸 수 있는데, 어차피 다시 환산돼서 프린터상에서는 정확하게 나온다.

2.3.3 PPD와 PS파일, 인터프리터, 그리고 스풀러


컴퓨터 상에서 PPD가 작동되는 원리는 간단하다. 아사히나 선배의 TPDD와는 다르다. TPDD와는.[21] 만약에 포스트스크립트를 지원하는 프린터를 한 대 구매를 했다면, 훨씬 간단하게 이해할 수 있다. 프린터를 사면은 당연한 이야기이지만 드라이버를 주기 마련인데, 그 드라이버는 당장에 필요없을 수도 있다. 왜냐하면 프린터의 프로토콜은 usb나 ipp, lpd, 그리고 애플토크 같은 이미 표준화된 인터페이스들이 쓰이고, 그렇기 때문에 인터페이스 드라이버는 이미 운영체제 상에서 지원된다. 또한 실질적으로 프린터에 명령을 내리고 일을 시키는 것은 전적으로 운영체제의 표준화된 스풀러(Spooler)의 역할이므로 굳이 드라이버가 없어도 인쇄가 안 되는 것은 아니다. 스풀러의 종류로는 CUPS(Common Unix Printing System)[22], Ghostscript, Gimp 등이 있다.

하지만 프린터에 따라 각자 다 다른 지원가능 용지크기와 양면인쇄가능 여부, 색상모델, 그리고 제조사 특유의 별도기능들을 사용하고 싶을 때에는 프린터 드라이버의 역할이 중요하며, 포스트스크립트 프린터는 PPD, 즉 PostScript Printer Description라는 포스트스크립트 드라이버가 그 기능을 담당하게 된다. 이것은 제조사에서 제품별로 따로 작성을 하는데, PPD는 텍스트기반으로 되어 있기에 여타 실행파일 같은 드라이버와는 조금 다를 수 있다. 하지만 필요에 따라서 사용자가 직접 수정할 수 있기도 하다. 또한 이 PPD가 장치 독립적인 포스트스크립트와 PDF에서 장치 호환적인 역확을 할 수 있게끔 만들어주는 아주 중요한 역할을 하는데, 이것은 일러스트레이터나, 인디자인 같은 응용프로그램에서 인쇄를 할 때나 PS파일을 출력할 때에 참조된다. 예를들면 인디자인에서 셋업 페이지 크기부터 아웃풋 색상모델까지도 이 PPD에 기술된대로만 할 수 있으며, PPD에는 프린터 부가기능에 대해서 유저인터페이스 까지도 기술돼 있고, open ui, close ui... 응용프로그램은 그것을 기반으로 인터페이스를 꾸리며, PPD에 기술된 일종의 메뉴는 사용자가 선택을 하게 되고, 출력되는 파일에 고스란히 그 값을 반환한다. 사스가 포스트스크립트. 프로그래밍언어라고 하는 것이 장난은 아니었다. 그것과 별개로 운영체제에서 프린터를 설정할 때에 이 PPD를 기반으로 설정메뉴를 구성하며, 심지어 소모품잔량을 확인하기 위한 소모품항목과, 하드디스크나 메모리 추가 옵션도 모두 PPD에 기술돼 있다.

그렇다면 PS파일은 무엇일까? 간단하게 설명해서 PDF 같은 도큐멘트 파일로 이해하면 쉬울 것 같다. 앞서 설명했듯이 인디자인 같은 응용프로그램이 파일을 출력할 때에 PPD를 참조해서 PS파일을 제작하게 되는데, 출력을 하기 위한 그래픽적 요소와 명령들을 모두 품고있는 핵심적인 파일이다. 애초에 PDF가 폰트를 내장하는 것은 원래 포스트스크립트 기술이다. 이것은 응용프로그램에서 스풀러에게 전달되고, 스풀러는 경우에 따라서 자신이 인터프리터 역할을 자처해서 레스팅을 하는 경우도 있지만, 대개의 포스트스크립트가 지원되는 프린터에서는 그냥 프린터에 이 파일을 전달하는 역할만 하고 끝나게 된다. 무엇보다 PS파일과 인터프리터는 포스트스크립트의 정체성이 프로그램이라는 것 상기해보면 땔래야 땔 수 없는 관계이다. PS파일은 프로그래밍 파일, 인터프리터는 바이너리화를 담당한다.

포스트스크립트 프린터는 인터프리터가 내장되어 있는데, 인터프리터란 해석기를 의미하며 앞서 설명한 PPD를 참조하여 만들어진 PS파일을 이 인터프리터에서 해석하게 된다. 해석된 PS파일은 프린터라는 컴퓨터 내부에서 돌아가는 프로세스가 된다. 이것이 무엇을 의미하냐면, PPD는 우리가 프로그래밍 할 때의 쓰는 헤더파일이고, PS파일은 프로그래밍한 파일, 그리고 그것이 프린터 운영체제에 위에서 돌아가는 프로그램이 된다는 이야기이다. 여기서 해석이란 사용자가 주문한 여러가지 명령들을 실제 실행하게끔 하는 것도 있겠지만, 원래는 여러가지 노드를 거쳐서 레스터 후에 비트맵 이미지를 만드는 것이 본래의 목적이겠다. 즉, PS파일은 자신이 직접 프로그램이 되는 바이너리화와, 그 프로그램이 프린터 내부에서 비트맵이미지를 직접 만드는 것 이 두 가지가 필요하다. 그에 비해서 PDF는 자신이 프로그램화 되지도 않고, 비트맵 이미지를 만드는 것도 자신이 아닌 타의에 의해서 이루어진다. 그냥, 단순한 이미지 파일로 보면 편할 것 같다. 참고로, 이 인터프리터가 포스트스크립트 파일에 에러가 있으면 무엇이 에러인가 하고 페이지에 출력해주기도 하는데, 대개는 폰트의 문제인 것 같다. 똑똑한 인터프리터.

2.3.4 EPS와 PDF와의 관계

100px

가장 쉬운 것이 EPS와 PS파일간의 관계이겠다. PS는 PostScript를 뜻한다는 것은 잘 알 것이다. EPS는 Encapsulated PostScript를 뜻하며, 캡슐화된 포스트스크립트 파일을 의미한다. 가장 큰 장점은 PS파일과 달리 미리보기 기능을 지원한다는 것이다. 그래픽 파일형식으로 많이 이용되는데, 그래픽형식답게 PS파일이나, PDF와 달리 한 페이지씩 밖에 저장할 수 없다. 흠좀무

PDF는 어도비에서 1993년에 발표한 기술인데, 포스트스크립트가 1982년에 발표된 것에 비하면 십 년 안 되어서 발표했다는 점과 포스트스크립트가 어차피 PDF의 전신, 아니 거의 똑같다고 보면은 왜 어도비가 PDF를 개발했는지 의아할 수 있다. 실제로 포스트스크립트 만으로도 꽤 훌륭한 기술이며, 탁상출판의 혁명을 이끌고도 남는 엄청난 기술이다.

일단은 PDF는 포스트스크립트와 어도비 이미지모델을 공유함으로 핵심기술은 똑같다. 실제로 어도비 또한 PDF와 포스트스크립트가 무엇이 다른가 하는 문서도 만들었을정도.[23] 하지만 차이점도 분명 존재하는데, 앞서 이야기 했듯이 PDF에는 포스트스크립트의 핵심 기능인 범용프로그래밍 프레임워크가 빠져있고, 효율적인 랜덤엑세스와 탐색정보[24]를 포함한 대화형 보기를 위해 정적 데이터구조를 갖고있다. 분명 PDF의 개발목적은 인쇄를 목적으로 한 포스트스크립트와 달리 포터블 문서로서의 기능을 중시한다. 예를들면 전자책이나, 영상을 포함할 수 있는 디스플레이 기기를 위한 문서. 바야흐로 포터블의 시대다. 1990년대에도... 그래도 한 페이지밖에 저장 안 되는 EPS나, 미리보기나 인덱스 기능이 없는 포스트스크립트 보다는 어도비가 PDF를 밀고 있는 것이 어쩌면 현명할 지도 모르겠다. 포스트스크립트가 미리보기 기능이 없는 이유는, 포스트스크립트 자체가 원래 특정 디바이스에 이렇게 렌더링 해주세요, 하고 명령을 내리는 기능도 포함되어 있기 때문이다. 만약 흑백프린터에 적합하도록 하프톤이나, 색 등을 설정한 포스트스크립트 파일은 그 장비에서 가장 적합하게 보여진다. 물론, 강제로 미리보기를 할 수는 있지만, 우리가 생각하는 무조건 장치독립적인 PDF 파일과는 다르다고 봐야겠다.

정리를 하자면, 포스트스크립트는 워크플로어상, 장치 독립적이라고는 하지만, 렌더링되는 디스플레이 장비들에 꼭맞게 설정된 하나의 프로그래밍 파일이다. 그 파일만 있으면 그 장비에 목적에 맞게, 그 장비에서 직접 실행되고, 직접 그 장비에 맞게 렌더링된다고 보면 되겠다. 그에 비해, PDF는 장치에 독립적이지며, 하나의 파일로 모든 디바이스들을 수용, 배포한다. 그 장비에 맞게 렌더링 되는 것은 그 장비의 문제로 보기 때문에, 굳이 그 장비에서 렌더링이 실행되도록 하는 범용프레임워크는 필요가 없겠다. 이것이 PDF와 포스트스크립트의 가장 큰 차이점이다.

2.3.5 어도비 소프트웨어에서의 문제점

포스트스크립트를 만든 것은 정작 어도비인데, 인쇄를 하거나 포스트스크립트 파일을 출력할 때에 타사의 응용프로그램이 훨씬 뛰어난 경우가 있다. 이해할 수 없는 어도비. 그 부분은 다름이 아닌 바로 포스트스크립트 하프톤 부분이다. 인디자인이나 일러스트레이터 같은 응용프로그램의 Output 항목에서 Composite CMYK, 또는 Composite Leave Unchange를 선택하면 하프톤스크린[25]과 주파수[26], 그리고 각도[27]등을 설정하는 항목이 블락된다. 물론 Separations이나 In-RIP Separations을 선택하면 그런 기능들이 되기는 하지만, PPD에 명시된 하프톤스크린과 주파수, 그리고 각도만 선택 가능하며, Separations은 분판[28]을 의미하기 때문에 인쇄 할 때에는 의미가 없다.


결론적으로 인디자인에서 Composite CMYK나, Composite Leave Unchange를 선택하면은 포스트스크립트 프린터에서는 프린터 내부의 기본설정으로 하프톤스크린과 주파수, 그리고 각도로 인쇄된다. 만약 둥근점으로 이루어진 하프톤스크린으로 인쇄하고 싶거나[29], 출판이나 시안용으로 별도의 선수와 각도를 설정하고 싶다면 외장 립 응용프로그램을 쓰라는 의미와 다름이 없다. 하지만 비싼 외장 립을 쓴다고 해도 레이저프린터에서 지원을 안 해주는 경우가 대부분이고, 일부 포스트스크립트 프린터에서만 외장 립을 지원해준다. 결국 외장 립은 주로 외장 립을 지원해주는 프로토콜을 탑재한 전문가용 플로터나, 옵셋 같은 데에 사용된다. 돈 없으면 결론적으로는 못 쓴다는 이야기.

왠만한 영세한 인쇄소들은 수억 원 하는 옵셋이나 인디고를 쓰지 않으면 다 비싼 레이저프린터를 쓰는데, 비싼 레이저프린터들은 1Bit CMYK나, 포스트스크립트를 지원하기 때문에 출판용으로 쓸 수 있다. 하지만 가장 큰 문제점은 레이저프린터는 토너를 종이에 정착시키기 위해서 열과 압력을 가하는데, 그것이 종이의 질감을 평평하게 죽여버리고, 얇은 종이는 오징어처럼 휘어진 종이를 만들어 버린다.[30] 또한 토너는 탄소 소자이기 때문에, 그 위에 연필이나 볼펜등으로 필기를 할 수 없다. 그래도 포스트스크립트를 지원해주는 레이저프린터가 그 가격에서는 그나마 낫다. 왜냐하면 잉크를 쓰고 싶다면 수 억 원 하는 윤전기를 사야만 제대로 작업을 할 수 있기 때문. 그나마 레이저처럼 빠르고, 이미지가 좋게 나오는 기적의 잉크프린터가 시중에 아주 싼 가격에 나와 있기는 한데, Page Straight Array 방식의 잉크프린터이다. 우리가 흔히 생각하는 잉크젯 프린터는 잉크 헤드가 조금하고 가이더에 달려서 종이 위를 이리저리 움직이면서 아주 느리게 인쇄를 하는데, PSA프린터는 헤더가 판으로 되어 있고, 그 판에 수만 개의 구멍이 뚫려저 있어서 헤드는 움직이지 않고 안정적이면서 빠르게 잉크를 종이에 적시는 프린터이다. PSA기반의 잉크프린터 중에는 LG마하젯[31]과 HP오피스젯 프로 X가 있는데, LG마하젯은 염료잉크를 쓰기 때문에 물이나 습기가 닿으면 지워지고, HP오피스젯 프로 X는 안료잉크 기반이라서 물이나 습기가 닿아도 문제는 없는데, PCL 기반이라서 출판용으로 쓰기에는 무리가 있다. 만약 HP오피스젯 프로 X가 포스트스크립트나, 1Bit CMYK를 지원해준다면 사무용 잉크젯으로 왠만한 A3크기의 간행물들은 전문적으로 뽑아봐도 무리가 없다고 할 수 있겠다. 하지만 현재까지는 불가능하다.

그런데 인디자인의 그런 문제가 신기하게도 QuarkXPress에는 없다. QuarkXPress 인쇄 대화상자를 보면 컬러 항목에서 Composite 모드에서도 CMYK 색상별로 하프톤스크린, 하프톤주파수 등을 별도 지정할 수 있다. 그래도 인디자인이 쓰기는 더 쉬운데. 하지만 그것이 굳이 문제될 게 없는 것이, 원래 포스트스크립트가 하프톤스크린이나 여타 옵션들을 그냥 명령만 내리면 프린터 내장 립에서 그에 맞춰 다 레스팅 해주기 때문에, 속도만 느릴 뿐 돈 들여서 외장 립을 살 이유가 없다. 아니 오히려 그것 때문에 포스트스크립트 프린터를 사는 이유이기도 하고. 다만 문제는 어도비 소프트웨어에서 그 명령을 내리지 못 할 뿐이라 아쉬울 뿐이다. 물론, 이렇게 조종한다고 포스트스크립트가 알아서 밝기나, 채도등을 맞춰주지는 않는다. 자신이 알아서 CMS를 가지고 컬러켈리브레이션을 해야하는데, 문제는 QuarkXPress는 이상하게 CMS를 안 먹는 것 같다. 고로 인디자인을 가지고 작업을 하시고, 인쇄는 외주를 맡기던가 하자.

500px

2.3.6 NSA가 당신을 지켜보고 있습니다.

가정용, 사무용 제품의 경우 Machine Identification Code[32]가 같이 인쇄돼기 때문에 상업용으로 쓰기에는 무리가 있다. 만약 이 점들은 보고 싶다면 옥션에서 아트지를 사서 인쇄를 해보자, NSA가 당신을 지켜보고 있다는 사실을 항상 잊지말자. 중국에서는 화폐복제는 사형이다. 이러한 문제는 포스트스크립트의 문제만은 아니고, 모든 pcl프린터에서도 나타나는 문제이다. 그러니깐, 정확히는 프린터의 내부 운영체제 차원에서 이러한 문제가 생겨나는 것 같다.

  1. 아이러니하게도 '불(佛)마력'인데 독일어 단어를 쓴다. 프랑스어로는 'Cheval-vapeur'이며, 그래서 CV라고도 쓴다.
  2. Page Description language
  3. OpenGL은 그 이상도 가능하다.
  4. 모두 다 대단한 분들이며, 쓸만한 소프트웨어를 많이 만드셨다. 특히 워녹은 수학, 철학, 컴퓨터과학 이 세 가지를 전공한 유능한 분들이다. 이야 부럽다.
  5. 넥스트사의 넥스트스텝. 비싼 가격이지만 지금봐도 상당히 미려하다.
  6. 응용프로그램은 단지 운영체제 상에서 돌아가는 눈에 보이지 않는 프로세스에 불과하다. 그것을 윈도우서버가 화면을 그리고, 사용자와 응용프로그램 사이를 이어주는 것일 뿐.
  7. 응용프로그램이 여러가지 그래픽 API를 사용하는 모습. 그래픽 API를 사용해야 그래픽가속이 된다. 결국 OpenGL로 해석된다.
  8. CPU의 힘을 빌리지 않고 아주 고속으로 프레임을 그린다. PDF도 Quartz2D와 관련이 깊다.
  9. 국토지리정보원의 PDF 지도가 대표적인 예. http://www.ngii.go.kr/world/mapdownload.html
  10. PDF로 출력을 하거나, 변환이 안 되는 것은 아니지만, 서술한 문제가 발생한다.
  11. 별도의 색
  12. 실제 고스트스크립트에서 포스트스크립트 파일을 OpenGL로 변환 할 수 있다.
  13. Quartz를 이용한 하프톤쉐이더 로직.
  14. HP인디고의 모습.
  15. 초 대규모 직접회로
  16. John and Martin, 존과 마틴 자신들을 뜻한다.
  17. Apple LaserWriter
  18. 레스터 이미지 프로세서, 립, RIP이라고도 불리는.
  19. 어도비는 간편한 전문용어를 위해서 레벨이라는 단어를 없앴다.
  20. 스즈미야 하루히 참고.
  21. [1]
  22. 인덱스 같은
  23. 다양한 패턴의 스크린들이 있다.
  24. 선 수라고도 한다. 하프톤을 재현하기 위해서 원본이미지를 얼마만큼 세밀하게 샘플할 것인가를 결정하는 요소이다. 주파수가 높을수록 재현되는 이미지가 높아지지만, 무조건 높게 잡는다고 좋은 것은 아니다. 인쇄해상도 대비, 이미지의 색농도를 가장 잘 표현해내는 주파수를 찾는 것이 중요하다.
  25. 각각의 채널별로 각도를 다르게 만든다. 왜냐하면 하프톤 패턴이 같은 각도로 겹치면 모아레 현상이 발생하기 때문. 어쩌면 대부분의 제조사들이 프린터를 AM하프톤이 아닌, FM하프톤으로 하는 이유는 성가신 모아레를 없애버리기 위한 꼼수 일지도 모르겠다. 소비자들은 모아레를 싫어하기 때문에 AS문의가 들어올 수도 있고 말이다.
  26. 각 색들을 분리하는 것을 의미한다. 옵셋같이 채널이 나눠있는 경우에나 필요하다.
  27. 레이저프린터들은 선 형태의 하프톤을 갖는 경우가 많다.
  28. 명함같은 굵은 종이는 상관없다.
  29. OEM으로 LG에서는 이름만 붙여서 팔고, 기술은 해외업체의 것이다.
  30. #