📄 heikkila97.ps
字号:
%!PS-Adobe-3.0%%BoundingBox: (atend)%%Pages: (atend)%%PageOrder: (atend)%%DocumentFonts: (atend)%%Creator: Frame 5.1%%DocumentData: Clean7Bit%%EndComments%%BeginProlog%-%- Frame ps_prolog 5.0, for use with Frame 5.0 products%- This ps_prolog file is Copyright (c) 1986-1996 Adobe Systems, Incoporated.%- All rights reserved. This ps_prolog file may be freely copied and %- distributed in conjunction with documents created using FrameMaker, %- FrameMaker/SGML FrameReader and FrameViewer as long as this %- copyright notice is preserved.%-%- FrameMaker users specify the proper paper size for each print job in the%- "Print" dialog's "Printer Paper Size" "Width" and "Height~ fields. If the%- printer that the PS file is sent to does not support the requested paper%- size, or if there is no paper tray of the proper size currently installed, %- then the job will not be printed. The following flag, if set to true, will%- cause the job to print on the default paper in such cases./FMAllowPaperSizeMismatch false def%-%- Frame products normally print colors as their true color on a color printer%- or as shades of gray, based on luminance, on a black-and white printer. The%- following flag, if set to true, forces all non-white colors to print as pure%- black. This has no effect on bitmap images./FMPrintAllColorsAsBlack false def%-%- Frame products can either set their own line screens or use a printer's %- default settings. Three flags below control this separately for no %- separations, spot separations and process separations. If a flag%- is true, then the default printer settings will not be changed. If it is%- false, Frame products will use their own settings from a table based on%- the printer's resolution./FMUseDefaultNoSeparationScreen true def/FMUseDefaultSpotSeparationScreen true def/FMUseDefaultProcessSeparationScreen false def%-%- For any given PostScript printer resolution, Frame products have two sets of %- screen angles and frequencies for printing process separations, which are %- recomended by Adobe. The following variable chooses the higher frequencies%- when set to true or the lower frequencies when set to false. This is only%- effective if the appropriate FMUseDefault...SeparationScreen flag is false./FMUseHighFrequencyScreens true def%-%- The following is a set of predefined optimal frequencies and angles for various%- common dpi settings. This is taken from "Advances in Color Separation Using%- PostScript Software Technology," from Adobe Systems (3/13/89 P.N. LPS 0043)%- and corrolated with information which is in various PPD (4.0) files.%-%- The "dpiranges" figure is the minimum dots per inch device resolution which%- can support this setting. The "low" and "high" values are controlled by the%- setting of the FMUseHighFrequencyScreens flag above. The "TDot" flags control%- the use of the "Yellow Triple Dot" feature whereby the frequency id divided by%- three, but the dot function is "trippled" giving a block of 3x3 dots per cell.%-%- PatFreq is a compromise pattern frequency for ps Level 2 printers which is close%- to the ideal WYSIWYG pattern frequency of 9 repetitions/inch but does not beat%- (too badly) against the screen frequencies of any separations for that DPI.% This is computed by taking dpi/9 as the ideal pixels per repetition, and then% computing a tiling size in printer pixels for each of the four separations as % (dpi/screenFreq)*(cos(screenAngle)+sin(screenAngle)) Actually, this is the same % for Cyan and Magenta). Then, we take a "nice" LCM of the tile sizes close to% the desired pattern tile where the beat factor is not more than 2 or 3.%/dpiranges [ 2540 2400 1693 1270 1200 635 600 0 ] def/CMLowFreqs [ 100.402 94.8683 89.2289 100.402 94.8683 66.9349 63.2456 47.4342 ] def/YLowFreqs [ 95.25 90.0 84.65 95.25 90.0 70.5556 66.6667 50.0 ] def/KLowFreqs [ 89.8026 84.8528 79.8088 89.8026 84.8528 74.8355 70.7107 53.033 ] def/CLowAngles [ 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 71.5651 ] def/MLowAngles [ 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 18.4349 ] def/YLowTDot [ true true false true true false false false ] def/CMHighFreqs [ 133.87 126.491 133.843 108.503 102.523 100.402 94.8683 63.2456 ] def/YHighFreqs [ 127.0 120.0 126.975 115.455 109.091 95.25 90.0 60.0 ] def/KHighFreqs [ 119.737 113.137 119.713 128.289 121.218 89.8026 84.8528 63.6395 ] def/CHighAngles [ 71.5651 71.5651 71.5651 70.0169 70.0169 71.5651 71.5651 71.5651 ] def/MHighAngles [ 18.4349 18.4349 18.4349 19.9831 19.9831 18.4349 18.4349 18.4349 ] def/YHighTDot [ false false true false false true true false ] def/PatFreq [ 10.5833 10.0 9.4055 10.5833 10.0 10.5833 10.0 9.375 ] def%-%- PostScript Level 2 printers contain an "Accurate Screens" feature which can%- improve process separation rendering at the expense of compute time. This %- flag is ignored by PostScript Level 1 printers./FMUseAcccurateScreens true def%-%- The following PostScript procedure defines the spot function that Frame%- products will use for process separations. You may un-comment-out one of%- the alternative functions below, or use your own.%-%- Dot function/FMSpotFunction {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 } def%-%- Line function%- /FMSpotFunction { pop } def%-%- Elipse function%- /FMSpotFunction { dup 5 mul 8 div mul exch dup mul exch add %- sqrt 1 exch sub } def%-%-/FMversion (5.0) def % matches PS_VERSION in fmprintdriver% PostScript Level 1 = true, 2 = false/fMLevel1 /languagelevel where {pop languagelevel} {1} ifelse 2 lt def% Set up Color vs. Black-and-White/FMPColor fMLevel1 { false /colorimage where {pop pop true} if } {% statusdict /processcolors known {% statusdict /processcolors get exec% } {1} ifelse% 1 gt true } ifelsedef/FrameDict 400 dict def % should check this value each time changes made%% For NeWS we add a fake errordict, so we can psh files%systemdict /errordict known not {/errordict 10 dict def errordict /rangecheck {stop} put} if%- The readline in PS 23.0 doesn't recognize cr's as nl's on AppleTalkFrameDict /tmprangecheck errordict /rangecheck get put % save old rangecheckerrordict /rangecheck {FrameDict /bug true put} put % will flag bug foundFrameDict /bug false put % flag bug not foundmark % since we're not sure what will happen next%- Some PS machines read past the CR, so keep the following 3 lines together!currentfile 5 string readline000000000000cleartomark % junk from readline and rangecheckerrordict /rangecheck FrameDict /tmprangecheck get put % restore rangecheckFrameDict /bug get { % redefine readline if last one got a rangecheck /readline { /gstring exch def /gfile exch def /gindex 0 def { gfile read pop % get a char dup 10 eq {exit} if % exit if LF dup 13 eq {exit} if % exit if CR gstring exch gindex exch put % store it away /gindex gindex 1 add def % bump index } loop pop % eol character gstring 0 gindex getinterval true % simulate real readline } bind def } if% outer-world defs/FMshowpage /showpage load def/FMquit /quit load def/FMFAILURE { % enter with two error strings on the stack dup = flush % send a copy of the message to the console FMshowpage % msg on a page by itself, so it can't be, say, black on black /Helvetica findfont 12 scalefont setfont 72 200 moveto show 72 220 moveto show FMshowpage % we might be in the middle of some EPS, where "showpage" FMquit % and "quit" are redefined } def % only used once at most, so no bind/FMVERSION { FMversion ne { (Adobe Frame product version does not match ps_prolog! Check installation;) (also check ~/fminit and ./fminit for old versions) FMFAILURE } if } def % only used at startup, so no bind/FMBADEPSF { % Call with bad operator name on stack (as a string) (Adobe's PostScript Language Reference Manual, 2nd Edition, section H.2.4) (says your EPS file is not valid, as it calls X ) dup dup (X) search pop exch pop exch pop length % parmstr errstr errstr indx 5 -1 roll % errstr errstr index parmstr putinterval % errstr FMFAILURE } def% standard concatprocs routine/fmConcatProcs { /proc2 exch cvlit def/proc1 exch cvlit def/newproc proc1 length proc2 length add array def newproc 0 proc1 putinterval newproc proc1 length proc2 putinterval newproc cvx}def% Put all local variables here in alphabetical order.FrameDict begin [ /ALDsave /FMdicttop /FMoptop /FMpointsize /FMsaveobject /b /bitmapsave /blut /bpside /bs /bstring /bwidth /c /cf /cs /cynu /depth /edown /fh /fillvals /fw /fx /fy /g /gfile /gindex /grnt /gryt /gstring /height /hh /i /im /indx /is /k /kk /landscape /lb /len /llx /lly /m /magu /manualfeed /n /offbits /onbits /organgle /orgbangle /orgbfreq /orgbproc /orgbxfer /orgfreq /orggangle /orggfreq /orggproc /orggxfer /orgmatrix /orgproc /orgrangle /orgrfreq /orgrproc /orgrxfer /orgxfer /pagesave /paperheight /papersizedict /paperwidth /pos /pwid /r /rad /redt /sl /str /tran /u /urx /ury /val /width /width /ws /ww /x /x1 /x2 /xindex /xpoint /xscale /xx /y /y1 /y2 /yelu /yindex /ypoint /yscale /yy] { 0 def } forall% Start of PDF/Acrobat support% Bind def/FmBD {bind def} bind defsystemdict /pdfmark known { /fMAcrobat true def % FmPD is a conditional PDFMark /FmPD /pdfmark load def % FmPT is a show text operator which only show up when distiller is active /FmPT /show load def % FmPD2 and FmPA are Acrobat 2.0-specific currentdistillerparams /CoreDistVersion get 2000 ge { % FmPD2 is like FmPD but for Acrobat 2.0-specific PDF /FmPD2 /pdfmark load def % x y/name FmPA % is equivalent to % [/Dest/name/View[/FitH x y FmDC exch pop]/DEST FmPD % It is a shortcut for pagragraph Uinique ID designators whic occurr commonly. /FmPA { mark exch /Dest exch 5 3 roll /View [ /XYZ null 6 -2 roll FmDC exch pop null] /DEST FmPD }FmBD } { % These are No-Ops for Distiller 1.0 /FmPD2 /cleartomark load def /FmPA {pop pop pop}FmBD } ifelse} { % these are the No-Ops for regular PostScript /fMAcrobat false def /FmPD /cleartomark load def /FmPD2 /cleartomark load def /FmPT /pop load def /FmPA {pop pop pop}FmBD} ifelse% This convert a set of X Y coordinates from the current user space to the default% PostScript coordinates needed by some pdfmark variants. We also convert to % integer because the distiller doesn't always like floats!/FmDC { transform fMDefaultMatrix itransform cvi exch cvi exch}FmBD% This converts four numbers into a bounding box making sure the first two are maller than the last two/FmBx { dup 3 index lt {3 1 roll exch} if 1 index 4 index lt {4 -1 roll 3 1 roll exch 4 1 roll} if}FmBD% End of PDF/Acrobat support%% Color separation code%% Constants./FMnone 0 def/FMcyan 1 def/FMmagenta 2 def/FMyellow 3 def/FMblack 4 def/FMcustom 5 def/fMNegative false def % we are inverting the page% Variables./FrameSepIs FMnone def % separation we are printing% If FrameSepIs is FMcustom, this is the custom color/FrameSepBlack 0 def/FrameSepYellow 0 def/FrameSepMagenta 0 def/FrameSepCyan 0 def/FrameSepRed 1 def/FrameSepGreen 1 def/FrameSepBlue 1 def/FrameCurGray 1 def/FrameCurPat null def/FrameCurColors [ 0 0 0 1 0 0 0 ] def % c m y k r g b% Utility routines/FrameColorEpsilon .001 def % epsilon by which values can differ and sill be equal/eqepsilon { % v1 v2 eqeps bool sub dup 0 lt {neg} if FrameColorEpsilon le} bind def% are the cmyk and cmykrgb arrays on the stack the same color?/FrameCmpColorsCMYK { % [ c1 m1 y1 k1 ] [ c2 m2 y2 k2 r2 g2 b2] -> bool 2 copy 0 get exch 0 get eqepsilon { 2 copy 1 get exch 1 get eqepsilon { 2 copy 2 get exch 2 get eqepsilon { 3 get exch 3 get eqepsilon } {pop pop false} ifelse }{pop pop false} ifelse } {pop pop false} ifelse} bind def% are the rgb and cmykrgb arrays on the stack the same color?/FrameCmpColorsRGB { % [ r1 g1 b1 ] [ c2 m2 y2 k2 r2 g2 b2] -> bool 2 copy 4 get exch 0 get eqepsilon { 2 copy 5 get exch 1 get eqepsilon { 6 get exch 2 get eqepsilon }{pop pop false} ifelse } {pop pop false} ifelse} bind def% convert r g b to c m y k/RGBtoCMYK { % r g b 1 exch sub % r g y 3 1 roll % y r g 1 exch sub % y r m 3 1 roll % m y r 1 exch sub % m y c 3 1 roll % c m y 3 copy % c m y c m y 2 copy % c m y c m y m y le { pop } { exch pop } ifelse % c m y c min(m,y) 2 copy % c m y c min(m,y) c min(m,y) le { pop } { exch pop } ifelse % c m y min(c, min(m,y)) dup dup dup % c m y k k k k 6 1 roll % c k m y k k k 4 1 roll % c k m k y k k 7 1 roll % k c k m k y k sub % k c k m k y 6 1 roll % y k c k m k sub % y k c k m 5 1 roll % m y k c k sub % m y k c 4 1 roll % c m y k } bind def/CMYKtoRGB { % c m y k CMYKtoRGB r g b dup dup 4 -1 roll add % c m k k y+k 5 1 roll 3 -1 roll add % y+k c k m+k 4 1 roll add % m+k y+k c+k 1 exch sub dup 0 lt {pop 0} if 3 1 roll % r m+k y+k 1 exch sub dup 0 lt {pop 0} if exch % r b m+k 1 exch sub dup 0 lt {pop 0} if exch % r g b} bind def% Public routines
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -