1992.8.21.

SUBJECT: NeWSprint Overview

STATUS OF THIS MEMO:
이는 NeWSprint Installation and Administration Guide의
Part1중  "1. A NeWSprint Overview"를 번역한 것임.

TABLE OF CONTENTS:
0. Introduction
1. The PostScript Page Description Language
   1.1 Features of the PostScript Language
2. Traditional PostScript Printing Methods
   2.1 PostScript Imaging
   2.2 Input Translation
   2.3 Disadvantages of the Traditional PostScript Model
3. The NeWSprint Printing Model
   3.1 PostScript Imaging
   3.2 Input Translation
   3.3 Printer Extensibility

DESCRIPTION
0. Introduction
   * NeWSprint는 Sun WS상의 printing을 위해 만들어진 아주 세련된 프로그램이다.
     NeWSprint는 다양한 프린터와 Sun에 연결된 output device들을 지원하며,
     이들을 이용하여 PostScript-quality output을 프린트할 수 있게 해 준다.
   * NeWSprint는 file filtering S/W를 가지고 있어,
     이를 이용하여 다양한 file format들을 PostScript으로 convert할 수 있다.
     따라서 NeWSprint의 filtering S/W를 이용하면,
     여러 종류의 file format들을 NeWSprint Printer상에서
     PostScript으로 프린트할 수 있을 뿐만 아니라 
     이들 file들에 대해 고난도의 handling이 가능하다.
   * 이 글은 NeWSprint System의 작동 원리와 기존의 PostScript printing 방법을
     비교할 수 있는 입문으로서 활용 가능할 것이다.

1. The PostScript Page Description Language
   * NeWSprint와 다른 PostScript printing system은 공히 PostScript language에 기초한다.
     PostScript는 그래픽 디자이너가 page의 physical layout을 잡으려 할 때 처럼,
     text와 graphic을  단지 page상의 구성 요소들로 생각하는 
     device-independent language다. 
     PostScript language에 대한 개념적 접근은
     "The PostScript Language Reference Manual -the red book- (Adobe Systems)"을 참조하기 바란다.
   * 이하에서는 PostScript이 제공하는 다양한 사양들의 대강을 소개한다. 
   
   1.1 Features of the PostScript Language
       ⊙ Device-Independence:
         - 이 의미는 어느 업체에서 만든 프린터일지라도 PostScript language를 지원하는한,
           PostScript code라면 동일하게 처리 가능하다는 것이다.
         - 각 프린터의 output의 차이가 있다면,
           프린터 자체가 가진 rendering 능력에서 오는 H/W 성능 차이 정도이다.
       ⊙ Graphics and Text:
         - PostScript language로는 PostScript page상의 어디에든 세련된 graphic을
           그릴 수 있고, text와 graphic을 어떤 방법으로든 매끄럽게 연결할 수 있다.
         - PostScript graphics model은 때때로 stencil/paint model 이라고도 불린다.
           이는 모든 PostScript graphics object가 실제로 그려지기(painted) 전에 
           line path(stencils)로 취급된다는 의미이다.
         - 따라서 pixel model과는 아주 다른 것이다. pixel model은 object들을
           turn on/off 될 수 있는 dot들의 집합으로 설명하는 모델이다.
         - stencil-paint model에서는 object를 pixel model에서보다 훨씬 쉽게 다룰 수 있다.
       ⊙ Scalable Font Support:
         - PostScript 이전에는 여러 종류의 font를 지원하기 위해서는 
           주로 printer H/W에 font를  hard-code화 하는 방법을 사용하였다.
           결국 새로운 폰트나 기존 폰트중 새로운 사이즈를 추가하는 경우에도 
           새로이 H/W를 추가해야 했다.
           같은 page에 다른 종류의 font를 위치시키는 것은 제한적일 수 밖에 없었다.
         - PostScript의 device-independence라 함은
           scalable font들을 사용할 수 있는 능력이다.
           PostScript상의 폰트들은 어느 사이즈로라도 변할 수 있는 
           수학적 외형(mathematical outline) 으로 만들어지고,
           그래픽 외형(graphical outline)으로 저장된다.
         - 이런 특징은 몇 개 일지라도 종류가 다른 폰트들을 동일 page 위에 놓고서
           회전시키고, 늘이고(stretched), 뒤틀고, 칠하고 따위를 할 수 있게 하며,
           또한 여타 PostScript graphic을 다루는 같은 방법으로 폰트들을 다루는 것이 
           가능하게끔 한다.

