포스트스크립트

 

1. 추신을 뜻하는 영어 단어
2. 전자 문서 형식
2.1. 개요
2.1.1. 어도비의 창립
2.1.2. 포스트스크립트의 위치와 한계
2.2. 역사
2.2.1. 포스트스크립트 레벨 1
2.2.2. 포스트스크립트 레벨 2
2.2.3. 포스트스크립트 레벨 3
2.3. 기술
2.3.1. 프로그램 언어
2.3.2. 유닛의 크기
2.3.3. PPD와 PS 파일, 인터프리터, 그리고 스풀러
2.3.4. EPS와 PDF와의 관계
2.3.5. 어도비 소프트웨어에서의 문제점


1. 추신을 뜻하는 영어 단어


Postscript
'Post Scriptum', 즉, "작성 뒤에 쓰여졌다."라는 뜻의 라틴어에서 나온 영어 단어로서 흔히 편지 마지막에 P.S. 혹은 PS로 쓰인다.
문서를 작성하고 마지막에 본인 확인을 위한 서명까지 한 뒤에, 급하게 추가해야 할 짤막한 내용이 생겼을 때 서명 밑에 적는 것에서 유래되었다.
P.S.를 한 번 더 쓸 경우엔 P.S.S.가 아니라 P.P.S.라는 점에 유의.(계속 P.를 더한다.)

2. 전자 문서 형식



2.1. 개요


[image]
어도비 포스트스크립트 공식 사이트
어도비 포스트스크립트 3 레퍼런스북 (PDF 파일)
포스트스크립트란 디지털 인쇄 기술의 근간인 프레임워크의 일종이다. PostScript, PS라고 불리우며, PDF와 같은 전자 문서 형식이며, 페이지 기술 언어(Page Description Language, PDL)의 일종이고, PDF의 전신이다. 후에도 서술하겠지만 PDF와 포스트스크립트는 기본적으로 페이지를 기술하는 언어라는 점에서 PDL이라는 같은 집합에 속하지만, 포스트스크립트는 단순 페이지 기술에만 그치는 것이 아니라, 프린터에서 돌아가기도 하는 프로그램이기 때문에, 그것들을 설계할 프로그래밍 프레임워크라는 집합에도 속한다.
현재는 언어 레벨 3까지 발표되고 개발이 종료되었다. 벡터 그래픽 모델을 기반으로 하며, 다양한 기능, 필터, 이차원 도형과 폰트, 그리고 다양한 색 모델들을 지원한다. 아쉽게도 PDF와 마찬가지로 이차원 벡터가 한계이다.[1]

2.1.1. 어도비의 창립


어도비의 창립자인 존 에드워드 워녹, 찰스 게스케, 더그 브로츠, 에드 태프트, 빌 팩스톤이 이 기술을 1982년에 발표했으며, 어도비의 시작이자 지금의 어도비를 있게 만든 기술이라고 봐도 무방하다.[2] 포스트스크립트 발표는 탁상 출판(DTP)이라는 혁명적인 기술 진보를 일으켰다. NeXTSTEP이 이 포스트스크립트 기술을 이용하여 인쇄, 디스플레이를 했으며, 스티브 잡스가 인쇄에 사용되던 포스트스크립트를 개량해 디스플레이 포스트스크립트라는 개념을 도입했다. 그 당시 부터 폰트 기술과 포스트스크립트를 비롯해서 스티브 잡스와 어도비와의 관계는 깊었다. 또한 포스트스크립트는 현재 PDF의 아버지, 아니 거의 같다고 봐도 무방하며, 인디자인과 일러스트레이터 등 벡터기반의 어도비 응용 프로그램들 보다도 먼저 개발되었고, 그것들의 근간이 되었다.

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


