1% 2% PostScript 12 and 8 line logos - vertical configuration. Switch occurs 3% automatically below point size 29. Code from Matthijs Melchior. 4% 5 6/LOGO-dict-mm where not { 7 64 dict /LOGO-dict-mm exch def 8}{pop} ifelse 9LOGO-dict-mm begin % initialize dictionary 10 11 12/globesetup { 13/r exch def 14/N exch def 15/d 2 N r mul N 1 sub add div def 16/h d r mul def 17} def 18/mkabs { 19/yp exch def 20/xl exch def 21dup dup 0 get xl mul 0 exch put 22dup dup 1 get h mul yp add 1 exch put 23dup dup 2 get xl mul 2 exch put 24dup dup 3 get h mul yp add 3 exch put 25dup dup 4 get xl mul 4 exch put 26dup dup 5 get h mul yp add 5 exch put 27} def 28/topsegment { 29/n exch def 30/y n r mul n .5 add add d mul def 31/a y 1 y dup mul sub sqrt atan def 32/x a cos def 33/c2 exch x y mkabs def 34/ly1 exch h mul y add def 35/lx1 exch x abs mul def 36/c1 exch x y mkabs def 37x y /moveto load 380 0 1 a 180 a sub /arc load 39c1 aload pop /curveto load 40lx1 ly1 /lineto load 41c2 aload pop /curveto load 42/closepath load 43} def 44/botsegment { 45/n exch 1 add def 46/y n r mul n .5 sub add d mul def 47/a y 1 y dup mul sub sqrt atan def 48/x a cos def 49/c2 exch x y mkabs def 50/ly1 exch h mul y add def 51/lx1 exch x abs mul def 52/c1 exch x y mkabs def 53x y /moveto load 540 0 1 a 540 a sub /arcn load 55c1 aload pop /curveto load 56lx1 ly1 /lineto load 57c2 aload pop /curveto load 58/closepath load 59} def 60/segment { 61/n exch def 62/dh exch 1 exch sub 2 div def 63/ylb n r mul n 0.5 add add d mul def 64/ylt ylb h add def 65/yrb ylb h dh mul add def 66/yrt ylt h dh mul sub def 67/alb ylb 1 ylb dup mul sub sqrt atan def 68/alt ylt 1 ylt dup mul sub sqrt atan def 69/arb yrb 1 yrb dup mul sub sqrt atan 180 exch sub def 70/art yrt 1 yrt dup mul sub sqrt atan 180 exch sub def 71/xlb alb cos def 72/xlt alt cos def 73/xrb arb cos def 74/xrt art cos def 75/c4 exch xrb abs ylb mkabs def 76/ly2 exch h mul ylb add def 77/lx2 exch xrb abs mul def 78/c3 exch xrb abs ylb mkabs def 79/c2 exch xrt abs ylt mkabs def 80/ly1 exch h mul ylt add def 81/lx1 exch xrt abs mul def 82/c1 exch xrt abs ylt mkabs def 83xlb ylb /moveto load 840 0 1 alb alt /arc load 85c2 4 get c2 5 get /lineto load 86c2 2 get c2 3 get 87c2 0 get c2 1 get 88lx1 ly1 /curveto load 89c1 4 get c1 5 get /lineto load 90c1 2 get c1 3 get 91c1 0 get c1 1 get 92xrt yrt /curveto load 930 0 1 art arb /arc load 94c3 aload pop /curveto load 95lx2 ly2 /lineto load 96c4 aload pop /curveto load 97/closepath load 98} def 998 2.5 globesetup 100/globe8 [ 101/newpath load 102[ -.9 .1 -.6 .2 -.5 .2 ] -.5 .2 [ -.4 .2 .0 .0 .4 .0 ] 3 topsegment 103[ -.9 -.35 -.85 -.35 -.8 -.35 ] -.1 -.35 [ .1 -.35 .3 .0 .5 .0 ] 104[ -.8 .35 -.75 .35 -.7 .35 ] -.1 .35 [ .1 .35 .4 .0 .55 .0 ] .55 2 segment 105[ -.8 -.35 -.75 -.35 -.7 -.35 ] .05 -.35 [ .2 -.35 .4 .0 .55 .0 ] 106[ -.8 .35 -.75 .35 -.7 .35 ] .05 .35 [ .2 .35 .45 .0 .6 .0 ] .7 1 segment 107[ -.8 -.35 -.75 -.35 -.7 -.35 ] .0 -.35 [ .15 -.35 .4 .0 .6 .0 ] 108[ -.8 .35 -.75 .35 -.7 .35 ] .0 .35 [ .15 .35 .4 .0 .6 .0 ] .7 0 segment 109[ -.7 -.35 -.65 -.35 -.6 -.35 ] -.1 -.35 [ .05 -.35 .35 .0 .55 .0 ] 110[ -.7 .35 -.65 .35 -.6 .35 ] -.1 .35 [ .05 .35 .25 .0 .4 .0 ] .8 -1 segment 111[ -.65 -.2 -.55 -.2 -.45 -.2 ] -.3 -.2 [ -.2 -.2 .2 .0 .3 .0 ] 112[ -.65 .1 -.55 .1 -.45 .1 ] -.45 .1 [ -.3 .1 -.1 .0 .0 .0 ] .96 -2 segment 113[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 114[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 1 -3 segment 115[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] -4 botsegment 116] cvx def 11712 3 globesetup 118/globe12 [ 119/newpath load 120[ -.8 .2 -.7 .25 -.5 .25 ] -.4 .25 [ -.2 .25 .0 .0 .2 .0 ] 5 topsegment 121[ -.7 -.35 -.7 -.35 -.6 -.35 ] -.3 -.35 [ -.1 -.35 .3 .0 .55 .0 ] 122[ -.7 .35 -.7 .35 -.6 .35 ] -.25 .35 [ -.05 .35 .4 .0 .55 .0 ] .6 4 segment 123[ -.8 -.35 -.7 -.35 -.6 -.35 ] -.1 -.35 [ .1 -.35 .4 .0 .5 .0 ] 124[ -.8 .35 -.7 .35 -.6 .35 ] -.1 .35 [ .1 .35 .4 .0 .5 .0 ] .7 3 segment 125[ -.8 -.35 -.7 -.35 -.6 -.35 ] .0 -.35 [ .1 -.35 .45 .0 .55 .0 ] 126[ -.8 .35 -.7 .35 -.6 .35 ] .0 .35 [ .15 .35 .4 .0 .5 .0 ] .8 2 segment 127[ -.75 -.35 -.7 -.35 -.6 -.35 ] .0 -.35 [ .2 -.35 .4 .0 .5 .0 ] 128[ -.75 .35 -.7 .35 -.6 .35 ] .0 .35 [ .2 .35 .45 .0 .55 .0 ] .9 1 segment 129[ -.7 -.35 -.6 -.35 -.55 -.35 ] .0 -.35 [ .1 -.35 .45 .0 .55 .0 ] 130[ -.7 .35 -.6 .35 -.55 .35 ] .0 .35 [ .1 .35 .5 .0 .6 .0 ] .9 0 segment 131] cvx 132[ 133[ -.7 -.35 -.6 -.35 -.5 -.35 ] -.15 -.35 [ .0 -.35 .4 .0 .5 .0 ] 134[ -.65 .35 -.55 .35 -.45 .35 ] -.15 .35 [ .0 .35 .35 .0 .45 .0 ] .9 -1 segment 135[ -.8 -.1 -.5 -.3 -.4 -.3 ] -.2 -.3 [ .0 -.3 .3 .0 .4 .0 ] 136[ -.8 .1 -.5 .3 -.4 .3 ] -.2 .3 [ .0 .3 .2 .0 .3 .0 ] 1 -2 segment 137[ -.7 -.1 -.5 -.15 -.4 -.15 ] -.3 -.15 [ -.2 -.15 .0 .0 .2 .0 ] 138[ -.7 .05 -.5 .1 -.4 .1 ] -.4 .1 [ -.3 .1 .0 .0 .2 .0 ] 1 -3 segment 139[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 140[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 1 -4 segment 141[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 142[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] 1 -5 segment 143[ .0 .0 .0 .0 .0 .0 ] .0 .0 [ .0 .0 .0 .0 .0 .0 ] -6 botsegment 144] cvx 1454 array cvx 146dup 0 5 -1 roll put 147dup 1 /exec load put 148dup 2 4 -1 roll put 149dup 3 /exec load put 150def 151 152/l { lineto } def 153/rl { rlineto } def 154/m { moveto } def 155/rm { rmoveto } def 156/C { closepath } def 157/c { curveto } def 158/rc { rcurveto } def 159/T { m 0 29 rl -9.5 0 rl 0 7 rl 29 0 rl 0 -7 rl -9.5 0 rl 0 -29 rl C } def 160/ATT { 161newpath 1621 36 div dup scale 1630 0 m 12 36 rl 8 0 rl -11 -36 rl C 16425 0 m -11 36 rl 8 0 rl 12 -36 rl C 16510 7 m 0 7 rl 14 0 rl 0 -7 rl C 16636 0 T 16780 6 m -3 0 -5 1.2 -6 2 rc -12 10 rl -2.4 2 -2.7 6 0 6 rc 1681 0 2 -1 2 -2 rc 0 -4 rl 7 0 rl 0 4 rl 1690 5 -3 7 -9 7 rc -6 0 -9 -3 -9 -7 rc 1700 -2 0 -3.6 2 -6 rc 12 -10 rl 6 -5 10 -6 13 -6 rc C 17171 18 m 0 -6 rl 0 -5 -3 -7 -7 -7 rc -3 0 -5 2 -5 4 rc 0 1 0 3 2 4 rc 172-4 5 rl -4 -2 -6 -6 -6 -9 rc 0 -7 6 -10 13 -10 rc 1739 0 14 6 14 11 rc 0 8 rl C 17482 0 T 17536 dup scale 176} def 177 178end 179 180/build_LV { % standard ATT logo 181 LOGO-dict-mm begin 182 /w exch def 183 ptsize 29 lt % select globe, # lines depends on point size 184 { /globe /globe8 load def } 185 { /globe /globe12 load def } ifelse 186 gsave 187 currentpoint translate 188 size 2 div dup scale 189 gsave 190 1.02 1 transform round exch round exch itransform 191 translate 192 globe fill 193 grestore 194 gsave 195 %2.15 .62 translate 196 -0.1 -1.0 translate 197 .78 dup scale 198 ATT fill 199 grestore 200 grestore 201 end 202} def 203