X-Git-Url: https://code.delx.au/gnu-emacs/blobdiff_plain/f4fa5c853aeb6daeef62bcb5e5549e61a79c1468..1e7db2e9211f4b9b0e4d1bb1f942f92e473cbcb6:/etc/ps-prin1.ps diff --git a/etc/ps-prin1.ps b/etc/ps-prin1.ps index a2fc98ac4b..9c9a6ac820 100644 --- a/etc/ps-prin1.ps +++ b/etc/ps-prin1.ps @@ -1,7 +1,27 @@ % === BEGIN ps-print prologue 1 +% version: 6.0 + +% Copyright (C) 2000, 2001 Free Software Foundation, Inc. +% +% This file is part of GNU Emacs. +% +% GNU Emacs is free software; you can redistribute it and/or modify +% it under the terms of the GNU General Public License as published by +% the Free Software Foundation; either version 2, or (at your option) +% any later version. +% +% GNU Emacs is distributed in the hope that it will be useful, +% but WITHOUT ANY WARRANTY; without even the implied warranty of +% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +% GNU General Public License for more details. +% +% You should have received a copy of the GNU General Public License +% along with GNU Emacs; see the file COPYING. If not, write to the +% Free Software Foundation, Inc., 59 Temple Place - Suite 330, +% Boston, MA 02111-1307, USA. % ISOLatin1Encoding stolen from ps_init.ps in GhostScript 2.6.1.4: -/ISOLatin1Encoding where {pop}{ +/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. @@ -13,37 +33,37 @@ StandardEncoding 46 82 getinterval aload pop %*** 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 + /.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 + /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 + /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 + /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 @@ -54,16 +74,12 @@ StandardEncoding 46 82 getinterval aload pop begin % Make the new font the current dictionary. + % Copy each of the symbols from the old dictionary + % to the new one except for the font ID. + {1 index/FID ne{def}{pop pop}ifelse}forall - {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 + % Override the encoding with the ISOLatin1 encoding. + currentdict/FontType get 0 ne{/Encoding ISOLatin1Encoding def}if % Use the font's bounding box to determine the ascent, descent, % and overall height; don't forget that these values have to be @@ -81,16 +97,14 @@ StandardEncoding 46 82 getinterval aload pop % | | 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 + 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 @@ -112,34 +126,34 @@ StandardEncoding 46 82 getinterval aload pop pop % Discard the returned font. }bind def -/DefFont{ % Font definition - findfont exch scalefont reencodeFontISO -}def +% Font definition +/DefFont{findfont exch scalefont reencodeFontISO}def -/F{ % Font selection +% Font selection +/F{ 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 + 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 +/FG/setrgbcolor load def /bg false def /BG{ - dup /bg exch def - {mark 4 1 roll ]} - {[ 1.0 1.0 1.0 ]} + dup/bg exch def + {[4 1 roll]} + {[1.0 1.0 1.0]} ifelse /bgcolor exch def }def @@ -181,11 +195,11 @@ StandardEncoding 46 82 getinterval aload pop /HL{PSL 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 +/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. + ( )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 @@ -200,9 +214,9 @@ StandardEncoding 46 82 getinterval aload pop % 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 + /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 @@ -259,9 +273,8 @@ StandardEncoding 46 82 getinterval aload pop rXX ryy lineto closepath % top of stack: fill-or-not - {FillBgColor} - {LineThickness setlinewidth stroke} - ifelse + {FillBgColor} + {LineThickness setlinewidth stroke}ifelse grestore }bind def @@ -278,15 +291,15 @@ StandardEncoding 46 82 getinterval aload pop % stack: string fill-or-not |- -- /doOutline{ /-fillp- exch def - /-ox- currentpoint /-oy- exch def 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 + -oy- add/-oy- exch def + -ox- add/-ox- exch def -ox- -oy- moveto }forall grestore @@ -296,8 +309,6 @@ StandardEncoding 46 82 getinterval aload pop % stack: -- /FillBgColor{bgcolor aload pop setrgbcolor fill}bind def -/L0 6 /Times-Italic DefFont - % stack: -- |- boolean /isLineStep{ SyncLineZebra @@ -323,7 +334,7 @@ StandardEncoding 46 82 getinterval aload pop /L0 findfont setfont LineNumber Lines ge {(end )} - {LineNumber 6 string cvs ( ) strcat}ifelse + {LineNumber 6 string cvs( )strcat}ifelse dup stringwidth pop neg 0 rmoveto show grestore @@ -333,7 +344,7 @@ StandardEncoding 46 82 getinterval aload pop }def % stack: color-specifier |- -- -/SetColor{dup type /realtype eq{setgray}{aload pop setrgbcolor}ifelse}def +/SetColor{dup type/realtype eq{setgray}{aload pop setrgbcolor}ifelse}def % stack: -- /printZebra{ @@ -342,16 +353,29 @@ StandardEncoding 46 82 getinterval aload pop /double-zebra ZebraHeight ZebraHeight add def /yiter double-zebra LineHeight mul neg def /xiter PrintWidth InterColumn add def + /zebra-line LinesPrinted def NumberOfColumns{LinesPerColumn doColumnZebra xiter 0 rmoveto}repeat grestore }def % stack: lines-per-column |- -- /doColumnZebra{ + /lpc exch def 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 + ZebraFollow 1 and 0 ne{ + /H ZebraHeight zebra-line ZebraHeight mod sub def + /lpc lpc H sub def + zebra-line double-zebra mod ZebraHeight lt + {H doZebra % "black" stripe followed by a "white" stripe + /lpc lpc ZebraHeight sub def + H ZebraHeight add} + {H}ifelse % "white" stripe + LineHeight mul neg 0 exch rmoveto + /zebra-line zebra-line LinesPerColumn add def + }if + lpc dup double-zebra idiv{ZebraHeight doZebra 0 yiter rmoveto}repeat + double-zebra mod dup 0 le{pop} + {dup ZebraHeight gt ZebraFollow 2 and 0 ne or{pop ZebraHeight}if doZebra}ifelse grestore }def @@ -405,7 +429,7 @@ StandardEncoding 46 82 getinterval aload pop translate setgray rotate - findfont exch dup /-offset- exch -0.25 mul def scalefont setfont + findfont exch dup/-offset- exch -0.25 mul def scalefont setfont 0 -offset- moveto /-saveLineThickness- LineThickness def /LineThickness 1 def @@ -414,14 +438,18 @@ StandardEncoding 46 82 getinterval aload pop grestore }def +/SetPageSize{ + BMark/PageSize[PageWidth LandscapePageHeight LandscapeMode{exch}if]EMark setpagedevice +}def + /BeginDoc{ % ---- Remember space width of the normal text font `f0'. - /SpaceWidth /f0 findfont setfont ( ) stringwidth pop def + /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{ - BMark/PageSize[PageWidth LandscapePageHeight LandscapeMode{exch}if]EMark setpagedevice + WarnPaperSize{SetPageSize}{mark{SetPageSize}stopped cleartomark}ifelse }if /ColumnWidth PrintWidth InterColumn add def % ---- define where printing will start @@ -439,9 +467,7 @@ StandardEncoding 46 82 getinterval aload pop /BeginDSCPage{ % ---- when 1st column, save the state of the page - ColumnIndex 1 eq{ - /pageState save def - }if + ColumnIndex 1 eq{/pageState save def}if % ---- save the state of the column /columnState save def }def @@ -449,11 +475,12 @@ StandardEncoding 46 82 getinterval aload pop /PrintHeaderWidth PrintOnlyOneHeader{PrintPageWidth}{PrintWidth}ifelse def /BeginPage{ + /LinesPrinted exch def % ---- when 1st column, print all background effects ColumnIndex 1 eq{ 0 PrintStartY moveto % move to where printing will start printBackground - Zebra {printZebra}if + Zebra{printZebra}if printGlobalBackground printLocalBackground }if @@ -464,6 +491,13 @@ StandardEncoding 46 82 getinterval aload pop }if }if 0 PrintStartY moveto % move to where printing will start + /LineNumber where + {pop + SyncLineZebra + {/H PageNumber 1 sub NumberOfColumns mul ColumnIndex 1 sub add + LinesPerColumn mul ZebraHeight mod def + /PLScounter H PrintLineStart ge{0}{PrintLineStart H sub}ifelse def + /PrintLineStep ZebraHeight H sub def}if}if PLN }def @@ -476,15 +510,13 @@ StandardEncoding 46 82 getinterval aload pop /ColumnIndex 1 def % ---- N-up printing N-Up 1 gt{ - N-Up-Counter 0 gt{ - % ---- Next page on same row + 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-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 + N-Up-XLine N-Up-YLine}ifelse translate }if }{ % else @@ -525,11 +557,23 @@ StandardEncoding 46 82 getinterval aload pop /HH LandscapePageHeight def /WW PageWidth def }ifelse + /xx 0 def + N-Up-Landscape{ + /ww WW WW mul N-Up-Lines HH mul div def + /cc HH N-Up-Columns N-Up-Missing add div def + ww cc gt{/xx WW def/WW cc ww div WW mul def/xx xx WW sub def}if + }{ + /hh HH N-Up-Columns N-Up-Missing add div def + /cc HH N-Up-Lines div def + hh cc gt{/xx WW def/WW cc hh div WW mul def/xx xx WW sub def}if + }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 + {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 + LandscapeMode{/yy 0 def}{/yy xx def/xx 0 def}ifelse + xx N-Up-Repeat 1 sub LandscapePageHeight mul yy add translate % ---- go to start position in page matrix N-Up-XStart N-Up-Missing 0.5 mul LandscapeMode @@ -592,9 +636,8 @@ StandardEncoding 46 82 getinterval aload pop % | bm | % |---------| -/HeaderFrameStart{ % -- x y - 0 PrintHeight HeaderOffset add -}def +% -- |- x y +/HeaderFrameStart{0 PrintHeight HeaderOffset add}def /HeaderFramePath{ PrintHeaderWidth 0 rlineto @@ -636,10 +679,7 @@ StandardEncoding 46 82 getinterval aload pop /pagenumberstring{ PageNumber 32 string cvs - ShowNofN{ - (/) strcat - PageCount 32 string cvs strcat - }if + ShowNofN{(/)strcat PageCount 32 string cvs strcat}if }def /HeaderText{ @@ -650,7 +690,7 @@ StandardEncoding 46 82 getinterval aload pop % ---- 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 + PageNumber 1 and 0 eq SwitchHeader and{exch}if { % ---- process the left lines aload pop @@ -682,48 +722,45 @@ StandardEncoding 46 82 getinterval aload pop /t0 3 1 roll DefFont /t0 F /lh FontHeight def - /sw ( ) stringwidth pop def - /aw (01234567890abcdefghijklmnopqrstuvwxyz) dup length exch + /sw( )stringwidth pop def + /aw(01234567890abcdefghijklmnopqrstuvwxyz)dup length exch stringwidth pop exch div def - /t1 12 /Helvetica-Oblique DefFont + /t1 12/Helvetica-Oblique DefFont /t1 F gsave - (languagelevel = ) show + (languagelevel = )show languagelevel 32 string cvs show grestore 0 FontHeight neg rmoveto gsave - (For ) show + (For )show 128 string cvs show - ( ) show + ( )show 32 string cvs show - ( point, the line height is ) show + ( point, the line height is )show lh 32 string cvs show - (, the space width is ) show + (, the space width is )show sw 32 string cvs show - (,) show + (,)show grestore 0 FontHeight neg rmoveto gsave - (and a crude estimate of average character width is ) show + (and a crude estimate of average character width is )show aw 32 string cvs show - (.) show + (.)show grestore 0 FontHeight neg rmoveto }def -/cm{ % cm to point - 72 mul 2.54 div -}def +% cm to point +/cm{72 mul 2.54 div}def /ReportAllFontInfo{ - FontDirectory - { % key = font name value = font dictionary - pop 10 exch ReportFontInfo - }forall + % key = font name value = font dictionary + FontDirectory{pop 10 exch ReportFontInfo}forall }def -% 3 cm 20 cm moveto 10 /Courier ReportFontInfo showpage -% 3 cm 20 cm moveto ReportAllFontInfo showpage +% 3 cm 20 cm moveto 10/Courier ReportFontInfo showpage +% 3 cm 20 cm moveto ReportAllFontInfo showpage % === END ps-print prologue 1