하지만 전자 출판 산업의 발달로 인쇄 기술이 사양 산업이 돼 버린 지 오래인 지금, 인쇄에 국한되었던 포스트스크립트를 조금 더 넓은 매체에서 수용가능한 PDF가 그 자리를 대체해 가고 있다.
후술하겠지만 PDF와 포스트스크립트는 그래픽 모델 자체는 같지만, 몇 가지 근본적인 차이가 있다. 어찌되었든 이나 iOS같은 디스플레이를 기반으로 하는 장치들은 PDF나 포스트스크립트를 그래픽 API로 가속할 수 있는 데 비해, 인쇄물은 아무리 컴퓨터 성능과 그래픽 처리 기술이 발달해도 제대로 된 호스트 기반의 래스터화도 보급되지 않았고, 대부분의 프린터들도 내부에 저렴한 프로세서를 통해서만 인쇄하게끔 되어 있다.
그래서 복잡한 벡터 그래픽을 포함하거나[3] 큰 파일의 PDF, PS 파일을 인쇄하면, 컴퓨터는 놀고 있고 프린터가 오랫동안 래스터화 처리를 해야 결과물을 출력해 볼 수 있다. 이 부분은 프린터의 마이크로프로세서 성능과 관련이 있으므로 프린터에 메모리를 추가한다고 개선되지 않는다. 물론 PCL[4] 프린터들은 대부분 컴퓨터에서 호스트 컴퓨터에서 래스터화 처리를 하기 때문에 큰 파일의 PDF나 포스트스크립트를 인쇄해도 그닥 느려지지는 않는다. 더욱이 요즘 나오는 HP 오피스젯 같은 PCL 프린터들은 OpenCV를 이용해서 그래픽을 훨씬 빠르게 처리한다. 그렇기 때문에 PCL 프린터는 포스트스크립트를 에뮬레이터로 지원하기 때문에 그냥 PCL을 쓰는 게 훨씬 빠르고 정확하게 나온다. 왜냐하면 포스트스크립트 에뮬레이터는 결국 포스트스크립트 명령어를 다시 PCL로 해석 작업을 한 후에 인쇄를 해야 하고, 컴퓨터에서 래스터화 해주던 것을 프린터 내부에서 해석과 함께 래스터화까지 해야 되는지라 어마어마하게 느려지기 때문이다. 웬만한 사무실에서 포스트스크립트를 지원하지 않는 프린터에 포스트스크립트 지원해 준다고 좋아하면서 에뮬레이터 드라이버를 깔면, 가벼운 PDF 파일을 인쇄해도 시간이 매우 오래 걸린다.
결론적으로, 진짜 포스트스크립트 프린터가 아닌 경우, 어짜피 포스트스크립트 그래픽 모델도 제대로 지원하지 않아 그래픽이 깨져서 나올 수도 있고 속도도 엄청 느려지기에, 그냥 PCL 드라이버를 깔 것을 권장한다. 가끔 한글 파일을 출력하면 프린터에서 표 같은 것들이 깨져서 나오는 경우가 있는데, 이 경우는 PCL과 포스트스크립트 기술 형식 차이에서 오는 문제이다. 애초에 한글 같은 프로그램들은 그래픽 모델이 Windows에서 쓰는 DirectX에 맞게끔 만들어져 있는데, PCL의 경우도 DirectX를 쓰기 때문에 같이 호환이 되고 호스트에서 가속도 가능하다. 한마디로 PCL은 Windows 화면에 보이는 그대로를 출력할 수 있다는 이야기이다. 이나 iOS에서도 그래픽 모델 자체를 Metal 기반에 PDF를 얹혀서 쓰기 때문에 화면에 보이는 그대로를 PDF나, 포스트스크립트로 출력할 수 있다. 하지만 프린터가 포스트스크립트나 PDF를 지원해서 그 드라이버를 설치한 경우, 한글에서 생성한 파일을 출력할 때는 앞서 이야기한 깨져서 나오는 문제가 발생할 수가 있다. 이는 PCL에서 쓰는 그래픽 모델과 어도비에서 쓰는 그래픽 모델 자체가 완전히 호환이 되지 않아서 생기는 문제인데, 애초에 한글 같은 프로그램에서 PDF를 완벽히 지원을 해서 출력을 해 주는 수 밖에 없을 듯 하다.[5]
그러나 전문가들은 PCL을 사용하기도 곤란한 것이 CMYK 색공간을 지원하지 않고 RGB 색공간만 지원하기 때문이다. 이것이 문제가 되는 이유는 인쇄소는 CMYK 색공간을 쓰기 때문이다. 어도비 인디자인이나 일러스트레이터로 출판물을 만들 때 인쇄소에 정확한 CMYK값을 전달해야 하는데, RGB 색공간과 CMYK 색공간은 서로 리니어하지 않기 때문에 상호 변환하면 값이 틀어지며, 단순 색 문제 만이 아니라 하프톤에도 지대한 영향을 준다. 출판업 관련 일을 하는 사람들에게는 심각한 문제이다. 다만 전자 출판을 한다거나 사진 등을 출력하거나, 일반 사무용, 가정용에서는 오히려 RGB 색공간이 CMYK 색공간 보다 더 나은 경우가 많다.
포스트스크립트는 이론상 하프톤 패턴도 조정 가능하며, 그래픽 API들처럼 엔드 투 엔드로 어떻게 렌더링을 할 것인가도 설정 가능하다. 더욱이, CMYK를 떠나서 화폐를 복제한다고 치더라도 별도의 색을 어떻게 지정하고, 그것을 실제 용지에 어떤 패턴으로 인쇄시킬 것인가를 포스트스크립트에 모두 담을 수 있다. 포스트스크립트는 프린터에서 작동되는 프로그램이기 때문이다.
포스트스크립트를 빠르게 처리하기 위한 대안으로는 프린터가 1비트 CMYK 비트맵 이미지를 지원하며, 호스트 컴퓨터가 래스터화 처리를 해 포스트스크립트를 TIFF로 변환하면 된다. 물론 하프톤도 쉽고 세밀하게 조절할 수 있도록 되어야 하고. 또다른 방안으로는 포스트스크립트를 버리고, OpenGL 기반의 인쇄 형식을 만드는 것도 있다.[6] 그리고 그 OpenGL로 만든 1비트 CMYK 비트맵 이미지를 프린터가 읽어들여 출력한다. 거기다 그래픽 가속까지 지원한다면 고속 프린터를 제작할 수 있을 것이다.[7] 하지만 프린터 제조사들은 그런 프린터를 만들고 있지 않으며, CMYK 색공간이 지원되는 포스트스크립트 프린터도 희귀하다. 물론 1비트 CMYK 비트맵 이미지를 지원하는 프린터는 시중에 일부 있고, 호스트 기반의 외장 립도 지원하는 프린터도 있다. 하지만 그런 레이저 프린터는 가격이 매우 비싸고, 오프셋 인쇄 같은 윤전기들은 그냥 CTP로 필름에 내려받으면 되기 때문에 그 문제로 고민할 필요가 없다.
PCL 프린터이든, 포스트스크립트 프린터이든, 오프셋 인쇄든 결론적으로 마지막 과정에서는 종이에 직접 새겨지기 위해 비트맵 이미지로 처리되는데, 그 용량이 꽤나 크다. CMYK의 경우 1비트라고 하더라도 페이지당 수백 메가 바이트 정도나 된다. 이것은 프린터 기술이 아무리 오래됐다고 해도 모니터 해상도보다 훨씬 높기 때문이다. 다양한 밝기와 명암, 채도를 지원하는 디스플레이와 달리, CMYK 네 가지 색밖에 없는 프린터가 하프톤을 그리기 위해서는 해상도가 매우 높아야 한다. 요즘 프린터들 성능에 직접 래스터화를 하지만 않는다면 그 정도의 데이터는 굳이 내부 프로세서가 입출력 하는데 무리가 갈 정도는 아니며, 대신 비트맵 이미지를 저장할 수 있는 메모리는 대부분 DDR2로서 1 기가바이트도 얼마 안 하기 때문에 그것 역시 문제가 되지는 않는다. 벡터 기반의 포스트스크립트도 인쇄하기 위해서는 비트맵 이미지로 래스터화 해야 한다. PCL은 RGB 색공간 기반이지만 결론적으로는 잉크나 토너가 CMYK 색공간이므로 CMYK 색공간 비트맵 이미지로 변환해야 한다. 사용자가 디스플레이에 RGB 색공간 이미지를 PCL로 인쇄를 하면 결론적으로 RGB 색공간에서 CMYK 색공간으로 한 번의 변환 과정만 거치지만, 만약 전문 출판 작업을 하는 경우이면, CMYK 색공간에서 RGB 색공간으로 변환을, 그리고 다시 RGB 색공간에서 CMYK 색공간으로 2번 변환해야 하기 때문에 PCL은 앞서 서술했지만 출판용으로 쓰기에는 무리가 있다.