2. Traditional PostScript Printing Methods
   * 전통적인 PostScript printing은 Apple LaserWriter와 함께 시작되었다.
     LaserWriter는 원래 PC를 위해 만들어졌지만 
     곧바로 UNIX 환경에서도 사용 가능하게 되었다.
     이후로 여러 종류의 PostScript printer가 나타나지만 기본적으로 LaserWriter가 사용한 
     printing model을 따른다. 
   * Sun에서의 PostScript printing model은 file을 두 번 변환시켜 프린트한다.
     1) PostScript imaging:
     2) Input translation:

   2.1 PostScript Imaging
       * PostScript imaging은 PostScript code를 raster image로 변환시키는 것이다. 
         raster image는 page상의 특정 위치에 있는 dot들의 집합에 불과하다.
         dot는 on(black)이거나 off(white)이다. 
         프린터의 high resolution은 보다 많은 dot들이 있음을 의미한다.
         프린터 해상도(resolution)은 dpi(dot per inch)로 표현된다.
         PostScript imaging에는 PostScript code를 실행시키고 명령에 따라 image를 생성하는 
         PostScript interpreter가 필요하다.
       * LaserWriter model에서의 PostScript imaging은 전체가 printer 내부에서 이루어진다.
         print server(PC이던 Workstation이던)상의 application은 ASCII PostScript code를 
         한 번에 한 글자씩 serial line을 통해 printer로 보낸다.
         printer 내부에 있는 PostScript raster image processor는 이 code를 실행하고,
         폰트 크기를 조정하고 하여  결국 raster image를 만들어 낸다.
         (PostScript raster image processor는 PostScript code를 처리하는 것 빼고
         어떤 것도 할 수 없는 작은 컴퓨터라 하겠다.)
         일단 image가 만들어지면 printer engine에 의해 page상에 물리적으로 printing된다.

   2.2 Input Translation
       * LaserWriter로 PostScript imaging을 한다 함은
         printer가 다 알아서 하고, print server가 하는 유일한 일이라는 것이 
         적절한 PostScript data를 printer로 보내주는 것을 의미한다.
       * 많은 standard UNIX application들은 PostScript을 지원하지 않는다.
         따라서 화일을 프린터로 보내기 전에 프린트하고자 하는 화일(포맷)을 PostScript으로 
         변환하는 방법이 있어야 한다. 이 방법을 "input translation"이라 한다.
       * UNIX는 원래 "lpd(line printer daemon)"로  input translation을 구현하고 있다.
         "lpd"는 ASCII print data와는 다른 어떤 것을 받아들이는 비PostScript printer를
         다루는데 사용되어 왔다.
         "printcap" file에 여러 entry들을 넣음으로써, 입력되는 다양한 file format들을
         원하는 data filter(filter program)을 통해 원하는 포맷으로 변환시킬 수 있게 한다.
         즉 "lpr" command의 option을 통해 "lpd"에게  변환하고자 하는  화일포맷을 알리고,
         "lpd"는 "printcap"화일을 참조하여 해당 filter program을 사용하여 
         입력 화일의 포맷을 변환하고 이를 프린터 큐(queue)로 보낸다.
         이를 그림으로 나타내면 아래와 같다.


                   Sun Workstation
             +----------------------------+
             | +----------------+ +-----+ |               PostScript Printer
             | |                | |  p  | |       +---------------------------------+
             | |      lpd       | |  s  | |       | +----------------+ +----------+ |
             | |                | |  c  | |       | |////////| |          | |
             | +----------------+ |  o  | |-------| |/ PostScript /| |  Laser   | |
             | +----------------+ |  m  | |   A   | |/ Interpreter/| |  Engine  | |
             | |////////| |  m  | |   |   | |////////| |          | |
             | |/ TranScript /| |     | |   |   | +----------------+ +----------+ |
             | |////////| |     | |   |   +---------------------------------+
             | +----------------+ +-----+ |   |
             +----------------------------+   |
                                              +----- PostScript code가 serial line을 통해
                                                     printer로 보내진다.
       * Sun Workstation쪽을 보면
            - lpd: print queue를 다룬다.
            - TranScript: incoming file을 PostScript으로 input translation함.
            - pscomm: TranScript의 일부이기도 하며 
                      printer에 연결된 serial port와의 low-level interface를 담당.
       * printer쪽을 보면
            - PostScript interpreter: PostScript imaging을 handle.
            - printer engine(흔히 laser engine이라 함): 
              page상에 실제로 image를 프린트한다.

   2.3 Disadvantages of the Traditional PostScript Model
       * printing에 있어 LaserWriter/TranScript model은
         UNIX workstation의 printing model로는 충분하지만 몇 가지 결점이 있다.
         - 느린 속도의 PostScript imaging
         - 높은 가격의 PostScript printer
         - screen image와 printed image간의 상이함

       ⊙ PostScript Imaging Speed
          * LaserWriter model의 주요 제약 사항이다.
            이는 모든 PostScript code의 처리가 프린터에서 발생하기 때문에
            한 page가 처리되는 속도는 순전히 프린터의 computing power에 의존한다.
            따라서 PC나 WS나 super computer 어느 것이 file을 printer에 보내더라도
            한 page를 처리하는데는 동일한 시간이 걸린다.
            PostScript를 print하는데 text뿐이라면 단지 몇 초가 걸리지만
            여러 크기의 다양한 폰트와 많은 그래픽들을 찍어내려면 몇 시간도 걸릴 수 있다.
            더우기 많은 사람들이 프린터 한 대를 놓고 사용하는 network 환경하에서는
            이러한 모델이 적합하지 않을 것이다.
          * 전통적인 PostScript 모델하에서도 속도 문제는 약간의 해결을 볼 수 있었다.
            몇몇 전문화된 PostScript 프린터는 메모리를 확장하거나 보다 빠른 속도로
            프린터에 코드를 보낸다던지 하는 방법을 사용했던 것.  
            그러나 이 방법도 한 page를 얼마나 빨리 찍을 것인가 하는 문제를
            프린터에 의존하고 있는 것이었다.
          * 얼마나 빨리 찍을 것인가 하는 문제에 더 큰 제약은
            serial line의 speed에 있었다.
            이는 프린터가 빠른 속도로 코드를 처리할 능력을 가지더라도, 
            자신에게 보내진 코드만을 처리할 수 있음을 의미한다.
            대부분의 serial line과 PostScript 프린터는 초당 2000자 이하를
            처리할 수 있을 뿐이다. 
       ⊙ Printer Cost
          PostScript 프린터를 산다함은 PostScript 코드 이외의 어떤 것도 할 수 없는
          컴퓨터를 구입하는 것과 같다.
          게다가 Adobe에 PostScript S/W를 license해야 한다.
          메모리 확장과 여타 폰트의 추가는 프린터 구입 비용을 더욱 늘릴 것이다.
          PostScript 프린터가 커다란 typesetting printer에 비해 쌀지라도 
          아직은 매우 비싼편이다.
       ⊙ Fuzzy WYSIWYG
          (PostScript) 프로그램을 해석하여 WYSIWYG word를 처리할 때 
          종이(pages)를 놓는 방법이 다르고
          PostScript를 프린터의 interpreter가 해석하는 방법에 따라 다르기 때문에 
          screen에서 보는 것과 page에서 보는 것이 약간씩 다를 수 있다.
          따라서 이를 "불명확한(fuzzy)" WYSIWYG이라 한다.
          
