*% PostScript(R) Printer Description File
*% For "Olivetti PG 303"
*FormatVersion: "2.0"
*FileVersion: "1.1"
*LanguageVersion: English

*Product: "(Olivetti PG 303)"
*PSVersion: "(47.0) 3"
*NickName: "Olivetti PG 303"

*% General Information and Defaults ===============
*ColorDevice: False
*FileSystem: False
*?FileSystem: "/initializedisk where{pop(True)}{(False)} ifelse = flush"
*Throughput: "8"
*Password: "0"
*ExitServer: "serverdict begin count 0 eq{0}if exitserver"
*FreeVM: "402212"
*Reset: "
serverdict begin count 0 eq{0}if exitserver
systemdict /quit get exec
(WARNING : Printer Reset Failed.) = flush
"
*End
*VariablePaperSize: False

*DefaultResolution: 300dpi
*?Resolution: "
save
  initgraphics
  0 0 moveto currentpoint matrix defaultmatrix transform
  0 72 lineto currentpoint matrix defaultmatrix transform
  3 -1 roll sub dup mul
  3 1 roll exch sub dup mul
  add sqrt round cvi
  (          ) cvs print (dpi) = flush
restore
"
*End

*% Halftone Information ===============
*ScreenFreq: "60.0"
*ScreenAngle: "45.0"
*DefaultScreenProc: Dot
*ScreenProc Dot: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 
sub }{dup mul exch dup mul add 1 exch sub }ifelse }
"
*End
*ScreenProc Line: "{ pop }"
*ScreenProc Ellipse: "{ dup 5 mul 8 div mul exch dup mul exch add sqrt 1 exch sub }"

*DefaultTransfer: Null
*Transfer Null: "{ }"
*Transfer Null.Inverse: "{ 1 exch sub }"
*Transfer Normalized: "{ }"
*Transfer Normalized.Inverse: "{ 1 exch sub }"

*% Paper Handling ===================

*% Use these entries to set paper size most of the time, unless there is
*% specific reason to use PageRegion or PaperTray.
*DefaultPageSize: Letter
*PageSize Letter: "statusdict begin lettertray end"
*PageSize Legal: "statusdict begin legaltray end"
*PageSize A4: "statusdict begin a4tray end"
*PageSize B5: "statusdict begin b5tray end"
*?PageSize: "
save statusdict begin
   5 dict begin
   /2 (A4) def 
   /8 (Letter) def 
   /18 (B5) def 
   /24 (Legal) def
   /26 (Executive) def
   1 papersize 
     {(  ) cvs cvn load exec} stopped not{= flush}if
   end 
end
restore
"
*End

*% These entries will set up the frame buffer. Usually used with manual feed.
*DefaultPageRegion: Letter
*PageRegion Letter: "letter"
*PageRegion Legal: "legal"
*PageRegion A4: "a4"
*PageRegion B5: "b5"

*DefaultPaperTray: None
*PaperTray Letter: "statusdict begin lettertray end"
*PaperTray Legal: "statusdict begin legaltray end"
*PaperTray A4: "statusdict begin a4tray end"
*PaperTray B5: "statusdict begin b5tray end"

*% The following entries provide information about specific paper keywords.
*DefaultImageableArea: Letter
*ImageableArea Letter: "18 8 594 784"
*ImageableArea Legal: "18 18 594 990"
*ImageableArea A4: "17 17 578 825"
*ImageableArea B5: "8 13 507 716"
*?ImageableArea: "
 save /cvp { cvi (            ) cvs print ( ) print } bind def
  newpath clippath pathbbox
  4 -2 roll exch 2 {ceiling cvp} repeat
  exch 2 {floor cvp} repeat flush
 restore
"
*End

*% These provide the physical dimensions of the paper (by keyword)
*DefaultPaperDimension: Letter
*PaperDimension Letter: "612 792"
*PaperDimension Legal: "612 1008"
*PaperDimension A4: "595 842"
*PaperDimension B5: "516 729"

