Mercurial > emacs
changeset 27165:e0beb5cd0257
New file.
author | Kenichi Handa <handa@m17n.org> |
---|---|
date | Wed, 05 Jan 2000 08:14:47 +0000 |
parents | 7e06ce5ebfe3 |
children | b2d17f0c1668 |
files | etc/ps-prin1.ps etc/ps-prin2.ps etc/ps-prin3.ps |
diffstat | 3 files changed, 746 insertions(+), 0 deletions(-) [+] |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/ps-prin1.ps Wed Jan 05 08:14:47 2000 +0000 @@ -0,0 +1,718 @@ +% === BEGIN ps-print prologue 1 + +% ISOLatin1Encoding stolen from ps_init.ps in GhostScript 2.6.1.4: +/ISOLatin1Encoding where {pop}{ +% -- The ISO Latin-1 encoding vector isn't known, so define it. +% -- The first half is the same as the standard encoding, +% -- except for minus instead of hyphen at code 055. +/ISOLatin1Encoding +StandardEncoding 0 45 getinterval aload pop + /minus +StandardEncoding 46 82 getinterval aload pop +%*** NOTE: the following are missing in the Adobe documentation, +%*** but appear in the displayed table: +%*** macron at 0225, dieresis at 0230, cedilla at 0233, space at 0240. +% 0200 (128) + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef /.notdef + /dotlessi /grave /acute /circumflex /tilde /macron /breve /dotaccent + /dieresis /.notdef /ring /cedilla /.notdef /hungarumlaut /ogonek /caron +% 0240 (160) + /space /exclamdown /cent /sterling + /currency /yen /brokenbar /section + /dieresis /copyright /ordfeminine /guillemotleft + /logicalnot /hyphen /registered /macron + /degree /plusminus /twosuperior /threesuperior + /acute /mu /paragraph /periodcentered + /cedilla /onesuperior /ordmasculine /guillemotright + /onequarter /onehalf /threequarters /questiondown +% 0300 (192) + /Agrave /Aacute /Acircumflex /Atilde + /Adieresis /Aring /AE /Ccedilla + /Egrave /Eacute /Ecircumflex /Edieresis + /Igrave /Iacute /Icircumflex /Idieresis + /Eth /Ntilde /Ograve /Oacute + /Ocircumflex /Otilde /Odieresis /multiply + /Oslash /Ugrave /Uacute /Ucircumflex + /Udieresis /Yacute /Thorn /germandbls +% 0340 (224) + /agrave /aacute /acircumflex /atilde + /adieresis /aring /ae /ccedilla + /egrave /eacute /ecircumflex /edieresis + /igrave /iacute /icircumflex /idieresis + /eth /ntilde /ograve /oacute + /ocircumflex /otilde /odieresis /divide + /oslash /ugrave /uacute /ucircumflex + /udieresis /yacute /thorn /ydieresis +256 packedarray def +}ifelse + +/reencodeFontISO{ %def + dup + length 12 add dict % Make a new font (a new dict the same size + % as the old one) with room for our new symbols. + + begin % Make the new font the current dictionary. + + + {1 index /FID ne + {def}{pop pop}ifelse + }forall % Copy each of the symbols from the old dictionary + % to the new one except for the font ID. + + currentdict /FontType get 0 ne{ + /Encoding ISOLatin1Encoding def % Override the encoding with + % the ISOLatin1 encoding. + }if + + % Use the font's bounding box to determine the ascent, descent, + % and overall height; don't forget that these values have to be + % transformed using the font's matrix. + +% ^ (x2 y2) +% | | +% | v +% | +----+ - - +% | | | ^ +% | | | | Ascent (usually > 0) +% | | | | +% (0 0) -> +--+----+--------> +% | | | +% | | v Descent (usually < 0) +% (x1 y1) --> +----+ - - + + currentdict /FontType get 0 ne{ + /FontBBox load aload pop % -- x1 y1 x2 y2 + FontMatrix transform /Ascent exch def pop + FontMatrix transform /Descent exch def pop + }{ + /PrimaryFont FDepVector 0 get def + PrimaryFont /FontBBox get aload pop + PrimaryFont /FontMatrix get transform /Ascent exch def pop + PrimaryFont /FontMatrix get transform /Descent exch def pop + }ifelse + + /FontHeight Ascent Descent sub def % use `sub' because descent < 0 + + % Define these in case they're not in the FontInfo + % (also, here they're easier to get to). + /UnderlinePosition Descent 0.70 mul def + /OverlinePosition Descent UnderlinePosition sub Ascent add def + /StrikeoutPosition Ascent 0.30 mul def + /LineThickness FontHeight 0.05 mul def + /Xshadow FontHeight 0.08 mul def + /Yshadow FontHeight -0.09 mul def + /SpaceBackground Descent neg UnderlinePosition add def + /XBox Descent neg def + /YBox LineThickness 0.7 mul def + + currentdict % Leave the new font on the stack + end % Stop using the font as the current dictionary. + definefont % Put the font into the font dictionary + pop % Discard the returned font. +}bind def + +/DefFont{ % Font definition + findfont exch scalefont reencodeFontISO +}def + +/F{ % Font selection + findfont + dup /Ascent get /Ascent exch def + dup /Descent get /Descent exch def + dup /FontHeight get /FontHeight exch def + dup /UnderlinePosition get /UnderlinePosition exch def + dup /OverlinePosition get /OverlinePosition exch def + dup /StrikeoutPosition get /StrikeoutPosition exch def + dup /LineThickness get /LineThickness exch def + dup /Xshadow get /Xshadow exch def + dup /Yshadow get /Yshadow exch def + dup /SpaceBackground get /SpaceBackground exch def + dup /XBox get /XBox exch def + dup /YBox get /YBox exch def + setfont +}def + +/FG /setrgbcolor load def + +/bg false def +/BG{ + dup /bg exch def + {mark 4 1 roll ]} + {[ 1.0 1.0 1.0 ]} + ifelse + /bgcolor exch def +}def + +% B width C +% +-----------+ +% | Ascent (usually > 0) +% A + + +% | Descent (usually < 0) +% +-----------+ +% E width D + +/dobackground{ % width -- + currentpoint % -- width x y + gsave + newpath + moveto % A (x y) + 0 Ascent rmoveto % B + dup 0 rlineto % C + 0 Descent Ascent sub rlineto % D + neg 0 rlineto % E + closepath + bgcolor aload pop setrgbcolor + fill + grestore +}def + +/eolbg{ % dobackground until right margin + PrintWidth % -- x-eol + currentpoint pop % -- cur-x + sub % -- width until eol + dobackground +}def + +/PLN{PrintLineNumber{doLineNumber}if}def + +/SL{ % Soft Linefeed + bg{eolbg}if + 0 currentpoint exch pop LineHeight sub moveto +}def + +/HL{SL PLN}def % Hard Linefeed + +% Some debug +/dcp{currentpoint exch 40 string cvs print (, ) print =}def +/dp{print 2 copy exch 40 string cvs print (, ) print =}def + +/W{ + ( ) stringwidth % Get the width of a space in the current font. + pop % Discard the Y component. + mul % Multiply the width of a space + % by the number of spaces to plot + bg{dup dobackground}if + 0 rmoveto +}def + +/Effect 0 def +/EF{/Effect exch def}def + +% stack: string |- -- +% effect: 1 - underline 2 - strikeout 4 - overline +% 8 - shadow 16 - box 32 - outline +/S{ + /xx currentpoint dup Descent add /yy exch def + Ascent add /YY exch def def + dup stringwidth pop xx add /XX exch def + Effect 8 and 0 ne{ + /yy yy Yshadow add def + /XX XX Xshadow add def + }if + bg{ + true + Effect 16 and 0 ne + {SpaceBackground doBox} + {xx yy XX YY doRect} + ifelse + }if % background + Effect 16 and 0 ne{false 0 doBox}if % box + Effect 8 and 0 ne{dup doShadow}if % shadow + Effect 32 and 0 ne + {true doOutline} % outline + {show} % normal text + ifelse + Effect 1 and 0 ne{UnderlinePosition Hline}if % underline + Effect 2 and 0 ne{StrikeoutPosition Hline}if % strikeout + Effect 4 and 0 ne{OverlinePosition Hline}if % overline +}bind def + +% stack: position |- -- +/Hline{ + currentpoint exch pop add dup + gsave + newpath + xx exch moveto + XX exch lineto + closepath + LineThickness setlinewidth stroke + grestore +}bind def + +% stack: fill-or-not delta |- -- +/doBox{ + /dd exch def + xx XBox sub dd sub yy YBox sub dd sub + XX XBox add dd add YY YBox add dd add + doRect +}bind def + +% stack: fill-or-not lower-x lower-y upper-x upper-y |- -- +/doRect{ + /rYY exch def + /rXX exch def + /ryy exch def + /rxx exch def + gsave + newpath + rXX rYY moveto + rxx rYY lineto + rxx ryy lineto + rXX ryy lineto + closepath + % top of stack: fill-or-not + {FillBgColor} + {LineThickness setlinewidth stroke} + ifelse + grestore +}bind def + +% stack: string |- -- +/doShadow{ + gsave + Xshadow Yshadow rmoveto + false doOutline + grestore +}bind def + +/st 1 string def + +% stack: string fill-or-not |- -- +/doOutline{ + /-fillp- exch def + /-ox- currentpoint /-oy- exch def def + gsave + LineThickness setlinewidth + {st 0 3 -1 roll put + st dup true charpath + -fillp- {gsave FillBgColor grestore}if + stroke stringwidth + -oy- add /-oy- exch def + -ox- add /-ox- exch def + -ox- -oy- moveto + }forall + grestore + -ox- -oy- moveto +}bind def + +% stack: -- +/FillBgColor{bgcolor aload pop setrgbcolor fill}bind def + +/L0 6 /Times-Italic DefFont + +% stack: -- +/doLineNumber{ + /LineNumber where + { + pop + currentfont + gsave + 0.0 0.0 0.0 setrgbcolor + /L0 findfont setfont + LineNumber Lines ge + {(end )} + {LineNumber 6 string cvs ( ) strcat} + ifelse + dup stringwidth pop neg 0 rmoveto + show + grestore + setfont + /LineNumber LineNumber 1 add def + }if +}def + +% stack: -- +/printZebra{ + gsave + ZebraGray setgray + /double-zebra ZebraHeight ZebraHeight add def + /yiter double-zebra LineHeight mul neg def + /xiter PrintWidth InterColumn add def + NumberOfColumns{LinesPerColumn doColumnZebra xiter 0 rmoveto}repeat + grestore +}def + +% stack: lines-per-column |- -- +/doColumnZebra{ + gsave + dup double-zebra idiv{ZebraHeight doZebra 0 yiter rmoveto}repeat + double-zebra mod + dup 0 le{pop}{dup ZebraHeight gt {pop ZebraHeight}if doZebra}ifelse + grestore +}def + +% stack: zebra-height (in lines) |- -- +/doZebra{ + /zh exch 0.05 sub LineHeight mul def + gsave + 0 LineHeight 0.65 mul rmoveto + PrintWidth 0 rlineto + 0 zh neg rlineto + PrintWidth neg 0 rlineto + 0 zh rlineto + fill + grestore +}def + +% tx ty rotation xscale yscale xpos ypos BeginBackImage +/BeginBackImage{ + /-save-image- save def + /showpage{}def + translate + scale + rotate + translate +}def + +/EndBackImage{-save-image- restore}def + +% string fontsize fontname rotation gray xpos ypos ShowBackText +/ShowBackText{ + gsave + translate + setgray + rotate + findfont exch dup /-offset- exch -0.25 mul def scalefont setfont + 0 -offset- moveto + /-saveLineThickness- LineThickness def + /LineThickness 1 def + false doOutline + /LineThickness -saveLineThickness- def + grestore +}def + +/BeginDoc{ + % ---- Remember space width of the normal text font `f0'. + /SpaceWidth /f0 findfont setfont ( ) stringwidth pop def + % ---- save the state of the document (useful for ghostscript!) + /docState save def + % ---- [andrewi] set PageSize based on chosen dimensions + UseSetpagedevice{ + 0 + {<< /PageSize [PageWidth LandscapePageHeight] >> setpagedevice} + CheckConfig + }{ + LandscapeMode{ + % ---- translate to bottom-right corner of Portrait page + LandscapePageHeight 0 translate + 90 rotate + }if + }ifelse + % ---- [jack] Kludge: my ghostscript window is 21x27.7 instead of 21x29.7 + /JackGhostscript where{pop 1 27.7 29.7 div scale}if + % ---- N-Up printing + N-Up 1 gt{ + % ---- landscape + N-Up-Landscape{ + PageWidth 0 translate + 90 rotate + }if + N-Up-Margin dup translate + % ---- scale + LandscapeMode{ + /HH PageWidth def + /WW LandscapePageHeight def + }{ + /HH LandscapePageHeight def + /WW PageWidth def + }ifelse + WW N-Up-Margin sub N-Up-Margin sub + N-Up-Landscape + {N-Up-Lines div HH}{N-Up-Columns N-Up-Missing add div WW}ifelse + div dup scale + 0 N-Up-Repeat 1 sub LandscapePageHeight mul translate + % ---- go to start position in page matrix + N-Up-XStart N-Up-Missing 0.5 mul + LandscapeMode{ + LandscapePageHeight mul N-Up-YStart add + }{ + PageWidth mul add N-Up-YStart + }ifelse + translate + }if + /ColumnWidth PrintWidth InterColumn add def + % ---- translate to lower left corner of TEXT + LeftMargin BottomMargin translate + % ---- define where printing will start + /f0 F % this installs Ascent + /PrintStartY PrintHeight Ascent sub def + /ColumnIndex 1 def + /N-Up-Counter N-Up-End 1 sub def + SkipFirstPage{save showpage restore}if +}def + +/EndDoc{ + % ---- restore the state of the document (useful for ghostscript!) + docState restore +}def + +/BeginDSCPage{ + % ---- when 1st column, save the state of the page + ColumnIndex 1 eq{ + /pageState save def + }if + % ---- save the state of the column + /columnState save def +}def + +/PrintHeaderWidth PrintOnlyOneHeader{PrintPageWidth}{PrintWidth}ifelse def + +/BeginPage{ + % ---- when 1st column, print all background effects + ColumnIndex 1 eq{ + 0 PrintStartY moveto % move to where printing will start + Zebra {printZebra}if + printGlobalBackground + printLocalBackground + }if + PrintHeader{ + PrintOnlyOneHeader{ColumnIndex 1 eq}{true}ifelse{ + PrintHeaderFrame{HeaderFrame}if + HeaderText + }if + }if + 0 PrintStartY moveto % move to where printing will start + PLN +}def + +/EndPage{bg{eolbg}if}def + +/EndDSCPage{ + ColumnIndex NumberOfColumns eq{ + % ---- restore the state of the page + pageState restore + /ColumnIndex 1 def + % ---- N-up printing + N-Up 1 gt{ + N-Up-Counter 0 gt{ + % ---- Next page on same row + /N-Up-Counter N-Up-Counter 1 sub def + N-Up-XColumn N-Up-YColumn + }{ + % ---- Next page on next line + /N-Up-Counter N-Up-End 1 sub def + N-Up-XLine N-Up-YLine + }ifelse + translate + }if + }{ % else + % ---- restore the state of the current column + columnState restore + % ---- and translate to the next column + ColumnWidth 0 translate + /ColumnIndex ColumnIndex 1 add def + }ifelse +}def + +% stack: number-of-pages-per-sheet |- -- +/BeginSheet{ + /sheetState save def + /pages-per-sheet exch def + % ---- N-up printing + N-Up 1 gt N-Up-Border and pages-per-sheet 0 gt and{ + % ---- page border + gsave + 0 setgray + LeftMargin neg BottomMargin neg moveto + N-Up-Repeat + {N-Up-End + {gsave + PageWidth 0 rlineto + 0 LandscapePageHeight rlineto + PageWidth neg 0 rlineto + closepath stroke + grestore + /pages-per-sheet pages-per-sheet 1 sub def + pages-per-sheet 0 le{exit}if + N-Up-XColumn N-Up-YColumn rmoveto + }repeat + pages-per-sheet 0 le{exit}if + N-Up-XLine N-Up-XColumn sub N-Up-YLine rmoveto + }repeat + grestore + }if +}def + +/EndSheet{ + showpage + sheetState restore +}def + +/SetHeaderLines{ % nb-lines -- + /HeaderLines exch def + % ---- bottom up + HeaderPad + HeaderLines 1 sub HeaderLineHeight mul add + HeaderTitleLineHeight add + HeaderPad add + /HeaderHeight exch def +}def + +% |---------| +% | tm | +% |---------| +% | header | +% |-+-------| <-- (x y) +% | ho | +% |---------| +% | text | +% |-+-------| <-- (0 0) +% | bm | +% |---------| + +/HeaderFrameStart{ % -- x y + 0 PrintHeight HeaderOffset add +}def + +/HeaderFramePath{ + PrintHeaderWidth 0 rlineto + 0 HeaderHeight rlineto + PrintHeaderWidth neg 0 rlineto + 0 HeaderHeight neg rlineto +}def + +/HeaderFrame{ + gsave + 0.4 setlinewidth + % ---- fill a black rectangle (the shadow of the next one) + HeaderFrameStart moveto + 1 -1 rmoveto + HeaderFramePath + 0 setgray fill + % ---- do the next rectangle ... + HeaderFrameStart moveto + HeaderFramePath + gsave 0.9 setgray fill grestore % filled with grey + gsave 0 setgray stroke grestore % drawn with black + grestore +}def + +/HeaderStart{ + HeaderFrameStart + exch HeaderPad add exch % horizontal pad + % ---- bottom up + HeaderPad add % vertical pad + HeaderDescent sub + HeaderLineHeight HeaderLines 1 sub mul add +}def + +/strcat{ + dup length 3 -1 roll dup length dup 4 -1 roll add string dup + 0 5 -1 roll putinterval + dup 4 2 roll exch putinterval +}def + +/pagenumberstring{ + PageNumber 32 string cvs + ShowNofN{ + (/) strcat + PageCount 32 string cvs strcat + }if +}def + +/HeaderText{ + HeaderStart moveto + + HeaderLinesRight HeaderLinesLeft % -- rightLines leftLines + + % ---- hack: `PN 1 and' == `PN 2 modulo' + + % ---- if even page number and duplex, then exchange left and right + PageNumber 1 and 0 eq DuplexValue and{exch}if + + { % ---- process the left lines + aload pop + exch F + gsave + dup xcheck{exec}if + show + grestore + 0 HeaderLineHeight neg rmoveto + }forall + + HeaderStart moveto + + { % ---- process the right lines + aload pop + exch F + gsave + dup xcheck{exec}if + dup stringwidth pop + PrintHeaderWidth exch sub HeaderPad 2 mul sub 0 rmoveto + show + grestore + 0 HeaderLineHeight neg rmoveto + }forall +}def + +/ReportFontInfo{ + 2 copy + /t0 3 1 roll DefFont + /t0 F + /lh FontHeight def + /sw ( ) stringwidth pop def + /aw (01234567890abcdefghijklmnopqrstuvwxyz) dup length exch + stringwidth pop exch div def + /t1 12 /Helvetica-Oblique DefFont + /t1 F + gsave + (languagelevel = ) show + gs_languagelevel 32 string cvs show + grestore + 0 FontHeight neg rmoveto + gsave + (For ) show + 128 string cvs show + ( ) show + 32 string cvs show + ( point, the line height is ) show + lh 32 string cvs show + (, the space width is ) show + sw 32 string cvs show + (,) show + grestore + 0 FontHeight neg rmoveto + gsave + (and a crude estimate of average character width is ) show + aw 32 string cvs show + (.) show + grestore + 0 FontHeight neg rmoveto +}def + +/cm{ % cm to point + 72 mul 2.54 div +}def + +/ReportAllFontInfo{ + FontDirectory + { % key = font name value = font dictionary + pop 10 exch ReportFontInfo + }forall +}def + +% 3 cm 20 cm moveto 10 /Courier ReportFontInfo showpage +% 3 cm 20 cm moveto ReportAllFontInfo showpage + +/ErrorMessages + [(This PostScript printer is not configured with this document page size.) + (Duplex printing is not supported on this PostScript printer.)]def + +% stack: error-index proc |- -- +/CheckConfig{ + stopped{ + 1 cm LandscapePageHeight 0.5 mul moveto + /Courier findfont 10 scalefont setfont + gsave + (ps-print error:) show + grestore + 0 -10 rmoveto + ErrorMessages exch get show + showpage + $error /newerror false put + stop + }if +}bind def + +% === END ps-print prologue 1
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/ps-prin2.ps Wed Jan 05 08:14:47 2000 +0000 @@ -0,0 +1,14 @@ +% === BEGIN ps-print prologue 2 + +% ---- These lines must be kept together because... + +/h0 F +/HeaderTitleLineHeight FontHeight def + +/h1 F +/HeaderLineHeight FontHeight def +/HeaderDescent Descent def + +% ---- ...because `F' has a side-effect on `FontHeight' and `Descent' + +% === END ps-print prologue 2
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/etc/ps-prin3.ps Wed Jan 05 08:14:47 2000 +0000 @@ -0,0 +1,14 @@ +% === BEGIN ps-print prologue 3 + +% --- duplex feature verification +1 +UseSetpagedevice { + {<< /Duplex DuplexValue /Tumble TumbleValue >> setpagedevice} +}{ + {statusdict begin + DuplexValue setduplexmode TumbleValue settumble + end} +}ifelse +CheckConfig + +% === END ps-print prologue 3