3. The NeWSprint Printing Model
   * NeWSprint는 전통적인 PostScript 프린트 모델에 대한 Sun의 대안이다.
     NeWSprint system에서도 두 가지의 
     필요한 전환 - PostScript imaging과 input translation -이 아직 존재하지만,
     아래 그림서 보듯이 다른 방법으로 제공된다.

                   Sun Workstation
             +----------------------------+
             | +----------------+ +-----+ |
             | |      lpd       | |     | |
             | +----------------+ |     | |               NeWSprint Printer
             | +----------------+ |     | |       +------------------------------+
             | |////////| |  n  | |       | +--------------------------+ |
             | |/ TranScript /| |  p  | |       | |                          | |
             | |////////| |  c  | |=======| |      Printer Engine      | |
             | +----------------+ |  o  | |   A   | |                          | |
             | +----------------+ |  m  | |   |   | +--------------------------+ |
             | |////////| |  m  | |   |   +------------------------------+
             | |/PostScript//| |     | |   |
             | |/Interpreter /| |     | |   |
             | |/(X11/NeWS)//| |     | |   +------ raster data가 
             | |////////| |     | |           high-speed parallel
             | +----------------+ +-----+ |           or video connection을 통해
             +----------------------------+           printer로 보내진다.


   3.1 PostScript Imaging
       * NeWSprint model과 PostScript model과의 가장 중요한 차이는 
         PostScript interpreter 위치의 차이다.
         NeWSprint model의 핵심은 PostScript interpreter가 프린터에서 
         workstation으로 옮겨졌다는 것.
         따라서 전통적인 PostScript 모델에서 발생했던 문제들을 
         workstation상의 PostScript imaging으로 해결하는 것이다.
         ⊙ Speed
            Imaging processor power는 이제 프린터보다는 workstation에 의존한다.
            page가 처리되는 속도는 전적으로 workstation의 능력과 메모리에 달려 있다.
            더 빠른 처리 속도가 요구된다면 workstation의 메모리를 확장하거나 
            더 빠른 모델의 workstation으로 교체하면 된다.
         ⊙ Cost
            PostScript interpreter가 프린터에서 제거되었기 때문에
            프린터는 단지 page에 image를 찍어내는
            (laser engine이 아닌) printer engine을 가진 
            "멍청한(dumb)" raster device에 불과하게 된다.
         ⊙ True WYSIWYG
            NeWSprint system에 사용되는 PostScript interpreter는
            OpenWindows package의 일부인 X11/NeWS window server이다.
            NeWS(Network Extensible Window System)은 
            screen상의 windows, menus, text에 PostScript를 구현한 
            PostScript interpreter로서 Sun에서 개발된 것이다.
            게다가 NeWS는 Sun의 scalable font set인 "OpenFonts"를 사용한다.
            NeWS는 screen과 hardcopy output 양자 모두에게서
            PostScript code 처리를 위해 사용되기 때문에 screen과 hardcopy간에
            거의 완전한 WYSIWYG을 실현한다.
       * 게다가 NeWSprint 프린터는 serial line 대신
         high-speed parallel or video interface를 사용하여
         엄청나게 빠른 속도로 받은 data를 바로바로 raster image 처리한다.
       * NeWSprint는 PostScript printing보다 싸고, 빠르고, 정교한 printing을 제공한다.

   3.2 Input Translation
       * PostScript model의 TranScript는 incomming data를 PostScript로
         변환하는데 사용되어 왔다.
         TranScript는 프린트하고자 하는 포맷으로 "lpd"를 이용하는 filter set이다.
         각 개별 fileter는 특정 input format을 가지며
         이들을 PostScript으로 변환해 준다.
         TranScript는 "lpd"에 의존하는 것이고, TranScript을 잘 사용하려면
         사용자가 "lpd"에게 사용할 filter를 알려주어야 한다.   
         "lpd"가 받아들일 수 있는 file format들은 제한되어 있다.
         이는 사용 가능한 file format들이
         "lpd" software 자체에 hard-code화 되어 있기 때문이다.
       * NeWSprint에서는 input translation을 위해 TranScript을 대체하는 
         "PreLimn"이라는 S/W package를 만들었다.
         NeWSprint는 TranScript과는 달리 단지 PostScript만을 output으로 내놓는 기능
         그 이상이다.   "PreLimn"은 강력한 filter manager이다.
         이는 incoming file들의 input format을 스스로 "발견(discover)"하고,
         "발견한" format에 따라 적절한 filter를 실행시켜 PostScript code를 만들어 낸다.
         이러한 "PreLimn"의 능력은 완벽한 확장성을 제공하게 되는데,
         확장성이란 새로운 포맷을 인식하는 새 filter를 만들 뿐 아니라
         이 filter를 적절히 실행시켜 주는 것을 의미한다.
         결국 이러한 "PreLimn"의 기능은 
         file format을 받아들이는데 제한을 가지는 "lpd"를 능가하는 것이다.
       * "PreLimn"은 "lpd"와 함께 수행되도록 만들어졌고 
         또 독립된 application으로서 command line서 수행될 수도 있다.  
         "lpd"에 있는 "PreLimn"과 command line상의 "PreLimn"을 함께 사용한다면,
         file이 처리되는 방식에 보다 많은 제어를 할 수 있을 뿐 아니라   
         file들이 "lpd"로 쌓이기(queued) 전이나 이후에 이 file들을 제어할 수 있게 된다.
         "PreLimn User's Guide"를 보면 상세한 정보를 얻을 것. 

   3.3 Printer Extensibility
       * 전통적인 PostScript model이 제공하지 않는 NeWSprint의 세번째 사양은
         많은 종류의 프린터에  프린트할 수 있는 기능이다.
         전통적인 프린트 모델에서는 PostScript language만을 지원하는 프린터만을 
         사용할 수 있었다.
         PostScript-compatible printer를 만들어 내는데 들어간 비용 때문에
         대부분의 PostScript 프린터들은 가격이 비싼편이다.
         NeWSprint를 사용하면 Sun workstation은 
         거의 모든 프린터들을(ink, dot matrix ...) 연결할 수 있다.
         모든 프린터들은 scalable fonts 사용을 포함하여 PostScript output을
         만들어 낼 수 있게 된다.
         NeWSprint 가격대가 어떤 프린터들일지라도 일치된 output을 보장한다.
       * NeWSprint는 두가지 방법을 사용한다.
         - SBus Printer Card의 사용: 
           이 방식은 Centronics interface에 기초한 interface들을 지원할 뿐 아니라
           빠른 속도의 프린터 access가 가능하다.
         - "printer handler"의 사용: 
           "printer handler"는 NeWSprint상의 software로서 특정 프린터 디바이스와
           직접 대화한다.
           이는 프린터로에서 "lpd"로 에러 메시지와 프린터 상태정보를 돌려줄 뿐 아니라 
           특정 프린터가 프린트하는데 사용할 수 있게끔 raster data를 처리해 준다.
         "printer handler"에 관한 정보는 "NeWSprint Developer's Guide"를 참조하시라.
       * Sun SPARCprinter는 NeWSprint를 사용하기 위한 Sun의 프린터이다.
         그러나 NeWSprint는 SPARCprinter 외에도 다른 프린터들을 지원하는 
         software handler도 포함한다.
         NeWSprint가 지원하는 프린터들은 다음과 같다.
         - Sun LaserWriters and other PostScript printers
         - Hewlett-Packard Laserjet series
         - Seiko ColorWax CH5504 and CH5514
       

Revision History
Created               			on August 21. 1992.