eln272v@monu1.cc.monash.oz ( r lang) (10/19/89)
I saw a sign similar to one of these in the local Magistrates
Court Office two years ago. Recently I worked out how to
produce the same fuzzy text using PostScript.
This postscript program prints a pair of pages picturing
phuzzy printing. (apologies about an attempt at alliteration)
The first clips the text with many fine bars, then shifts
the text and clips it again with shifted bars.
The second prints the text shifted and unshifted using grey,
then prints the intersection of the shifted and unshifted text
with black. They are best viewed from several metres distance.
Have fun with these posters!
%!
%%Title: fuzzy.ps
%%Creator: Russell Lang
%%CreationDate: Thu Oct 19 13:07:25 EST 1989
%%Pages: 2
%%EndComments
/inch {72 mul} def
/mm {25.4 div 72 mul} def
% size of paper (A4 landscape)
/Paperwidth 297 mm def
/Paperheight 210 mm def
% Landscape mode
/Landscape {
90 rotate
0 Paperheight neg translate
} def
% size of text
/Textheight 35 mm def
% centre of page
/Centre {Paperwidth 2 div Paperheight 2 div} def
% size of clip area
/Xsize Paperwidth def
/Ysize Paperheight def
% size of clipping bars
% if this is too narrow then clip will generate
% a limitcheck error
/Height 0.5 mm def
% outline of single bar
/Barclip {
0 exch moveto
Xsize 0 rlineto
0 Height rlineto
Xsize neg 0 rlineto
0 Height neg rlineto
closepath
} def
% make clipping path lots of horizontal bars
/Makeclip {
newpath
0 Height 2 mul Ysize { Barclip } for
clip
newpath
} def
% show text bar fuzzy!
/FuzzyBarshow {
% fuzzy shift depends on text size
/Fuzzyshift (M) stringwidth pop 9 div def
% calculate size of box to clip
dup stringwidth pop Fuzzyshift add /Xsize exch def
/Ysize Textheight def
%
currentpoint
3 copy % string x y
% show text once
gsave
translate
Makeclip
0 0 moveto show
grestore
% show text shifted
gsave
translate
0 Height translate
Makeclip
Fuzzyshift Height neg moveto show
grestore
} def
% show text bar fuzzy centred about current point
/FuzzyBarCshow {
dup
stringwidth pop -2 div 0 rmoveto
FuzzyBarshow
} def
% show text grey fuzzy!
/FuzzyGreyshow {
% fuzzy shift depends on text size
/Fuzzyshift (M) stringwidth pop 9 div def
%
gsave
currentpoint
translate
0.5 setgray
% show text grey once
dup % string
0 0 moveto show
% show text grey shifted
dup % string
Fuzzyshift 0 moveto show
% set up clip path
dup % string
0 0 moveto
true charpath clip newpath
% show text black shifted clipped
0 setgray
Fuzzyshift 0 moveto show
grestore
} def
% show text grey fuzzy centred about current point
/FuzzyGreyCshow {
dup
stringwidth pop -2 div 0 rmoveto
FuzzyGreyshow
} def
%%EndProlog
%%Page: "bar" 1
Landscape
/Times-Bold findfont Textheight scalefont setfont
Centre Textheight add moveto
(DO YOU) FuzzyBarCshow
Centre moveto
(SUFFER FROM) FuzzyBarCshow
Centre Textheight sub moveto
(EYE STRAIN?) FuzzyBarCshow
showpage
%%Page: "Grey" 2
%%BeginDocument: acuity2.ps
%!
% acuity2.ps
% Modified from Byte, May 1987
% acuity test chart
150 750 moveto
/width 250 def
/size width 4 div def
/cuberoot2 2 1 3 div exp def
width 2 div size -1.5 mul rmoveto
/showrow
{ currentpoint 3 -1 roll
FontDirectory /Sloan known
{/Sloan findfont size scalefont setfont}
{/Helvetica-Bold findfont size 1.8 mul scalefont setfont}
ifelse
dup stringwidth pop -2 div 0 rmoveto
% original line is below
% show
% replace with next two lines to fuzzy show for fun!
currentdict /FuzzyGreyshow known
{FuzzyGreyshow} {show} ifelse
%
moveto
/size size cuberoot2 div def
0 size -2 mul rmoveto
} def
(Z C H) showrow (O S H) showrow (H K N) showrow
(O Z S) showrow (D H C) showrow (C N O) showrow
(K D V) showrow (S H O) showrow (D R H) showrow
(K N Z) showrow (R H K) showrow (C H O) showrow
(N K S) showrow (C Z R) showrow (S O K) showrow
(D N C) showrow (C H D) showrow (R O H) showrow
(S N D) showrow (O C H) showrow (Z H K) showrow
(C V H) showrow (V N Z) showrow (S C K) showrow
(N D C) showrow (C N D) showrow (O V N) showrow
(Z H V) showrow (H S K) showrow (D N O) showrow
(N S K) showrow (D C Z) showrow (V H K) showrow
(S K V) showrow (V R K) showrow (V R S) showrow
(K Z N) showrow
showpage
%EndDocument
%%Trailer
--
Russell Lang ACSnet: eln272v@monu1.cc.monash.oz Phone: (03) 565 3464
Department of Electrical and Computer Systems Engineering
Monash University, Australia