*DefaultOutputBin: Upper
*DefaultInputSlot: None

*DefaultManualFeed: False
*?ManualFeed: "statusdict /manualfeed get
 {(True)}{(False)}ifelse = flush"
*End
*ManualFeed True: "statusdict begin /manualfeed true store end"
*ManualFeed False: "statusdict begin /manualfeed false store end"

*DefaultOutputOrder: Normal

*DefaultCollator: None
*DefaultSorter: None
*DefaultDuplex: None

*% Font Information =====================

*DefaultFont: Courier
*Font AvantGarde-Book: Standard "(001.001)"
*Font AvantGarde-BookOblique: Standard "(001.001)"
*Font AvantGarde-Demi: Standard "(001.001)"
*Font AvantGarde-DemiOblique: Standard "(001.001)"
*Font Bookman-Demi: Standard "(001.001)"
*Font Bookman-DemiItalic: Standard "(001.001)"
*Font Bookman-Light: Standard "(001.001)"
*Font Bookman-LightItalic: Standard "(001.001)"
*Font Courier: Standard "(001.004)"
*Font Courier-Bold: Standard "(001.004)"
*Font Courier-BoldOblique: Standard "(001.004)"
*Font Courier-Oblique: Standard "(001.004)"
*Font Helvetica: Standard "(001.001)"
*Font Helvetica-Bold: Standard "(001.001)"
*Font Helvetica-BoldOblique: Standard "(001.001)"
*Font Helvetica-Narrow: Standard "(001.000)"
*Font Helvetica-Narrow-Bold: Standard "(001.000)"
*Font Helvetica-Narrow-BoldOblique: Standard "(001.000)"
*Font Helvetica-Narrow-Oblique: Standard "(001.000)"
*Font Helvetica-Oblique: Standard "(001.001)"
*Font NewCenturySchlbk-Bold: Standard "(001.002)"
*Font NewCenturySchlbk-BoldItalic: Standard "(001.001)"
*Font NewCenturySchlbk-Italic: Standard "(001.001)"
*Font NewCenturySchlbk-Roman: Standard "(001.002)"
*Font Palatino-Bold: Standard "(001.001)"
*Font Palatino-BoldItalic: Standard "(001.001)"
*Font Palatino-Italic: Standard "(001.002)"
*Font Palatino-Roman: Standard "(001.001)"
*Font Symbol: Special "(001.001)"
*Font Times-Bold: Standard "(001.001)"
*Font Times-BoldItalic: Standard "(001.001)"
*Font Times-Italic: Standard "(001.001)"
*Font Times-Roman: Standard "(001.001)"
*Font ZapfChancery-MediumItalic: Standard "(001.002)"
*Font ZapfDingbats: Special "(001.000)"
*?FontQuery: "
save  4 dict begin /sv exch def
/str (fonts/                              ) def
/st2 30 string def
{
  count 0 gt {
    dup FontDirectory exch known {pop 1}{
     str exch st2 cvs dup length /len exch def
     6 exch putinterval str 0 len 6 add getinterval mark exch
     { } st2 filenameforall counttomark 0 gt {
      cleartomark 1}{cleartomark 0}ifelse
    }ifelse = flush
  }{ exit } ifelse
} bind loop sv end restore
"
*End