2.2. 역사


포스트스크립트의 기원은 1976년에 존 에드워드 워녹이 일 했었던 에반스 앤 서덜랜드(http://www.es.com)라는 컴퓨터 그래픽 회사로 거슬러 올라간다. 그 시기 존 에드워드 워녹은 뉴욕항에서 방대한 규모의 3차원 그래픽 데이터베이스를 위한 인터프리터를 개발하고 있었다. 존 에드워드 워녹은 여기서 그래픽 처리를 위한 디자인 시스템 언어를 생각했다.
이와 비슷한 시기에 제록스 PARC의 연구원들은 최초로 레이저 프린터를 개발했고, 이에 걸맞는 페이지 이미지를 정의하는 방법이 필요하게 되었다. 1975년과 1976년 사이에 밥 스풀과 윌리암 뉴먼은 인쇄 형식을 개발했는데, 이는 결국 제록스 스타의 레이저 프린터를 구동하는 데에 사용되었다. 그러나 이 인쇄 형식은 프로그램 언어 보다는 단순 데이터에 가까웠고, 유연성이 부족했다. 그래서 제록스 PARC는 추후 인쇄 형식의 후속으로 인터프레스라는 자체 인쇄 형식을 개발했다.
1978년에 에반스 앤 서덜랜드는 존 에드워드 워녹에게 유타에 위치한 본사로 오기를 요청했으나, 그는 마틴 뉴웰과 함께 캘리포니아의 제록스 PARC에 이직했다. 그들은 거기서 VLSI 설계나 유형 조사, 그리고 그래픽 인쇄 등에 사용될 JaM[8]이라는 디자인 시스템을 작성한다. 이들의 작업은 제록스 PARC의 인터프레스 언어에 반영되었다.
존 에드워드 워녹은 후에 찰스 게스케와 함께 제록스 PARC를 나와서 어도비 시스템즈를 1982년도 12월에 창립하게 된다. 그들은 더그 브로츠, 에드 태프트, 그리고 빌 팩스톤과 함께 인터프레스와 비슷하면서 포스트스크립트라고 불리는 단순한 프로그램 언어를 1984년에 시장에 내놓았다. 이 시기에 스티브 잡스가 어도비를 방문하게 되는데, 그가 포스트스크립트를 레이저 프린터의 구동 언어로 사용되도록 그들을 닥달했다.
[image]
1985년 3월에 나온 애플 레이저라이터는 세계 최초로 포스트스크립트 처리 엔진을 탑재한 레이저 프린터인데, 이것은 1980년대 중반 탁상 출판이라는 혁명의 불씨가 되었다. 포스트스크립트의 기술적 장점과 광범위한 가용성의 조합은 포스트스크립트를 그래픽 인쇄에 필수가 되게 만들었다. 1990년대에는 포스트스크립트 인터프리터[9]가 대다수 레이저 프린터들의 공통적인 구성 요소가 되기도 했었다.
어쨌든 그 당시 포스트스크립트를 실현하는 비용은 상당히 비쌌는데, 그 이유는 프린터에서 포스트스크립트 코드를 해석해 래스터화 하는 작업을 했는데, 당시에 아주 높은 사양의 마이크로프로세서와 충분한 메모리를 요구했기 때문이다. 어느 정도 높은 사양이냐 하면 포스트스크립트를 지원하는 레이저 프린터였던 애플의 레이저라이터가 모토로라 68000 12MHz CPU를 사용했는데, 이 사양은 그 당시 어떤 매킨토시보다도 빨랐다. 레이저 프린터가 포스트스크립트 엔진을 지원하는 것만으로도 천 달러 이상의 비용이 추가되었다. 그러나 기술의 발전으로 프린터 비용에서 포스트스크립트를 구현하는 비용은 괜찮은 정도의 가격이 됐고, 그에 더불어 데스크탑 컴퓨터의 성능이 강력해지면서 더 이상 프린터에서 포스트스크립트 해석 작업을 하지 않아도 됐다. 21세기가 되자 포스트스크립트를 지원하지 않는 싼 값의 잉크젯 프린터들의 경쟁으로 큰 폭으로 성장함에 따라, 인쇄 스풀러에서 포스트스크립트 이미지를 렌더하는 방식으로 거의 모든 저가형 프린터 모델에서 포스트스크립트를 지원할 수 있게 됐다. 포스트스크립트의 계승인 PDF 또한 그러한 방법 중의 하나이고, 전자문서 유통을 위한 사실상의 표준으로 포스트스크립트를 대체했다. 아직도 고급 프린터는 포스트스크립트 프로세서가 남아있고, 이것이 CPU의 부담을 줄여주고 있다.

2.2.1. 포스트스크립트 레벨 1


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

2.2.2. 포스트스크립트 레벨 2


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

2.2.3. 포스트스크립트 레벨 3


포스트스크립트 3는[10] 1997년도 말에 다음과 같은 기능들과 함께 출시되었다.
  • 많은 딕셔너리 기반 형태의 새 명령 연산자.
  • 더 나은 방식의 색 처리.
  • 프로그램 압축, 압축 해제가 가능하고, 프로그램 청크, 그리고 고급 오류 처리 기능 같은 새로운 필터들 포함.

2.3. 기술


[image]
[image]
포스트스크립트의 벡터 윤곽선 글꼴
웹과 캐드를 비롯한 벡터 그래픽 작업에 유리하다.
포스트스크립트는 강력한 그래픽을 지원하면서도 간단하게 해석되는 프로그램 언어이다. 이는 사용자가 직접 프로그래밍을 해서 폰트나 도형과 같은 그래픽을 표현할 수 있으며, 컴퓨터와 프린터, 응용 프로그램과 윈도우 서버와 같은 상호 작용하는 시스템에서 진가를 발휘한다. 중요한 점은 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. 유닛의 크기


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

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


[image]
컴퓨터 상에서 PPD가 작동되는 원리는 간단하다. 만약에 포스트스크립트를 지원하는 프린터를 한 대 구매했다면, 훨씬 간단하게 이해할 수 있다. 프린터를 사면은 당연한 이야기이지만 드라이버를 주기 마련인데, 그 드라이버는 당장에 필요없을 수도 있다. 왜냐하면 프린터의 프로토콜은 usb나 ipp, lpd, 그리고 애플토크 같은 이미 표준화된 인터페이스들이 쓰이고, 그렇기 때문에 인터페이스 드라이버는 이미 운영 체제 상에서 지원된다. 또한 실질적으로 프린터에 명령을 내리고 일을 시키는 것은 전적으로 운영 체제의 표준화된 스풀러(Spooler)의 역할이므로 굳이 드라이버가 없어도 인쇄가 안 되는 것은 아니다. 스풀러의 종류로는 CUPS(Common Unix Printing System)[11], Ghostscript, Gimp 등이 있다.
하지만 프린터에 따라 각자 다 다른 지원 가능 용지 크기와 양면 인쇄 가능 여부, 색상 모델, 그리고 제조사 특유의 별도 기능들을 사용하기 위해 프린터 드라이버의 역할이 중요하며, 포스트스크립트 프린터는 PPD(PostScript Printer Description)라는 포스트스크립트 드라이버가 그 기능을 담당하게 된다. 이것은 제조사에서 제품별로 따로 작성을 하는데, PPD는 텍스트 기반으로 되어 있기에 여타 실행 파일 같은 드라이버와는 조금 다를 수 있다. 하지만 필요에 따라서 사용자가 직접 수정할 수 있기도 하다. 또한 이 PPD가 포스트스크립트와 장치 독립적인 PDF에서 장치 호환적인 역할을 할 수 있게끔 만들어 주는 중요한 역할을 하는데, 이것은 어도비 일러스트레이터나 어도비 인디자인 같은 응용 프로그램에서 인쇄를 할 때나 PS 파일을 출력할 때에 참조된다. 예를 들면 어도비 인디자인에서 셋업 페이지 크기부터 출력 색상 모델까지도 이 PPD에 기술된 대로만 할 수 있으며, 프린터 부가 기능에 대해서 유저 인터페이스까지도 기술돼 있고, 응용 프로그램은 그것을 기반으로 인터페이스를 꾸리며, PPD에 기술된 메뉴로 사용자가 선택을 하게 되고, 출력되는 파일에 고스란히 그 값을 반환한다. 운영 체제에서 프린터를 설정할 때에 이 PPD를 기반으로 설정 메뉴를 구성하며, 심지어 소모품 잔량을 확인하기 위한 소모품 항목과, 하드디스크나 메모리 추가 옵션도 모두 PPD에 기술돼 있다.
그렇다면 PS 파일은 무엇일까? 간단하게 설명해서 PDF 같은 도큐멘트 파일로 이해하면 쉬울 것 같다. 앞서 설명했듯이 인디자인 같은 응용 프로그램이 파일을 출력할 때에 PPD를 참조해서 PS 파일을 제작하게 되는데, 출력을 하기 위한 그래픽적 요소와 명령들을 모두 품고있는 핵심적인 파일이다. 애초에 PDF가 폰트를 내장하는 것은 원래 포스트스크립트 기술이다. 이것은 응용 프로그램에서 스풀러에게 전달되고, 스풀러는 경우에 따라서 자신이 인터프리터 역할을 자처해서 래스터화를 하는 경우도 있지만, 대개의 포스트스크립트가 지원되는 프린터에서는 그냥 프린터에 이 파일을 전달하는 역할만 하고 끝나게 된다. 무엇보다 PS 파일과 인터프리터는 포스트스크립트의 정체성이 프로그램이라는 것 상기해보면 땔래야 땔 수 없는 관계이다. PS 파일은 프로그램 파일, 인터프리터는 바이너리화를 담당한다.
포스트스크립트 프린터는 인터프리터가 내장되어 있는데, 인터프리터란 해석기를 의미하며 앞서 설명한 PPD를 참조하여 만들어진 PS 파일을 이 인터프리터에서 해석하게 된다. 해석된 PS 파일은 프린터라는 컴퓨터 내부에서 돌아가는 프로세스가 된다. 이것이 무엇을 의미하냐면, PPD는 우리가 프로그래밍할 때의 쓰는 헤더 파일이고, PS 파일은 프로그램 파일, 그리고 그것이 프린터 운영 체제에 위에서 돌아가는 프로그램이 된다는 이야기이다. 여기서 해석이란 사용자가 주문한 여러가지 명령들을 실제 실행하게끔 하는 것도 있겠지만, 원래는 여러가지 노드를 거쳐서 래스터화 후에 비트맵 이미지를 만드는 것이 본래의 목적이겠다. 즉, PS 파일은 자신이 직접 프로그램이 되는 바이너리화와, 그 프로그램이 프린터 내부에서 비트맵이미지를 직접 만드는 것 이 두 가지가 필요하다. 그에 비해서 PDF는 자신이 프로그램화 되지도 않고, 비트맵 이미지를 만드는 것도 자신이 아닌 타의에 의해서 이루어진다. 그냥, 단순한 이미지 파일로 보면 편할 것 같다. 참고로, 이 인터프리터가 PS 파일에 에러가 있으면 무엇이 에러인가 하고 페이지에 출력해주기도 하는데, 대개는 폰트의 문제인 것 같다.

2.3.4. EPS와 PDF와의 관계


[image] [image]
가장 쉬운 것이 EPS와 PS 파일간의 관계이겠다. PS는 PostScript를 뜻한다는 것은 잘 알 것이다. EPS는 Encapsulated PostScript를 뜻하며, 캡슐화된 PS 파일을 의미한다. 가장 큰 장점은 PS 파일과 달리 미리보기 기능을 지원한다는 것이다. 그래픽 파일 형식으로 많이 이용되는데, 그래픽 형식답게 PS 파일이나, PDF와 달리 한 페이지씩 밖에 저장할 수 없다.
PDF는 어도비에서 1993년에 발표한 기술인데, 포스트스크립트가 1982년에 발표된 것에 비하면 약 10년 만에 발표했다는 점과 포스트스크립트가 어차피 PDF의 전신, 아니 거의 똑같다고 보면은 왜 어도비가 PDF를 개발했는지 의아할 수 있다. 실제로 포스트스크립트 만으로도 꽤 훌륭한 기술이며, 탁상 출판의 혁명을 이끌고도 남는 엄청난 기술이다.
PDF는 포스트스크립트와 같이 '''어도비 이미지 모델'''을 공유한다. 실제로 어도비 또한 PDF와 포스트스크립트가 무엇이 다른가 하는 문서도 만들었을 정도.[12] 하지만 다른 점도 있는데, 앞서 이야기 했듯이 PDF에는 포스트스크립트의 핵심 기능인 범용 프로그래밍 프레임워크가 빠져있고, 효율적인 임의 접근과 탐색을 위한 인덱스 정보를 포함한 대화형 보기를 위해 정적 데이터 구조를 갖고있다. PDF의 개발 목적은 인쇄를 목적으로 한 포스트스크립트와 달리 이동식 문서로서의 기능을 중시한다. 예를 들면 전자책이나, 영상을 포함할 수 있는 디스플레이 기기를 위한 문서이다. 어도비가 한 페이지 밖에 저장 안 되는 EPS나, 미리보기나 인덱스 기능이 없는 포스트스크립트보다 PDF를 밀고 있는 것은 전자 문서 유행을 따르기 위해서이다. 포스트스크립트가 미리보기 기능이 없는 이유는 원래 특정 장치에 렌더링 명령을 내리는 기능이 있기 때문이다. 만약 흑백 프린터에 적합하도록 하프톤이나, 색 등을 설정한 PS 파일은 그 장비에서 가장 적합하게 보여진다. 물론, 강제로 미리보기를 할 수는 있지만, 우리가 생각하는 무조건 장치 독립적인 PDF 파일과는 다르다.
정리를 하자면, 포스트스크립트는 워크플로어상, 장치 독립적이라고는 하지만, 렌더링되는 장치들에 꼭 맞게 설정된 하나의 프로그램 파일이다. 그 파일만 있으면 그 장치의 목적에 맞게, 그 장치에서 직접 실행되고, 직접 그 장치에 맞게 렌더링한다. 그에 비해 PDF는 장치에 독립적이며, 하나의 파일로 모든 장치에서 볼 수 있게 만들었다. 이것이 PDF와 포스트스크립트의 가장 큰 차이점이다.

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


포스트스크립트를 만든 것은 정작 어도비인데, 인쇄를 하거나 PS 파일을 출력할 때에 타사의 응용 프로그램이 훨씬 뛰어난 경우가 있다. 그 부분은 다름이 아닌 바로 포스트스크립트 하프톤 부분이다. 인디자인이나 일러스트레이터 같은 응용 프로그램의 Output 항목에서 Composite CMYK, 또는 Composite Leave Unchange를 선택하면 하프톤 스크린[13]과 주파수[14], 그리고 각도[15]등을 설정하는 항목이 블락된다. 물론 Separations이나 In-RIP Separations을 선택하면 그런 기능들이 되기는 하지만, PPD에 명시된 하프톤 스크린과 주파수, 그리고 각도만 선택 가능하며, Separations은 분판[16]을 의미하기 때문에 인쇄할 때에는 의미가 없다.
[image]
결론적으로 어도비 인디자인에서 Composite CMYK나, Composite Leave Unchange를 선택하면 포스트스크립트 프린터에서는 프린터 내부의 기본 설정으로 하프톤 스크린과 주파수, 그리고 각도로 인쇄된다. 만약 둥근 점으로 이루어진 하프톤 스크린으로 인쇄하고 싶거나[17], 출판이나 시안용으로 별도의 선수와 각도를 설정하고 싶다면 외장 립 응용 프로그램을 쓰라는 의미와 다름이 없다. 하지만 비싼 외장 립을 쓴다고 해도 레이저 프린터에서 지원을 안 해주는 경우가 대부분이고, 일부 포스트스크립트 프린터에서만 외장 립을 지원해준다. 결국 외장 립은 주로 외장 립을 지원해주는 프로토콜을 탑재한 전문가용 플로터나, 옵셋 같은 데에 사용된다.
웬만한 영세한 인쇄소들은 수억 원 하는 오프셋이나 인디고를 쓰지 않으면 레이저 프린터를 쓰는데, 인쇄소용 레이저 프린터들은 1비트 CMYK 비트맵 이미지나, 포스트스크립트를 지원하기 때문에 출판용으로 쓸 수 있다. 하지만 가장 큰 문제점은 레이저 프린터는 토너를 종이에 정착시키기 위해서 열과 압력을 가하기 때문에 질감을 평평하게 죽여 버리고, 얇은 종이는 오징어처럼 휘어지게 만든다. 또한 토너는 탄소 소자이기 때문에, 그 위에 연필이나 볼펜 등으로 필기를 할 수 없다. 그래도 포스트스크립트를 지원하는 레이저 프린터가 그 가격에서는 그나마 낫다. 왜냐하면 잉크를 쓰고 싶다면 수억 원 하는 윤전기를 사야만 제대로 작업을 할 수 있기 때문. 그나마 레이저처럼 빠르고, 이미지가 좋게 나오는 잉크젯 프린터가 시중에 아주 싼 가격에 나와 있기는 한데, Page Straight Array 방식의 잉크젯 프린터이다. 우리가 흔히 생각하는 잉크젯 프린터는 잉크 헤드가 조금하고 가이더에 달려서 종이 위를 이리저리 움직이면서 아주 느리게 인쇄를 하는데, PSA 프린터는 헤더가 판으로 되어 있고, 그 판에 수만 개의 구멍이 뚫려저 있어서 헤드는 움직이지 않고 안정적이면서 빠르게 잉크를 종이에 적시는 프린터이다. PSA기반의 잉크젯 프린터 중에는 LG 마하젯[18]과 HP 오피스젯 프로 X가 있는데, LG 마하젯은 염료 잉크를 쓰기 때문에 물이나 습기가 닿으면 지워지고, HP 오피스젯 프로 X는 안료 잉크 기반이라서 물이나 습기가 닿아도 문제는 없는데, PCL 기반이라서 출판용으로 쓰기에는 무리가 있다. 만약 HP 오피스젯 프로 X가 포스트스크립트나, 1비트 CMYK 비트맵 이미지를 지원해 준다면 사무용 잉크젯 프린터로도 웬만한 A3 크기의 간행물들은 전문적으로 뽑을 수 있을 것이다. 하지만 현재까지 그런 프린터는 없다.
그런데 인디자인의 그런 문제가 신기하게도 QuarkXPress에는 없다. QuarkXPress 인쇄 대화 상자를 보면 컬러 항목에서 Composite 모드에서도 CMYK 색상별로 하프톤 스크린, 하프톤 주파수 등을 별도 지정할 수 있다. 하지만 그것이 굳이 문제될 게 없는 것이, 원래 포스트스크립트가 하프톤 스크린이나 여타 옵션들을 그냥 명령만 내리면 프린터 내장 립에서 그에 맞춰 다 래스터화 해주기 때문에, 속도만 느릴 뿐 돈 들여서 외장 립을 살 이유가 없다. 아니 오히려 그것 때문에 포스트스크립트 프린터를 사는 이유이기도 하고. 다만 문제는 어도비 소프트웨어에서 그 명령을 내리지 못해 아쉬울 뿐이다. 물론, 이렇게 조종한다고 포스트스크립트가 알아서 밝기나, 채도 등을 맞춰주지는 않는다. 자신이 알아서 색상 관리 소프트웨어를 가지고 색상 캘리브레이션을 해야하는데, 문제는 QuarkXPress는 이상하게 색상 관리 소프트웨어가 적용되지 않는다. 고로 인디자인을 가지고 작업을 하고, 인쇄는 외주를 맡기던가 하자.
[image]

2.3.6.


가정용, 사무용 제품의 경우 Machine Identification Code[19]가 같이 인쇄되기 때문에 상업용으로 쓰기에는 무리가 있다. 이러한 문제는 포스트스크립트의 문제만은 아니고, 모든 PCL 프린터에서도 나타나는 문제이다. 그러니깐, 정확히는 프린터의 내부 운영 체제 차원에서 이러한 문제가 생겨나는 것 같다.
[image]

[1] OpenGL은 그 이상도 가능하다.[2] 모두 다 대단한 분들이며, 쓸만한 소프트웨어를 많이 만들었다. 특히 워녹은 수학, 철학, 컴퓨터 과학을 전부 전공했다.[3] 국토지리정보원의 PDF 지도가 대표적인 예. http://www.ngii.go.kr/world/mapdownload.html[4] 휴렛팩커드가 만든 페이지 기술 언어(Page Description Language, PDL)의 일종이다.[5] PDF로 출력을 하거나 변환이 안 되는 것은 아니지만, 서술한 문제가 발생한다.[6] 실제 고스트스크립트에서 PS 파일을 OpenGL로 변환할 수 있다. [image][7] Quartz를 이용한 하프톤 쉐이더 로직. http://bensimonds.com/2013/02/14/halftone-shader/ [image][8] John and Martin, 존과 마틴 자신들을 뜻한다.[9] 래스터화 이미지 프로세서, 립, RIP이라고도 불리는.[10] 어도비는 간편한 전문용어를 위해서 레벨이라는 단어를 없앴다.[11] http://www.cups.org cups가 어떻게 동작되는지 로직이 그러져 있다. [image][12] http://www.adobe.com/print/features/psvspdf/[13] 다양한 패턴의 스크린들이 있다. [14] 선 수라고도 한다. 하프톤을 재현하기 위해서 원본 이미지를 얼마만큼 세밀하게 샘플할 것인가를 결정하는 요소이다. 주파수가 높을 수록 재현되는 이미지가 높아지지만, 무조건 높게 잡는다고 좋은 것은 아니다. 인쇄 해상도 대비, 이미지의 색 농도를 가장 잘 표현하는 주파수를 찾는 것이 중요하다. [image][15] 각각의 채널별로 각도를 다르게 만든다. 왜냐하면 하프톤 패턴이 같은 각도로 겹치면 모아레 현상이 발생하기 때문. 어쩌면 대부분의 제조사들이 프린터를 AM 하프톤이 아닌, FM 하프톤으로 하는 이유는 성가신 모아레를 없애버리기 위한 꼼수이다. 고객들은 모아레를 싫어하기 때문이다. [image][16] 각 색들을 분리하는 것을 의미한다. 옵셋같이 채널이 나눠있는 경우에나 필요하다. [image][17] 레이저 프린터들은 선 형태의 하프톤을 갖는 경우가 많다.[18] OEM으로 LG에서는 이름만 붙여서 팔고, 기술은 해외업체의 것이다.[19] #