day@grand.UUCP (Dave Yost) (11/06/88)
When comp.fonts was formed, I hoped to see PostScript
fonts posted here. But nooo, until now, not a one.
In hopes of starting the flow, as it were, I hereby
post a font I whipped up for drawing flow diagrams.
It draws arrows and rounded-corner pipe fittings for
use with Courier text (each element is the same width
as a Courier character). I used it to document the
flow of the spelling checker menus in the Grand Editor.
I am cross-posting to comp.lang.postscript as a reminder
to that group that the fonts group is here, and as an
request for more posting of fonts here.
It's not a nice, clean, fully-fleshed-out font, but it
works. If someone would like to take it and finish it,
great. A more complete set of fittings including
square cornered ones would be fitting, as would all the
normal font parameters that are supposed to be there.
If you send the following PostScript file to your
printer, you'll see what it does.
--dave yost
%!
%%Creator: Dave Yost
%%Title: Download font: flow
%%CreationDate: 880129
%%Pages: 0
% November 5, 1988 Dave Yost, Grand Software, Inc.
% 213-650-1089 {uunet,attmail}!grand!dyost or dyost@grand.COM
% Permission granted to all to copy, enhance, and use.
%%EndComments
% FontDirectory /flow known{(flow in place--not loaded\n)print flush stop}
% {0 serverdict begin exitserver}ifelse
% - or -
% 0 serverdict begin exitserver
/F_flow 17 dict def
F_flow begin
/FontType 3 def
/FontMatrix [.001000 0 0 .001000 0 0] def
/FontBBox [-100 -400 700 1100 ] def
/Encoding 256 array def
0 1 256 1 sub {Encoding exch /.notdef put} for
/CharProcs 256 1 add dict def
CharProcs begin
%/PreserveWidth 32 def % Put entire width adjust into space char
/.notdef {} def
/.notdef {600 0 setcharwidth {}} def
% 65 A curve up left
Encoding 65 /A put /A { 300 -200 moveto 0 200 rlineto stroke newpath 0 0 300 0 90 arc stroke} def
% 66 B curve down left
Encoding 66 /B put /B { 300 800 moveto 0 -200 rlineto stroke newpath 0 600 300 0 270 arcn stroke} def
% 67 C curve up right
Encoding 67 /C put /C { 300 -200 moveto 0 200 rlineto stroke newpath 600 0 300 180 90 arcn stroke} def
% 68 D curve down right
Encoding 68 /D put /D { 300 800 moveto 0 -200 rlineto stroke newpath 600 600 300 180 270 arc stroke} def
% 69 E horiz left up
Encoding 69 /E put /E { 0 300 moveto 600 0 rlineto stroke newpath 600 600 300 270 180 arcn 0 200 rlineto stroke} def
% 70 F horiz left down
Encoding 70 /F put /F { 0 300 moveto 600 0 rlineto stroke newpath 600 0 300 90 180 arc 0 -200 rlineto stroke} def
% 71 G horiz right up
Encoding 71 /G put /G { 600 300 moveto -600 0 rlineto stroke newpath 0 600 300 270 0 arc 0 200 rlineto stroke} def
% 72 H horiz right down
Encoding 72 /H put /H { 600 300 moveto -600 0 rlineto stroke newpath 0 0 300 90 0 arcn 0 -200 rlineto stroke} def
% 73 I vert up left
Encoding 73 /I put /I { 300 800 moveto 0 -1000 rlineto stroke newpath 0 0 300 0 90 arc stroke} def
% 74 J vert up right
Encoding 74 /J put /J { 300 800 moveto 0 -1000 rlineto stroke newpath 600 0 300 180 90 arcn stroke} def
% 75 K vert down left
Encoding 75 /K put /K { 300 -200 moveto 0 1000 rlineto stroke newpath 0 600 300 0 270 arcn stroke} def
% 76 L vert down right
Encoding 76 /L put /L { 300 -200 moveto 0 1000 rlineto stroke newpath 600 600 300 180 270 arc stroke} def
% 77 M horiz
Encoding 77 /M put /M { 0 300 moveto 600 0 rlineto stroke } def
% 78 N vert
Encoding 78 /N put /N { 300 -200 moveto 0 1000 rlineto stroke } def
% 79 O cross
Encoding 79 /O put /O { 0 300 moveto 600 0 rlineto stroke newpath 300 -200 moveto 0 1000 rlineto stroke} def
% 80 P right arrow back
Encoding 80 /P put /P { 600 300 moveto 600 1000 700 270 230 arcn stroke 600 300 moveto newpath 600 -400 700 90 130 arc stroke} def
% 81 Q right arrow front
Encoding 81 /Q put /Q { 0 300 moveto 600 0 rlineto stroke newpath 600 1000 700 270 230 arcn stroke 600 300 moveto newpath 600 -400 700 90 130 arc stroke} def
end % CharProcs
%% BuildChar is called by PS
%% whenever a character is to be imaged out of Code39
/BuildChar {
600 0
-300 -300 1100 1100
setcachedevice
exch begin
Encoding exch get
CharProcs exch get
end
100 setlinewidth
exec
} def
end % Code39FontDict
/flow F_flow definefont pop
/DoDemo true def
DoDemo {
/C { /Courier findfont 50 scalefont setfont show } def
/F { /flow findfont 50 scalefont setfont show } def
72 725 moveto (flowfont.ps) C
72 650 moveto (A) C (A) F (B) C (B) F (C) C (C) F (D) C (D) F
72 600 moveto (E) C (E) F (F) C (F) F (G) C (G) F (H) C (H) F
72 550 moveto (I) C (I) F (J) C (J) F (K) C (K) F (L) C (L) F
72 500 moveto (M) C (M) F (N) C (N) F (O) C (O) F (P) C (P) F (Q) C (Q) F
/flow findfont 50 scalefont setfont
72 450 moveto (CFFHA) show
72 400 moveto (JOOOI) show
72 350 moveto (LOOOI) show
72 300 moveto (LOOOK) show
72 250 moveto (DEGGB) show
/X {
72 200 moveto (A) C (MMMMA) F
72 150 moveto (B) C (MMA N) F
72 100 moveto (C) C (MMI N) F
72 50 moveto (D) C (MMEMEMMQ) F (E) C
} def
X
400 170 translate .2 .2 scale
X
showpage
} if