*?FontList: "
FontDirectory { pop == flush } forall 
/filenameforall where { 
 pop save (fonts/*) { 
  dup length 6 sub 6 exch getinterval == flush 
 } 128 string filenameforall restore
} if 
(*) = flush
"
*End

*% Printer Messages (verbatim from printer):
*Message: "%%[ exitserver: permanent state may be changed ]%%"
*Message: "%%[ Flushing: rest of job (to end-of-file) will be ignored ]%%"
*Message: "\FontName\ not found, using Courier"

*% Status (format: %%[ status: <one of these> ]%% )
*Status: "idle"
*Status: "busy"
*Status: "waiting"
*Status: "printing"
*Status: "warming up"
*Status: "PrinterError: timeout, clearing printer"
*Status: "PrinterError: warming up"
*Status: "PrinterError: paper entry misfeed"
*Status: "PrinterError: no toner cartridge"
*Status: "PrinterError: service call"
*Status: "PrinterError: cover open"
*Status: "PrinterError: resetting printer"
*Status: "PrinterError: out of paper"
*Status: "PrinterError: timeout"
*Status: "PrinterError: manual feed timeout"
*Status: "PrinterError: no paper tray"

*% Input Sources (format: %%[ status: <stat>; source: <one of these> ]%% )
*Source: "serial9"
*Source: "serial25"
*Source: "AppleTalk"
*Source: "Centronics"

*% Printer Error (format: %%[ PrinterError: <one of these> ]%%)
*PrinterError: "timeout, clearing printer"
*PrinterError: "warming up"
*PrinterError: "paper entry misfeed"
*PrinterError: "no toner cartridge"
*PrinterError: "service call"
*PrinterError: "cover open"
*PrinterError: "resetting printer"
*PrinterError: "out of paper"
*PrinterError: "timeout"
*PrinterError: "manual feed timeout"
*PrinterError: "no paper tray"

*DeviceAdjustMatrix: "[1 0 0 1 0 0]"

*% Color Separation Information =====================

*DefaultColorSep: ProcessCyan.60lpi/60 lpi

*InkName: ProcessCyan/Process Cyan
*InkName: ProcessMagenta/Process Magenta
*InkName: ProcessYellow/Process Yellow
*InkName: ProcessBlack/Process Black
*InkName: CustomColor/Custom Color

*ColorSepScreenAngle ProcessCyan.60lpi/60 lpi: "15"
*ColorSepScreenAngle ProcessMagenta.60lpi/60 lpi: "75"
*ColorSepScreenAngle ProcessYellow.60lpi/60 lpi: "0"
*ColorSepScreenAngle ProcessBlack.60lpi/60 lpi: "45"
*ColorSepScreenAngle CustomColor.60lpi/60 lpi: "45"

*ColorSepScreenFreq ProcessCyan.60lpi/60 lpi: "60"
*ColorSepScreenFreq ProcessMagenta.60lpi/60 lpi: "60"
*ColorSepScreenFreq ProcessYellow.60lpi/60 lpi: "60"
*ColorSepScreenFreq ProcessBlack.60lpi/60 lpi: "60"
*ColorSepScreenFreq CustomColor.60lpi/60 lpi: "60"

*ColorSepScreenProc ProcessCyan.60lpi/60 lpi: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 
sub }{dup mul exch dup mul add 1 exch sub }ifelse }"
*End
*ColorSepScreenProc ProcessMagenta.60lpi/60 lpi: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 
sub }{dup mul exch dup mul add 1 exch sub }ifelse }"
*End
*ColorSepScreenProc ProcessYellow.60lpi/60 lpi: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 
sub }{dup mul exch dup mul add 1 exch sub }ifelse }"
*End
*ColorSepScreenProc ProcessBlack.60lpi/60 lpi: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 
sub }{dup mul exch dup mul add 1 exch sub }ifelse }"
*End
*ColorSepScreenProc CustomColor.60lpi/60 lpi: "
{abs exch abs 2 copy add 1 gt {1 sub dup mul exch 1 sub dup mul add 1 
sub }{dup mul exch dup mul add 1 exch sub }ifelse }"
*End

*ColorSepTransfer ProcessCyan.60lpi/60 lpi: "{ }"
*ColorSepTransfer ProcessMagenta.60lpi/60 lpi: "{ }"
*ColorSepTransfer ProcessYellow.60lpi/60 lpi: "{ }"
*ColorSepTransfer ProcessBlack.60lpi/60 lpi: "{ }"
*ColorSepTransfer CustomColor.60lpi/60 lpi: "{ }"

*% end of PPD file
