From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- fonts/unsupported/committee/font1.mf | 2105 ++++++++++++++++++++++++++++++ fonts/unsupported/committee/font1base.mf | 113 ++ fonts/unsupported/halftone | 1 + fonts/unsupported/logo/flogo.mf | 10 + fonts/unsupported/logo/nlogo.mf | 15 + fonts/unsupported/logo/sklogo.mf | 11 + fonts/unsupported/mfbook/logobase.mf | 34 + fonts/unsupported/mfbook/metafon.mf | 50 + 8 files changed, 2339 insertions(+) create mode 100644 fonts/unsupported/committee/font1.mf create mode 100644 fonts/unsupported/committee/font1base.mf create mode 120000 fonts/unsupported/halftone create mode 100644 fonts/unsupported/logo/flogo.mf create mode 100644 fonts/unsupported/logo/nlogo.mf create mode 100644 fonts/unsupported/logo/sklogo.mf create mode 100644 fonts/unsupported/mfbook/logobase.mf create mode 100644 fonts/unsupported/mfbook/metafon.mf (limited to 'fonts/unsupported') diff --git a/fonts/unsupported/committee/font1.mf b/fonts/unsupported/committee/font1.mf new file mode 100644 index 0000000000..5c0dadc05a --- /dev/null +++ b/fonts/unsupported/committee/font1.mf @@ -0,0 +1,2105 @@ +input font1base +proofing:=0; % :=1 for pts/labels, :=.5 for smoke proofs, :=0 for fontmaking! +fontmaking:=1; + +hppp:=722.909/72.27; +vppp:=hppp; +designsize:=29; + +if known Xerox_world: + font_family "CLASS"; + coding_scheme "ASCII LETTERS ONLY"; +fi + +% A by Ann Lasko-Harvill +vardef char.A= + setwidth .6em; + pos1(1.3 thickwidth,45); + pos2(1.5 thickwidth,0); + x1=.3em; + y1=capheight; + x2l=.5em; + y2=0; + pos3(1.3thinwidth,75); + pos4(thinwidth,65); + x3=.1em; + y3=.55xheight; + x4=.4em; + y4=y3; + pos5(thinwidth,0); + pos6(thinwidth,-50); + x5=.1em; + y5=0; + x6=x1; + y6l=y1l; + stroke(1,2,.75,.3,.1); + stroke(3,4,.5,.23,.1); + stroke(5,6,.2,.2,.1); + labelpos(1,2,3,4,5,6); +enddef; + +% B by William Burley +vardef char.B = + setwidth .57em; + pos1(thinwidth,90); + pos2(thinwidth,90); + pos3(.75[thinwidth,thickwidth],0); + pos4(thinwidth,-90); + pos5(thinwidth,270); + pos6(.75[thinwidth,thickwidth],180); + pos7(thinwidth,90); + pos8(thinwidth,90); + pos9(thickwidth,0); + pos10(thickwidth,0); + pos11(thinwidth,-90); + x1=x10l=x9l=x8=.17w; + x2=x4=.48w; + x5=x7=.52w; + x11=x9r; + x3=x4+.45(y2-y4); + x6=x7+.45(y5-y7); + y8l=y7l=0; + y1r=y2r=capheight; + y9=y8r; + y10=y1l; + y11=y4=y5=.52capheight; + y3=.5[y4,y2]; + y6=.5[y7,y5]; + dz2=(1,0); dz4=(-1,0); + dz5=(-1,0); dz7=(1,0); + stroke(1,2,0,0,0); + stroke(9,10,0,0,0); + stroke(8,7,0,0,0); + stroke(5,11,0,0,0); + curve(2,3,4); + curve(7,6,5); + labelpos(1,2,3,4,5,6,7,8,9,10,11); +enddef; + +% C by Arthur Samuel +vardef char.C = + setwidth .7em; % do this first; it sets the character width + pos1(thickwidth,180); + pos2(thickwidth,145); + pos3(thinwidth,90); + pos4(thinwidth,45); + pos5(.7thickwidth,0); + pos6(thickwidth,0); + pos7(thickwidth,45); + pos8(thinwidth,90); + pos9(thinwidth,135); + pos10(.7thickwidth,180); + z1=(.15w+.5thickwidth,.5capheight); dz1=(0,1); +% z2=(.22w+.5thickwidth,.83capheight); + x2=.72[x3,x1]; y2=.72[y1,y3]; + z3=(.56w,capheight); dz3=(1,0); + z4=(.650[x3,x5],.300[y3,y5]); + z5=(.83w,.8capheight); dz5=(1,-2); + z6=(.15w+.5thickwidth,.5capheight); dz6=(0,-1); +% z7=(.22w+.5thickwidth,.17capheight); + x7=.72[x8,x1]; y7=.72[y1,y8]; + z8=(.56w,0); dz8=(1,0); + z9=(.650[x8,x10],.300[y8,y10]); + z10=(.83w,.2capheight); + curve(1,2,3); curve(3,4,5); + curve(6,7,8); curve(8,9,10); + labelpos(1,2,3,4,5,6,7,8,9,10); +enddef; + +% D by Dan Mills +vardef char.D = + begingroup +% charcd := 'D; + save glyphwidth,lsb,rsb,cuthru,baseline; + numeric glyphwidth,lsb,rsb,cuthrubaseline; + baseline=0; + + glyphwidth = .5em; + lsb = .2glyphwidth; + rsb = .1glyphwidth; + cuthru = .02xheight; + setwidth( lsb+glyphwidth+rsb ); + +% positions: + % 1 is special + pos2(.55[thinwidth,thickwidth],45); + pos3(thickwidth,0); + pos4(.5[thinwidth,thickwidth],-45); + % 5 is special + +% coordinates: + % 1 is special + x2 = lsb + .7glyphwidth; y2 = .92capheight; + x3r = lsb + glyphwidth; y3 = .55capheight; + x4 = lsb + .7glyphwidth; y4 = .15capheight; + % 5 is special + +% specials: + x1r = lsb; y1r = capheight; + x1l = x1r + .85thickwidth; y1l = y1r - thinwidth; + z1 = .5[z1l,z1r]; + + x5r = lsb; y5r = baseline; + x5l = x1r + .85thickwidth; y5l = y5r + thinwidth; + z5 = .5[z5l,z5r]; + +% draw straights: + stroke(1,5,.45,.2,.2); + +% add slopes for curves: + dz1 = (1,0); + dz3 = (0,-1); + dz5 = (-1,0); + +% draw curves: + curve(1,2,3); + curve(3,4,5); + + labelpos(1,2,3,4,5); + endgroup; +enddef; + +% E by Joey Tuttle +vardef char.E = + setwidth .63em; + pos1(1.5thinwidth,45); pos2(1.25thinwidth,135); + pos3(1.4thinwidth,90); pos4(.9thinwidth,90); + pos5(1.5thinwidth,-45); pos6(1.25thinwidth,-135); + pos7(thickwidth,0); pos8(thickwidth,0); + x1=w-.1em; y1r=capheight; x2=.1em; % fixed points + y2r=y1r; x3=.95[x7,x1l]; y3=.55[y6,y2]; x4=x7; y4=y3; + x5=x1; x6=x2; y5r=0; y6r=y5r; + z7l=z6; z8l=z2; + stroke(1,2,.1,.2,0); stroke(3,4,.1,.2,.2); + stroke(5,6,.1,.2,0); stroke(7,8,.5,.15,.05); + labelpos(1,2,3,4,5,6,7,8); +enddef; + +% F by Pavel Curtis +vardef char.F = + setwidth .6em; + + numeric len; % clear this value for redefinition + + pos0(thickwidth, 0); + pos1(1.1thickwidth, 0); + pos2(len, 10); % Length will be set below + pos3(thinwidth, 90); + pos4(1.5thinwidth, 120); + pos5(thinwidth, 90); + pos6(1.5thinwidth, 90); + + x1.l = 0.1em; % Leave 0.1em sidebars + x4.r = w - 0.1em; + + z0.r = (x1.r,xheight); + y1 = capheight; + x2.l = x1.l; x2.r = x1.r; % This determines len, above + y2 = 0; + z3.r = (x1,capheight); + y4.r = capheight; + z5 = (x1,y6); + z6.r = (.9[x1.r, x4.r], xheight); + + % Vertical stroke + dz0 = (0,1); + stroke(0, 1, .8, .15, 0); + stroke(2, 0, .2, .15, 0); + % Top stroke + stroke(3, 4, .8, .38, 0); + % Middle stroke + stroke(5, 6, .8, .25, .25); + + labelpos(0, 1, 2, 3, 4, 5, 6); +enddef; + +% G by Jean-Luc Bonnetain +vardef char.G = + setwidth .75em; + pos1(.5[thinwidth,thickwidth],10); % upper righmost pt of curve + pos2(.95[thinwidth,thickwidth],45); % intermediary pt for curve + pos3(1.3[thinwidth,thickwidth],90); % uppermost pt + pos4(1.3[thinwidth,thickwidth],135); % intermediary pt for curve + pos5(1.7[thinwidth,thickwidth],180); % lefmost pt + pos6(1.3[thinwidth,thickwidth],225); % intermediary pt for curve + pos7(1.3[thinwidth,thickwidth],270); % lowest pt + pos8(1.1[thinwidth,thickwidth],270); % intermediary pt for curve + pos9(.6thinwidth/(thickwidth-thinwidth)[thinwidth,thickwidth],270); + % lower righmost pt of curve + pos10(.5[thinwidth,thickwidth],10);% junction pt for 2 strokes + pos11(.5[thinwidth,thickwidth],0); % lowest pt vertical stroke + pos12(.5[thinwidth,thickwidth],90); + pos13(.5[thinwidth,thickwidth],80); + + x1r = x10r = x12 = w - .1em ; y1 = 8/15[y3,y5]; + x2 = .707[x3,x1]; y2 = .707[y1,y3]; + x3 = x7; y3r = 1.05capheight; + x4 = x6; y4 = .707[y5,y3]; + x5r = .1em ; y5 = 1/2capheight; + x6 = .707[x7,x5] ; y6 = .707[y5,y7]; + x7 = 1/2[x5,x1]; y7r = -.05capheight; + x8 = .53[x7,x1]; y8 = .85[y91,y7]; % .707 --> .5 + y91 = 3/5[y7,y5]; + x9 = x1l + .02w; y9 = 11/16y91; + y10 = y7r; + x11 = x10 ; y11 = y12 = y13 = 7/8y5; + x13 = x12 -.25w; + + dz1 = (0,1); + dz3 = (-1,0); + dz5 = (0,-1); + dz7 = (1,0); + + curve(1,2,3); + curve(3,4,5); + curve(5,6,7); + curve(7,8,9); + stroke(10,11,0,0,0); + stroke(12,13,0,0,0); + + labelpos(1,2,3,4,5,6,7,8,9,10,11,12,13); + +enddef; + +% H by John Hershberger +vardef char.H = + +% The capital H is just not as nice as the small j. It is not very interesting +% to the eye, and is in fact rather blocky and ugly in some of its +% incarnations. Sigh. + +lwidth := thickwidth; % Left and right verticals are different +rwidth := .5[thinwidth,thickwidth]; % ...widths + +barheight := .8[ xheight, .5capheight]; % Bar is a bit above center + +setwidth .68em; % + +% Left vertical stroke +pos1( 1.1lwidth, 10 ); % To match top of U +pos2( lwidth, 10 ); % and bottom, sort of +x1l = .1em; y1=capheight; +x2=x1; y2=0; + +% Right vertical stroke +pos3( 1.1rwidth, 10 ); % Different width than lvertical +pos4( rwidth, 10 ); +x3r = w-.1em; y3=capheight; +x4=x3; y4=0; + +% Horizontal stroke +x5=x1; y5=barheight; +x6=x3; y6= .2[barheight, xheight]; % Gets steeper for bx. May not be right. +pos5(1.25thinwidth, 70 ); % Thicker thin stroke! +pos6(1.25thinwidth, 80 ); % getting no wider + +% Now draw it +stroke( 1, 2, .2, .05, .05 ); % Slight taper below the tops of both verticals +stroke( 3, 4, .2, .05, .05 ); +stroke( 5, 6, .5, .4, .4 ); % Noticeable taper in the horizontal + +labelpos(1,2,3,4,5,6); +enddef; + +% I by Nori Tokusue +vardef char.I = + setwidth .5em; % temporary value + pos1(1.4thickwidth,5); + pos2(thickwidth,0); + pos3(1.4thickwidth,2.5); % temporary value + x1=x2=x3; % straight I + z3=(.5w,0); % the botom of 'I' is at the base line + % midway between left and right ends. + y1=capheight; + y2=.5capheight; + + % OK now draw 'I' + stroke(1,2,.1,.24,.24); % temporary value. + stroke(2,3,.9,.24,.24); % temporary value (bottom half) + + labelpos(1,2,3); +enddef; + +% J by Lynn Ruggles +vardef char.J = % character 'J' + setwidth .5em; % width is 1/2 em + pos1(thickwidth,0); + z1=(.2w,1/4capheight); + dz1=(0,-1); + + pos2(.7thickwidth,90); + z2=(.5[x1,x3],.01capheight); + dz2=(1,0); + + pos3(thickwidth,175); + z3=(.75w,y1); + dz3=(0,1); + + pos4(thickwidth,180); + z4=(x3,capheight); + + curve (1,2,3); + stroke (3,4,.5,.01,.01); + + labelpos(1,2,3,4,5); +enddef; + +% K by Dikran Karagueuzian +vardef char.K = + setwidth .65em; + + pos1(1.1thickwidth,0); % the pen starts out slightly thick + pos2(1.1thickwidth,0); % the pen finishes with start thickness + pos3(0.8thinwidth,-75); + pos4(1.4thinwidth,0); + pos5(1.2thickwidth,0); + + x1l=x2l=.1em; + x3r=x1r-.1thickwidth; %l edge of K + x4r=x5r=w-.1em; %r edges of K + y1=y4=capheight; %1 and 4 fully defined + y2=y5=0; + y3r=.5[y2,y1]; + z7=.33[z3,z4]; + pos7(0.9thickwidth,angle(z4-z3)); + stroke(1,2,.4,.175,.085); + stroke(4,3,.3,.175,.085); + stroke(5,7,.3,.175,.085); + labelpos(1,2,3,4,5,7); % all positions should be listed +enddef; + +% alternate K by Jim Bratnober +vardef char.?= + setwidth .8em; + pos1(1.1thickwidth,10); + pos2(thickwidth,10); + pos3(1.4thickwidth,90); + pos4(1.6thickwidth,190); + pos5(1.1thickwidth,45); + pos6(1.3thickwidth,10); + z1=(.125w+.56thickwidth,capheight); + z2=(x1-.06thickwidth,0); + z3=.3[z2,z1]; + z4=(x6-.7thickwidth,capheight); + z5=.5[z3,z4]; + z6=(.875w-.7thickwidth,0); + stroke(1,2,.2,.05,.05); + stroke(4,3,.1,.1,.2); + stroke(6,5,.1,.1,.1); + labelpos(1,2,3,4,5,6); +enddef; + +% L by Bruce Leban +vardef char.L = + setwidth 0.6em; + + bottomslant := 5; % how much slant at bottom of vertical stroke + + x1l = 0.1em; % left margin + y1 = capheight; + pos1 (1.15thickwidth, 10); % semi-serif at top + + x2 = x1; % more or less straight down + y2 = 0; + pos2 (1.05thickwidth, bottomslant); + + dz3 = (cosd bottomslant, sind bottomslant); + z3l = 0.5[z2,z2r]; % bottom of strokes align + pos3 (thinwidth,90); + + x4 = w-0.06em; % right margin + y4l = 0; % bottom of stroke is at baseline + pos4 (thickwidth, 85); % grows to thickwidth + + stroke (1,2,.2,.15,.05); % slight taper on vertical stroke + stroke (3,4,.8,0,1-thinwidth/thickwidth); + % extreme taper on horizontal + % should change to compute based on thick-thin?? + labelpos (1,2,3,4); +enddef; + +% M by Kwang-Chun Park +vardef char.M = %draw letter "M" + + setwidth 0.7em; + pos1(thinwidth,0); + pos2(thinwidth,10); + pos3(1.1thickwidth,0); + pos4(1.1thickwidth,0); + pos5(thinwidth,0); + pos6(thinwidth,0); + pos7(1.1thickwidth,0); + pos8(1.1thickwidth,10); + y1=capheight; x1=x2; + z2l=(0.1em,0); + y3=capheight; z4=(0.5w,0); + x3l=x1; + y6=capheight; x5l=x4; y5=0; + x6r=x7; x7r=w - 0.1em; + y7=capheight; + y8=0; x8=x7; + stroke(1,2,0.3,0,0.1); + stroke(3,4,0.8,0,0.1); + stroke(5,6,0.2,0.1,0); + stroke(7,8,0.3,0.1,0); + labelpos(1,2,3,4,5,6,7,8); + % end of the fourth brush + +enddef; + +% N by Dave Siegel +vardef char.N = +begingroup +save side_right, side_left, charwidth, slidex; + +side_right = .07em; %left sidebearing. +side_left = .1em; %right sidebearing. + +charwidth = .5em; %width of character. + +slidex = .6thinwidth; + + setwidth side_left + charwidth + side_right; + + + %DRAW THE LEFT VERTICAL STEM + + pos1(1.05thickwidth,10); + pos2(1.15thickwidth,10); + + x1l = side_left; y1 = capheight; + x2r = x1r; y2 = 0; + + stroke(1,2,0.7,0.1,0.1); + + + %DRAW THE DIAGONAL STROKE + + pos3(1.05thickwidth,20); + + x3r = side_left + charwidth; y3 = y2; + + stroke(1,3,.5,0.1,0.1); + + + %DRAW THE RIGHT VERTICAL STEM + + pos4(1.2thickwidth,20); + + x4l = x3l; y4 = y1; + + stroke(4,3,.5,0.1,0.1); + + + %MARK LABELS + + labelpos(1,2,3,4); +endgroup +enddef; + +% O by Bruce Fleischer +vardef char.O = + +% the O is defined by four points, at roughly the top, bottom, left and right. +%The positions of the thick and thin points are controlled by the pen widths at +%these points, and by the angles. The simplest case has the pens pointing +%vertically at the top and bot, and horizontally at the sides. To slant the +%counter to the left a little, we tilt the top and bottom pens clockwise, and +%the side pens ccw. This will also tend to tilt the outside shape of the 'O' to +%right. To make it look more upright, we slide the top point a bit to the left, +%and the bottom point a bit to the right. + + setwidth .8em; %fairly wide - make it nice and round + ang:=80; + topwidth := thinwidth; + sidewidth := thickwidth; + topedge := .03 capheight; + sidebar := .07em; + + % go clockwise -- r=outside, l=inside + % z1=top,z2=r,z3=b,z4=l + + pos1(topwidth,ang); + pos2(sidewidth,90-ang); + pos3(topwidth,ang-180); + pos4(sidewidth,-90-ang); + + y1r = capheight + topedge; + y3r = -topedge; + x2r = w - sidebar; + x4r = sidebar; + + x1 = .48w; x3 = w-x1; + y2 = .5 capheight; y4 = capheight-y2; + + dz1=-dz3=z2-z4; + + curve(1,2,3); curve(3,4,1); + + labelpos(1,2,3,4); +enddef; + +% P by Ed Williams +vardef char.P = +setwidth .65em; +pos1(thickwidth,0); +pos2(1.05thickwidth,10); +pos3(thinwidth,-90); +pos4(.3[thinwidth,thickwidth],-105); +pos5(.8[thinwidth, thickwidth],-140); +pos6(thickwidth,180); +pos7(.5[thickwidth,thinwidth],150); +pos8(.2[thinwidth,thickwidth],115); +pos9(thinwidth,90); +z1l=(.1w,capheight); +y3l=capheight; +x3=x2r=x1r;y2=0;dz3=(1,.-.05); +z9=(x3+.01em,.55xheight);dz9=(-1,-0.05); +x6l=w-.15em; +y6=.95xheight;dz6=(0,-1); +x4=.5[x3,x6];y4l=.99capheight; +x8=.5[x6,x9];y8=.05[y9,y6]; +x5=.7[x4,x6]; y5=.3[y4,y6]; +x7=.7[x8,x6]; y7=.3[y8,y6]; + +stroke(1,2,.1,.1,0); +stroke(3,4,.8,0,.1); +curve(4,5,6); curve(6,7,8); +stroke(8,9,.2,0,.05); + +labelpos(1,2,3,4,5,6,7,8,9); +enddef; + +% Q by Neenie Billawala +vardef char.Q= + setwidth.8em; + %numeric a; %numeric b; + pos1(.85thinwidth,90-10 ); dz1=(-1,0); + pos2(.5[thinwidth,thickwidth],135+10 ); + pos3(1.13thickwidth,180+10 ); dz3=(0,-1); + pos4(.5[thickwidth,thinwidth],225-10 ); + pos5(.85thinwidth,270-10 ); dz5=(1,0); + pos6(.5[thinwidth,thickwidth],315+10 ); + pos7(1.13thickwidth,0+10 ); dz7=(0,1); + pos8(.5[thickwidth,thinwidth],45-10 ); + x1=.5w; y1=capheight; + x2=.71[x1,x3]; y2=.71[y3,y1]; + x3r=.08w; y3=.49capheight; + x4=.71[x3,x5]; y4=.71[y5,y3]; + x5=w-x1; y5=0; + x6=.71[x5,x7]; y6=.71[y7,y5]; + x7=w-x3; y7=capheight-y3; + x8=.71[x7,x1]; y8=.71[y1,y7]; + curve(1,3,5); + curve(5,7,1); + %curve(1,2,3); + %curve(3,4,5); + %curve(5,6,7); + %curve(7,8,1); + labelpos(1,2,3,4,5,6,7,8); + + pos9(.7thickwidth,60); + pos10(.85thinwidth,90); %dz10=(z12-z9); + pos11(.8[thinwidth,thickwidth],60); + pos12(1.05thickwidth,60); + pos13(thickwidth,60); + x9l=x3l; y9r=y5r; + z10=(x5-.05w,y5); + x11r=.5[x12,x10]; y11l=.5[y12l,y10l]; + x12r=.97w; y12r=y10l; + z12=z13r; + %curve(9,10,11); + %stroke(10,13,.9,.1,0); + dz9=(1,.4); + %dz10=(1,0); + dz12=(1,.7); + curve(9,10,12); + labelpos(9,10,11,12,13); + +enddef; + +% R by Renata Byl +vardef char.R = + setwidth .75em; + pos1(1.1thickwidth,10); + pos2(1.05thickwidth,10); + x1=.15em; + y1=capheight; + x2=.15em; + y2=0; + pos3(thickwidth,90); + pos4(thickwidth,75); + pos5(.5[thickwidth,thinwidth],40); + pos6(.5[thickwidth,thinwidth],0); + pos7(.5[thickwidth,thinwidth],320); + pos8(thinwidth,285); + pos9(thinwidth,270); + x3r=x9=x1; + y3r=capheight; + + x4r=x8r=.3em; + y4=.95capheight; + dz4=(1,0); + + x5=.71[x4,x6]; + y5=.71[y6,y4]; + dz5=(1,-1); + + x6r=.45em; + y6=.80capheight; + dz6=(0,-1); + + x7=.71[x8,x6]; + y7=.71[y6,y8]; + dz7=(-1,-1); + + y8=.60capheight; + dz8=(-1,0); + + y9=.58capheight; + + pos10(1.05thinwidth,45); + pos11(1.2thickwidth,10); + x10=.2em; + y10=.59capheight; + x11=.47em; + y11=.02capheight; + + stroke(1,2,.1,.2,0); + stroke(3,4,0,0,0); + curve(4,5,6); + curve(6,7,8); + stroke(8,9,0,0,0); + stroke(10,11,.9,0,.2); + labelpos(1,2,3,4,5,6,7,8,9,10,11); +enddef; + +% S by pinch-hitter Joey Tuttle +% +% +% Don, +% If you look at this, please don't pay too much attention to it... +% As it turns out, after dredging up a copy of font1base, the version +% Metafont available (-87) doesn't execute test. functions -- so I have +% been totally unable to look at the S and I've no idea whether my +% "tricks" will make anything other than a big mess!! +% +% I'll try to get back in tomorrow to see if someone has fixed things up. +% +% Joey +%1984-5-26 21:50:00 +% +%1984-5-27 20:30:00 -- Situation unchanged. We'll keep trying.... +%1984-5-29 00:20:00 -- Finally - as I expected, it was a mess... However, +% I'll at least get something that I'm not too ashamed of. +% +%1984-5-29 01:05:00 -- OK, it's not perfect (especially the bold) but +% I'm happy. (and It's too late) +% +vardef char.S = + setwidth .56em; + x2=.5[x4r,x5r]; y1=.54[0,capheight]; % the center of S + x3=x1=w/2; % top and bottom also at center + y3r=1.05capheight; y2l=-.05capheight; % centers slightly extended + x4l=.1w; y4=.6[y1,0]; % lower left + x5r=.9w; y5=.6[y1,capheight]; % upper right + x6l=x5r; y6=y4; % center of lower curve + x7r=x4; y7=y5; % center of top curve +% This character goes 5..3..7..1..6..2..4 (top to bottom) + pos5(1.3thinwidth,45); pos3(.7thinwidth,90); + pos7(1.2thinwidth,180); pos1(1.1thickwidth,270); + pos6(1.2thinwidth,180); pos2(.7thinwidth,90); + pos4(1.3thinwidth,45); + dz3=(-1,0);dz7=(0,-1); + dz1=(3,-2); % this one is important! + dz6=(0,-1);dz2=(-1,0); + curve(5,3,7); curve(7,1,6); curve(6,2,4); + labelpos(1,2,3,4,5,6,7); +enddef; + +% T by Tuan Pham +vardef char.T= +setwidth .75em; +pos1(1.5thickwidth,45); +pos2(1.2thickwidth,60); +pos3(1.2thickwidth,0); +pos4(1.1thickwidth,10); +x1=0.125em; x2=w-0.125em; +y1=y2=capheight-0.5thickwidth; +x3=x4=0.5w; y3=capheight-0.5thickwidth; +y4=0; +stroke (1,2,.2,.3,.2); +stroke (3,4,.6,.3,.2); +labelpos(1,2,3,4); +enddef; + +% alternate T by Theresa-Marie Rhyne +vardef char.exclamation= + charcode:=ASCII"!"; + setwidth .75em; + pos1(1.5thickwidth,10); + pos2(1.1thickwidth,45); + pos3(1.1thickwidth,45); + pos4(1.1thickwidth,45); + z1=(.5w,0);%y1=0; + y2r=capheight; x1r=x2r; + y3r=y4r=capheight; x3r=w-x4r=.1em; + stroke(1,2,.2,.05,.05); + stroke(3,4,.2,.05,.05); + labelpos(1,2,3,4); +enddef; + +% U by Don Knuth +vardef char.U = + setwidth .75em; + pos1(1.1thickwidth,10); + pos2(thickwidth,10); + pos3(thickwidth,40); + pos4(.5[thickwidth,thinwidth],75); + pos5(.9[thickwidth,thinwidth],130); + pos6(thinwidth,180); + pos7(1.1thinwidth,190); + x1l=.1em; x7l=w-.1em; + y1=y7=capheight; + x2=x1; y2=.3capheight; dz2=(0,-1); + x3=.75[x4,x2]; y3=.75[y2,y4]; + x4r=.5[x2r,x6r]; y4l=-.05capheight; dz4=(1,0); + x5=.71[x4,x6]; y5=.71[y6,y4]; + x6=x7; y6=1/3capheight; dz6=(0,1); + stroke(1,2,.2,.05,.05); + curve(2,3,4); curve(4,5,6); + stroke(6,7,.8,.05,.05); + labelpos(1,2,3,4,5,6,7); +enddef; + +% V by Kanchi Gopinath +vardef char.V= + setwidth .75em; + + pos1(1.6thickwidth,10); + pos2(1.5thickwidth,65); + pos3(thinwidth,0); + pos4(1.1thinwidth,10); + + x1l=.1em; + x4l=w-.1em; + y1=y4=capheight; + + y2l=0; + x2l=w/2; + + x3l=x2l; + y3l=y2l; + + stroke(1,2,.1,.4,.1); + stroke(4,3,.1,.4,.1); + stroke(2,3,0,0,0); + labelpos(1,2,3,4); +enddef; + +% W by Stan Osborne +vardef char.W = + setwidth .9em; % set up our char width and variables + + pos1(2thickwidth,-30); % position upper left vector vec(1) + y1 = capheight; % don't set height as tall as an "h" + x1l = .02w; % all the way to the left + + pos2(1.0thickwidth,-4); % position lower left vector vec(2) + z2 = (0.325w,0); % at baseline, center is at .3w + + stroke(1,2,.3,.2,.1); % left most stroke + + pos3(.5[2thickwidth,2thinwidth],-88);% position middle vector vec(3) + z3l = (0.51w,1.07xheight); % in the middle, top as high as "x" + + stroke(2,3,.4,.2,0); % center left stroke + + pos4(.5[2thickwidth,2thinwidth],92);% position other middle vector vec(4) + z4r = z3l; % vec(4) is a 180 of vec(3) + z4l = z3r; % + + pos5(1.0thickwidth,0); % position lower left vector vec(5) + z5 = (0.70w,0); % at baseline, ceter is at .7w + + stroke(4,5,.6,0,.1); % center right stroke + + pos6(1.5thickwidth,30); % position upper right vector vec(6) + y6 = capheight; % don't set height as tall as an "h" + x6r = 1.0w; % all the way to the right + + stroke(5,6,.7,.1,.2); % right most stroke + + labelpos(1,2,3,4,5,6); % label the vectors (1,2,3,4,5, and 6) + +enddef; + +% X by Alan Spragens +vardef char.X = +setwidth .8em; +pos1(1.5 thickwidth,10); +pos2(1.8 thickwidth,10); +pos3(1.5 thinwidth,10); +pos4(1.8 thinwidth,10); +y1=capheight; +x1l=.1em; +x4r=w-.1em; +y4=capheight; +y3=0; +y2=0; +x3=x1; +x2=x4; +stroke(1,2,.1,.1,.3); +stroke(3,4,.9,.2,0); +labelpos(1,2,3,4); +enddef; + +% Y by Arnie Olds +vardef char.Y = setwidth .75em; pos1(1.2thickwidth,10); +pos2(1.1thickwidth,10); pos3(2thinwidth,10); +pos4(thinwidth,-5); pos5(1.5thickwidth,10); +x2=.5w; x1r=x2r; z4r=z2r; x3r=w-.05em; x5l=.03em; +y1=0; y2r=.75xheight; y3=y5=capheight; stroke(1,2,.3,.1,0); +stroke(3,4,.1,.1,0); stroke(5,2,.1,.1,0); labelpos(1,2,3,4,5); +enddef; + +% Z by Malcolm Brown +% This `Z' uses the Helvetica Z as its basis. +% It also departs from the Helvetica design in the +% hopes of creating a more interesting letter. +% +vardef char.Z = + setwidth .8em; % same proportion as in Helvetica + pos1(1.5thickwidth,75); % stroke 1 goes from 1 to 2 + pos2(.6thickwidth,90); % (top horizontal stroke) +% + pos3(1.5thickwidth,-10); % stroke 2 goes from 3 to 4 + pos4(1.5thickwidth,-10); % (diagonal stroke) +% + pos5(.65thickwidth,90); % stroke 3 goes from 5 to 6 + pos6(1.5thickwidth,75); % (bottom horizontal) +% + x1=.125w; % determing position 1 + y1r = capheight; +% + x2=w - x1; % determines position 2 + y2r = capheight; +% + x3r=x2l; % positions 2 and 3 share a point + y3r=y2l; +% + x4l=x5r; % positions 4 and 5 share a point + y4l=y5r; +% + x5=.5x1; % determines 5 + y5l=0; +% + x6=w-x5; % determines 6 + y6l=0; +% % + stroke(1,2,.3,.6,0); % top horizontal stroke + stroke(5,6,.7,0,.6); % bottom horizontal stroke + stroke(3,4,0,0,0); % diagonal stroke +% + labelpos(1,2,3,4,5,6); +enddef; + +% a by Ann Lasko-Harvill +vardef char.a=setwidth .5em;% NOTE TO GRADER: THIS ISN'T AS + pos1(1.1thickwidth,10);% FINISHED AS I WOULD LIKE IT. + x1l=.12em; + y1l=.75xheight; + dz1=(0.2,1); + pos2(.5[1.1thickwidth,.75thinwidth],-30); + x2=.24[x1,x3]; + y2=.76[y1,y3]; +% dz2=(1,1); + pos3(.75thinwidth,-90); + x3=.27em; + y3=xheight; + dz3=(1,0); + pos4(.25[thickwidth,.75thinwidth],-155); + x4l=.75[x3l,x5l]; + y4l=.75[y5l,y3l]; + dz4=(1,-1); + pos5(thickwidth,-180); + x5=.42em; + y5=y1; + dz5=(0,-1); + + pos6(thickwidth,-180); + x6=x5; + y6=y7l; + dz6=(0,-1); + pos7(1.2thickwidth,-135); + x7l=x6l; + y7r=0; + dz7=(1,-1); + pos8(1.5thickwidth,-135); + x8r=x6l; + y8l=y6; + dz8=(1,0); + pos9(thinwidth,-90); + x9=x5r+1; + y9=.65xheight; + dz9=(-1,-.05); + pos10(.5[thickwidth,thinwidth],-45); + x10=.2[x11,x9]; + y10=.2[y9,y11]; + dz10=(-1,-1); + pos11(thickwidth,0); + x11=.5[x1l,x1]; + y11=.45[y10,y12]; + dz11=(0,-1); + pos12(.35[thickwidth, thinwidth],55); + x12=.4[x11,x13]; + y12l=-.01; + dz12=(1,0); + pos13(thinwidth,90); + x13=x6r+1; + y13=y6; + dz13=(1,1); + curve(1,2,3);curve(3,4,5); + stroke(5,6,.5,0,.05);curve(6,7,8); + curve(9,10,11);curve(11,12,13); + labelpos(1,2,3,4,5,13,6,7,8,9,10,11,12); +enddef; + +% b by Dave Siegel +vardef char.b = +begingroup +save side_right, side_left, charwidth, slidex; +save zero_width, thinner_width, half_width, corner_width; + +side_right = .07em; %left sidebearing. +side_left = .1em; %right sidebearing. + +charwidth = .4em; %width of character. + + + +zero_width = .01thinwidth; +thinner_width = .6thinwidth; +half_width = .9thinwidth; +corner_width = .6[thinwidth,thickwidth]; + +slidex = .6thinwidth; + + + setwidth side_left + charwidth + side_right; + + %DEFINE HEADINGS AT ALL POINTS ON CURVES + + dz3 = (0,-1); + dz4 = (1,-1); + dz5 = (1,0); + dz6 = (1,1); + dz7 = (0,1); + dz8 = (-1,1); + dz9 = (-1,0); + dz10 = (-1,-1); + dz11 = (0,-1); + + %DEFINE PEN RELATIONSHIPS FOR BOTH STROKES + + pos1(1.5thickwidth,45); + pos2(1.05thickwidth,10); + pos3(zero_width,0); + pos4(thinner_width,45); + pos5(.9half_width,90); + pos6(corner_width,150); + pos7(thickwidth,180); + pos8(.9corner_width,225); + pos9(half_width,270); + pos10(thinner_width,315); + pos11(zero_width,0); + + %DEFINE COORDINATES + x1r = x2r; y1 = hheight; + x2l = side_left; y2 = 0; + x3 = x2 + slidex + .2slidex;y3 = .32xheight; + x4 = .22[x3,x5]; y4 = .28[y5,y3]; + x5l = .4[x3,x7]; y5 = y2r; + x6 = .65[x5,x7]; y6 = .18[y5,y7]; + x7r = charwidth + slidex; y7 = .5[y5,y9]; + x8 = .65[x9,x7]; y8 = .18[y9,y7]; + x9 = .45[x3,x7]; y9 = .98[0,xheight]; + x10 = .3[x11,x9]; y10 = .2[y9,y11]; + x11 = x3; y11 = .5xheight; + + + %DRAW STEM + + stroke(1,2,0.1,0.2,0); + + %DRAW BOWL + + curve(3,4,5); + curve(5,6,7); + curve(7,8,9); + curve(9,10,11); + curve(11,3,3); + + %MARK LABELS + + labelpos(1,2,3,4,5,6,7,8,9,10,11); +endgroup +enddef; + +% c by Alan Spragens +vardef char.c = +setwidth .5em; +pos1(thickwidth,90); +pos2(.8[thickwidth,thinwidth],90); +pos3(1.1 thickwidth,180); +pos4(.2[thickwidth,thinwidth],220); +pos5(1.1thickwidth,260); +z1=(w-.075em,.85 xheight); +z2=(.5w,xheight); +y3=.5 xheight; +x3l=.1em; +x4=.5w; +y4=0; +x5=w-.05em; +y5=.2xheight; +dz2=(-1,0);dz3=(0,-1);dz4=(1,0); +curve(1,2,3);curve(3,4,5); +labelpos(1,2,3,4,5); +enddef; + +% d by Jean-Luc Bonnetain +vardef char.d = + setwidth .6em; + pos1(1.5[thinwidth,thickwidth],45); % top of stem + pos2(.7[thinwidth,thickwidth],10); % bottom of stem + pos3(.9(thinwidth/(thickwidth - thinwidth))[thinwidth,thickwidth],90); + % junction upper part of bowl / stem + % this is a trick here, to make sure that the junction does not + % become too black with bold versions. +% but actually the formula gives 1.9thinwidth in all cases! + % in the normal version, thindwidth/(thickwidth-thinwidth) = 11/4 + % while in the bolder version the value is 14/10 < 11/4 + % this way the width of the curve when it joins the stem will + % be relatively smaller in bold version (less far of the way from + % thinwidth and thickwidth). + % there is a small problem due to the digitization process here: + % in the small size / 3 together test, the bold extended version + % has its stem widened just after the upper junction of the bowl + % and the stem, which creates an ugly white recess (this does not + % appear in the large size tests). Since this depends on the size + % on the letter and on the digitizing algorithm, a solution for + % one size will look terrible at another one, so i haven't tried + % to fix that problem (i don't know what will happen in the actual + % size that will be used for typesetting text with font1(version + % -1000) ). + + pos4(.8[thinwidth,thickwidth],90); % uppermost pt upper part bowl + pos5(thickwidth,180); % leftmost pt of bowl + pos6(.8[thinwidth,thickwidth],270); % lowermost pt bottom part bowl + pos7(.4(thinwidth/(thickwidth - thinwidth))[thinwidth,thickwidth],270); + % junction lower part of bowl / stem + + x1r = x2r ; y1 = hheight; + z2r = (w - .1em , 0); + x3 = x2l + .05w; y3 = 7.55/10y4 ; + x4 = x6 = 1/2[x2,x5] ; y4 = xheight; + x5r = .1em; y5 = 1/2y4; + y6r = -.02capheight; + x7 = x2l + .02w; y7 = 3/10y4; + + dz3 = (-1,50); % avoids possible loop at z3l + dz4 = (-1,0); + dz5 = (0,-1); + dz6 = (1,0); + + stroke(1,2,.1,.2,0); + curve(3,4,5); + curve(5,6,7); + + labelpos(1,2,3,4,5,6,7); + +enddef; + +% e by Dan Mills +vardef char.e = + begingroup +% charcd := 'e; + save glyphwidth,lsb,rsb,cuthru; + numeric glyphwidth,lsb,rsb,cuthru; + + glyphwidth = .45em; + lsb = rsb = .2glyphwidth; + cuthru = .02xheight; + setwidth( lsb+glyphwidth+rsb ); + +% positions: + pos1(thinwidth,-90); + pos2(.1[thinwidth,thickwidth],-100); + pos3(thickwidth,-180); + pos4(thinwidth,-270); + % 5 is special + pos6(thinwidth,-90); + +% coordinates: + x1 = lsb + .97glyphwidth; y1 = .2xheight; + x2 = lsb + .55glyphwidth; y2r = -cuthru; + x3r = lsb; y3 = y6; + x4 = lsb + .5glyphwidth; y4r = xheight + cuthru; + % 5 is special + x6 = x3; y6 = .52 xheight; + +% specials: + x5r = lsb + glyphwidth; y5r = y6r; + x5l = x5r - thickwidth; y5l = y6l; + x5 = .5[x5l,x5r]; y5 = .5[y5l,y5r]; + + dz1 = z2 - z1 + (0,1.5(y2-y1)); + dz2 = (-1,0); + dz3 = (0,1); + dz4 = (1,0); + +% draw straights: + stroke(5,6,0,0,0); + +% add a slope for the curves: + dz5 = .999[(z5-z4),(0,-1)]; + +% draw curves: + curve(1,2,3); + curve(3,4,5); + + labelpos(1,2,3,4,5,6); + endgroup; +enddef; + +% f by Malcolm Brown +vardef char.f = + setwidth .35em; % roughly the same as Helvetica f + pos1(1.05thickwidth,190); % R's start on the left! + pos2(.15[thickwidth,thinwidth],180); +% + pos5(.80[thickwidth,thinwidth],95); + pos7(.75[thickwidth,thinwidth],45); +% + pos8(1.1thinwidth,80); % stroke 8 to 9 is the crossbar + pos9(thinwidth,80); +% + y1=0; % determines 1 + x1=.35w; +% + x2=x1; % determines 2 + y2=xheight; + dz2=(0,1); % heading north +% + y5=.33[hheight,capheight]; + x5=.2[x2,x7]; +% + y7=.125[capheight,xheight]; + x7=.82w; +% +% Crossbar +% + y8r=xheight; % determines 8 + x8=.33[0,x2r]; +% + y9r=xheight; % determines 9 + x9=w-1.67x8; +% + stroke(1,2,0,0,0); + curve(2,5,7); + stroke(8,9,0,0,0); +% + labelpos(1,2,5,7,8,9); +enddef; + +% g by Bruce Leban + +def down = (0,-1) enddef; +def up = (0,1) enddef; +def right = (1,0) enddef; +def left = (-1,0) enddef; +vardef circle@# (expr xc,yc,xrad,yrad,adjustpen,tilt,pentilt) = + + z[@#] = (xc,yc); + z[@#+1] = (xc+xrad*cosd (180-tilt), yc+yrad*sind (180-tilt)); + z[@#+2] = (xc+xrad*cosd (90-tilt), yc+yrad*sind (90-tilt)); + z[@#+3] = (xc+xrad*cosd (0-tilt), yc+yrad*sind (0-tilt)); + z[@#+4] = (xc+xrad*cosd (-90-tilt), yc+yrad*sind (-90-tilt)); + + dz[@#+1] = z[@#+2] - z[@#+4]; + dz[@#+3] = z[@#+4] - z[@#+2]; + + pos[@#+1] (adjustpen*thinwidth, 180-tilt+pentilt); + pos[@#+2] (adjustpen*thickwidth, 90-tilt-pentilt); + pos[@#+3] (adjustpen*thinwidth, 0-tilt+pentilt); + pos[@#+4] (adjustpen*thickwidth,-90-tilt-pentilt); + + curve ([@#+1],[@#+2],[@#+3]); + curve ([@#+3],[@#+4],[@#+1]); +enddef; + +vardef char.g = + setwidth 0.5em; + + pentilt := 20; % degree of "tilt" for pens + + circle10 ( + .47w,.55xheight, % center of circle + (w - 0.22em)/2, % "radius" in x direction + .4xheight, % and y direction + 1, % pen width multiplier + 0, % don't rotate control points + pentilt + ); + + xadjust := 1/3thinwidth; % move the down stroke over xadjust + + % top of downstroke + x2r = x13r + xadjust; + y2 = xheight; + pos2 (1.2thickwidth, 45); + + % bottom of down stroke and right side of descender + x3r = x2r; % position below pen 2 + y3 = .10xheight; % just above base line + pos3 (.5[thinwidth,thickwidth],pentilt); + + dz3 = down; % going down at this point + + % bottom of descender + x4 = .65[x5,x3]; % closer to right side of g + y4r = -ydepth; % positioned at -ydepth + pos4 (thinwidth,-90+pentilt); + + % left side of descender + x5r = x11r; % x5r and x11r are really on left side + y5 = .8[-ydepth,0]; % ends below base line + pos5 (thickwidth,180+pentilt); + + stroke (2,3,0.5,0.5,0); + + curve (3,4,5); + + labelpos (2,3,4,5,10,11,12,13,14); +enddef; + +% I had hoped to do a tradional style g, but I didn't have enough time. +% +% vardef char.var.g = etc + +% h by Arnie Olds +vardef char.h = setwidth .6em; pos1(1.5thickwidth,45); +pos2(1.05thickwidth,10); x2l=.1em; x8l=w-.1em; +x1=x2; x3r=x2r; x7=x8; y1=hheight; y2=0; y8=0; y3=.55xheight; +y7=.7xheight; pos3(.8thinwidth,-45); +pos4(thinwidth,-55); +pos5(.25[thickwidth,thinwidth],-110); pos6(thickwidth,-150); +pos7(thickwidth,-170); pos8(1.05thickwidth,-170); +x5=.75[x3,x7]; y5l=1.05xheight; x4=.5[x3,x5]; y4=.85[y3,y5]; +x6=.75[x5,x7]; y6=.33[y5,y7]; stroke(1,2,.1,.2,0); +curve(3,4,5); curve(5,6,7); dz3=(0,1); dz7=(0,-1); +dz5=(1,0); stroke(7,8,.3,0,.1); labelpos(1,2,3,4,5,6,7,8); enddef; + +% i by Bruce Fleischer +vardef char.i = + setwidth 1/3em; %same width as 'l' + botangle:=10; %same angle at bottom of stroke + pos1(1.15thickwidth, botangle); %stroke of 'i' very much like 'l', + pos2(1.05thickwidth, botangle); %only top has same angle as bottom + z2=(.5w,0); + y1=xheight; + x1r=x2r; + stroke(1, 2, .2, .2, 0); + + pos3(1.15thickwidth, botangle); %top and bottom of dot are parallel to + pos4(1.15thickwidth, botangle); %and same length as top of stroke + .4[x3r,x4r] = x2r; %keep dot from falling off to the left + x3r=x4r-.07(hheight-xheight); %slant sides of dot + y4=.25[xheight,hheight]; %space dot between xheight and hheight + y3=.55[xheight,hheight]; + stroke(3,4, 0, 0, 0); %make it a parallelogram + + labelpos(1,2,3,4); +enddef; + +% j by John Hershberger +vardef char.j = + +lspace := .08em; % How much space at left of j; adjust to look right +jwidth := .34em + lspace; % Total width of character and whitespace +lcurve := .71; % Fairly round curve at end of bottom loop +rcurve := .73; % Squarish round curve at start of bottom loop + +% Dot parameters should be coordinated with 'i' dot. +dotdy := .4*(hheight-xheight); % Height of dot +dotwidth := 1.3thickwidth; % Width of dot +lswell := -.1; % Reverse taper for left of dot +rswell := -.05; % Reverse taper for right of dot +eps := -.3rswell*thickwidth; % Amount to move dot left to make it look + % more centered. Try to make right side of + % j's vertical stroke ~ bisect dot's swell. + % We're at the level of single pixels, so it's + % hard to make it right. + +setwidth jwidth; +pos1( 1.5thickwidth, 45 ); % As in 'l' +pos2( thickwidth, 10 ); +pos3( .7[thinwidth, thickwidth], -35 ); +pos4( .3[thinwidth, thickwidth], -80 ); +pos5( .15[thinwidth, thickwidth], -120 ); +pos6( thinwidth, -135 ); % No slight flare at the end of j stroke + % Slope matches top of j stroke--unimportant? +y1=xheight; x1r = w-.1em; % Right side straight and .1 em in. + % It would be tempting to put the top of the + % stroke a little bit to the left so that the + % "j" doesn't look like it's falling over + % backward. (See next line.) +fudge:= .005em; % This was originally used to move the bottom + % of the stroke right to achieve an equivalent + % effect. Setting fudge to .005em works fairly + % nicely, except that the pixel-jagged right + % edge of the + % stroke is then a little disconcerting. +x2r=x1r+fudge; y2r = .3[-ydepth,xheight]; % Top of curve +dz2=(0,-1); % Heading down +x3= rcurve[x4,x2]; y3 = rcurve[y2,y4]; % See below +y4r=-ydepth -.05capheight; x4l= .5[x6l,x2l]; + % Inside of curve is flat in center +dz4=(-1,0); % Heading left +x5 = lcurve[x4,x6]; y5 = lcurve[y6,y4]; +x6r = lspace; y6l = .8[-ydepth, y2r]; % Pen is flipped, curve ends just + % below where it starts on other side. + +% Dot definition +x7r = x1r-eps; y7 = y1+ 1.7dotdy ; % Start 1.7dotdy above j-stroke +x8r = x7r-eps; y8 = y7 - dotdy; % And come down dotdy. +pos7( dotwidth, 45 ); % Same slope as top of stroke +pos8( dotwidth, 45 ); % Same slope as top of stroke + +% Draw the thing +stroke( 1, 2, .1, .2, 0 ); % To match top of 'l' +curve(2,3,4); curve(4,5,6); + +stroke( 7, 8, .5, lswell, rswell); % Swell out a little on the dot + +labelpos( 1,2,3,4,5,6,7,8 ); +enddef; + +% k by Renata Byl +vardef char.k = + setwidth .6em; + pos1(1.5thickwidth,45); + pos2(1.05thickwidth,10); + z2=(.1667em,0); + y1=hheight; x1r=x2r; + pos3(1.5thickwidth,90); + pos4(1.05thickwidth,90); + y3=.5hheight; + y4=.75hheight; + z3=(x2r,y3); + z4=(.45em,y4); + pos5(1.00thickwidth,45); + pos6(1.05thickwidth,10); + y5=.5hheight; + y6=.02capheight; + z5=(.25em,y5); + z6=(.45em,y6); + + stroke(1,2,.1,.2,0); + stroke(3,4,.9,0,.2); + stroke(5,6,.9,.2,0); + labelpos(1,2,3,4,5,6); +enddef; + +% l by Don Knuth +vardef char.l = + setwidth 1/3em; + pos1(1.5thickwidth,45); + pos2(1.05thickwidth,10); + z2=(.5w,0); + y1=hheight; x1r=x2r; + stroke(1,2,.1,.2,0); + labelpos(1,2); +enddef; + +% m by Jim Bratnober +vardef char.m = +%offset:=(.3333em-thickwidth)/2; + offset:=(.3em-thickwidth)/2; +%setwidth 1em+2offset; + setwidth .95em; + chwid:=w-2offset; + pos1(1.5thickwidth,45); % upper left nub + pos2(.9thickwidth,10); % moving down the left vertical + pos3(1.05thickwidth,10); % at the bottom + pos4(.9[thickwidth,thinwidth],-50); % left hump + pos5(.5[thickwidth,thinwidth],-105); + pos6(thickwidth,-140); + pos7(thickwidth,-170); % middle vertical, top + pos8(thickwidth,10); % duplicate since directions of pen differ + pos9(1.1thickwidth,-170); % bottom + pos10(.9[thickwidth,thinwidth],-50); % right hump + pos11(.5[thickwidth,thinwidth],-105); + pos12(thickwidth,-140); + pos13(thickwidth,-170); % top of right vertical + pos14(1.05thickwidth,-170); % bottom + +numeric xxheight; + y1=1.02xheight; + x1r=x2r=x3r=offset+thickwidth; + y2=.55xxheight; + dz2=(0,1); + y3=0; + x4=x2+.054chwid; + y4=.95xxheight; + z5=(.287chwid+offset,1.05xxheight); dz5=(1,0); y5l=1.03xheight; + z6=(.46chwid+offset,y4); + humpwid:=(chwid-(x3r-x3l))/2; + z7=(x9,y2+.1xxheight); dz7=(0,-1); + x9l=x3r+humpwid; + y9=0; + z8=z7; dz8=(0,1); +% Note: instead of humpwid, better to say `x9l-x3r=x14l-x9l; x14l-x3l=chwid'! + z10=(x7+x4-x2,y4); + z11=(x7+x5-x2,y5); dz11=(1,0); + z12=(x7+x6-x2,y4); + z13=(x14,y2+.1xxheight); dz13=(0,-1); + x14l=x9l+humpwid; + y14=0; + + stroke(1,3,.1,.3,0); + curve(2,4,5); + curve(5,6,7); + stroke(7,9,0,0,0); + curve(8,10,11); + curve(11,12,13); + stroke(13,14,0,0,0); + labelpos(1,2,3,4,5,6,7,8,9,10,11,12,13,14); +enddef; + +% n by Lynn Ruggles +vardef char.n = % character 'n' + setwidth .6em; % width is slightly larger than 1/2 em + x1=.25w; y1=xheight; + pos1(2thickwidth,0); % pen is thick and 0 degree angle + + x2=.3w; y2=y1; + pos2(thickwidth,15); % pen is thick and 15 degree angle + + pos3(1.2thickwidth,0); % ditto + x3=.3w; y3=0; + + x4=x3; y4=2/3xheight-thinwidth; + pos4(thickwidth,75); + dz4=(10,11); + + x5=.6w; y5=xheight-.5thinwidth; + pos5(thickwidth,60); + dz5=(1,0); + + x6=.8w; y6=y4; + pos6(1.1thickwidth,30); + dz6=(0,-1); + + pos7(1.5thickwidth,0); + x7=.85w; y7=y3; + +% stroke (1,2,.2,0,.30; + stroke (1,3,.2,.8,0); + curve (4,5,6); + stroke (6,7,.7,0,.5); + labelpos(1,2,3,4,5,6,7); +enddef; + +% o by Stan Osborne +vardef char.o = + setwidth .6em; % make the "o" 60% of an em +numeric mythin,mymid[],mythick; + mythin = thinwidth; + mymid1 = .27[thinwidth,thickwidth]; + mymid2 = .75[thinwidth,thickwidth]; + mythick = thickwidth; + + pos1(mythin,-92); % vertical and thin for vec(1) + z1l = (.5w,1.05xheight); % in the middle and top at xheight + + pos2(mymid1,-48); % getting flatter for vec(2) + x2l = .27w; % moved over to the left + y2l = .91y1l; % it is near xheight + + pos3(mythick,0); % flat and thicker for vec(3) + z3 = (.22w,.65y1l); % moved to the left and down + + curve(1,2,3); % draw the upper left curve + + pos4(mythick,0); % same as vec(3) for vec(4) + z4 = (x3,.35[y6l,y1l]); % symetrical with z3 +y6l=-.05xheight; + stroke(3,4,.5,-.1,.1); % left center stroke + + pos5(mymid1,45); % lifting up for vec(5) + x5l = x2l; % moved over to the right + y5l-y6l = y1l-y2l; % it is near the bottom + + pos6(mythin,88); % vertical and thin for vec(6) + z6l = (.5w,-.05xheight); % in the middle and bottom at baseline +dz6=(1,0); + curve(4,5,6); % draw the lower left curve + + pos7(mythin,-92); % vec(7) is a 180 of vec(6) + z7r = z6l; % must match with vec(6) + + pos8(mymid1,-50); % lifting up for veck(8) + x8r = .97w-x5l; % mirror image of vec(5) + y8r = y5l; % same height + + pos9(mymid2,0); % flat and thicker for vec(9) + z9 = (.97w-x3,y4); % mirror of vec(4) +dz7=(1,0); + curve(7,8,9); % draw the lower right curve + + pos10(mymid2,0); % same as vec(9) + z10 = (x9,y3); % mirror of vec(3) + + stroke(9,10,.5,.1,-.1); % right center stroke + + pos11(mymid1,48); % lifting up for vec(11) + x11r = x8r; % same as vec(8) + y11r = y2l; % same height as vec(2) + + pos12(mythin,88); % vertical and thicker for vec(12) + x12r = x1l; % a 180 of vec(1) + y12r = y1l; % same height as vec(1) + + curve(10,11,12); % draw the upper right curve + + labelpos(1,2,3,4,5,6,7,8,9,10,11,12); % label the vectors + +enddef; + +% p by Theresa-Marie Rhyne +vardef char.p= + setwidth .55em; + pos1(1.5thickwidth,45); + pos2(1.05thickwidth,10); + pos3(.9thinwidth,80); + pos4(thinwidth,80); + pos5(thinwidth,135); + pos6(thickwidth,180); + pos7(thickwidth,215); + pos8(thinwidth,250); + pos9(.5thinwidth,270); + z2=(.1em,xheight); + y1=-ydepth; + x1r=x2r; x3=x9r=.1em; + y3=.1xheight; y9=.9xheight; + y4=0; x4=x8=.4w; + dz4=(1,0); + + y8=xheight; + x6r=.7w; y6l=.5xheight; + dz6=(0,1); + x5r=.75[x4r,x6r]; y5r=.75[y6r,y4r]; + x7=.75[x8,x6]; y7=.75[y6,y8]; + + dz8=(-1,0); + stroke(1,2,.1,.2,0); + stroke(3,4,.5,-.4,.2); + curve(4,5,6); curve(6,7,8); + stroke(8,9,.5,-.4,.2); + labelpos(1,2,3,4,5,6,7,8,9); +enddef; + +% q by Pavel Curtis +vardef char.q = +% setwidth .5em; + setwidth .6em; + cw := .75[thinwidth,thickwidth]; % Corner pen width + cp := .72; % Corner positioning coeff. + + + pos1(1.5thickwidth, 45); + pos2(thickwidth, 0); + pos3(cw, 45); + pos4(thinwidth, 90); + pos5(cw, 135); + pos6(thickwidth, 180); + pos7(cw, 225); + pos8(thinwidth, 270); + pos9(cw, 315); + + x6.r = 0.1em; % Again .1em sidebars + x2.r = w - 0.1em; + + x1.l = x2.l; + y1 = -ydepth; + y2 = xheight/2; + x4 = 1/2[x6, x2]; + y4.r = 1.05xheight; + y6 = y2; + x8 = x4; + y8.r = -.05xheight; + x3 = x9 = cp[x4, x2]; + x5 = x7 = cp[x4, x6]; + y3 = y5 = cp[y2, y4]; + y7 = y9 = cp[y2, y8]; + dz2 = (0,1); + dz4 = (-1,0); + dz6 = (0,-1); + dz8 = (1,0); + + % Stem + stroke(1, 2, .1, 0, .2); + % Bowl + curve(2, 3, 4); + curve(4, 5, 6); + curve(6, 7, 8); + curve(8, 9, 2); + + labelpos(1, 2, 3, 4, 5, 6, 7, 8, 9); +enddef; + +% r by Arthur Samuel +vardef char.r = + setwidth .5em; % do this first; it sets the character width + pos1(1.5thickwidth,45); % the pen is "thicker than thick" at the top + pos2(1.05thickwidth,10); % and also slightly flared at the bottom + pos3(.8thinwidth,90); % The starting place for the right branch + pos4(.65[.8thinwidth,thickwidth],90); + pos5(1.2thickwidth,90); % Joining point of two curves + pos6(.85[thinwidth,thickwidth],45); % at point with slope for line 5,7 + z2=(.2w+.5thickwidth,0); + y1=xheight; x1r=x2r; % at the hheight, aligned at the right + x3=x2+.5thickwidth; y3=.65xheight; dz3=(1,2); + x4=.5[x3,x5]; y4=.83[y3,y5]; + z5=(.8w,xheight-.3thickwidth); dz5=(1,0); + + + stroke(1,2,.1,.2,0); % taper at the left but not the right + curve(3,4,5); + labelpos(1,2,3,4,5); +enddef; + +% s by Kwang-Chun Park +vardef char.s = + + setwidth 0.4em; + pos1(thickwidth,-100); + pos2(.5[thickwidth,thinwidth],-95); + pos3(thinwidth,-90); + pos4(.375[thinwidth,thickwidth],-40); + pos5(.75[thinwidth,thickwidth],0); + pos6(thickwidth,45); + pos7(1.1thickwidth,75); + pos8(thickwidth,45); + pos9(.75[thinwidth,thickwidth],0); + pos10(.375[thinwidth,thickwidth],-40); + pos11(thinwidth,-90); + pos12(.5[thinwidth,thickwidth],-95); + pos13(thickwidth,-100); + + y3l=1.03xheight; y1=0.85xheight; + y5=.75xheight; y7= 0.5xheight; y9= 0.25xheight; + y11r= -0.03xheight; y13=y9; + x3 = 0.5w; x1r=w-.05em; + x5l=x3-0.5w; x7 = x3; x9r = w; + x11 = x3; x13= x5l; + + x2l = 0.71[x3l,x1l]; + y2l = 0.71[y1l,y3l]; + dz3= (-1,0); + x4l = 0.75[x3l,x5l]; + y4l = 0.75[y5l,y3l]; + dz5=(0,-1); + x6 = 0.29[x5,x7]; + y6 = 0.29[y7,y5]; + dz7=(1,0); + x8 = 0.29[x9,x7]; + y8 = 0.71[y9,y7]; + dz9=(0,-1); + x10= 0.75[x11,x9]; + y10= 0.25[y11,y9]; + dz11=(-1,0); + x12= 0.35[x13,x11]; + y12= 0.29[y11,y13]; + + curve(1,2,3); curve(3,4,5); + curve(5,6,7); curve(7,8,9); + curve(9,10,11); curve(11,12,13); + labelpos(1,2,3,4,5,6,7,8,9,10,11,12,13); + +enddef; + +% t by Tuan Pham +vardef char.t= +setwidth .6em; +pos1(1.1thickwidth,45); +pos2(thickwidth,10); +pos3(thickwidth,40); +pos4(.5[thickwidth,thinwidth],75); +pos5(.9[thickwidth,thinwidth],130); +pos6(thinwidth,200); +pos7(1.2thinwidth,80); +pos8(1.5thinwidth,45); +x1l=0.15em;y1=.5[xheight,hheight]; +x2=x1;y2=0.25xheight;dz2=(0,-1); +x3=.71[x4,x2];y3=.71[y2,y4]; +x4r=.5[x2r,x6r];y4l=-.05xheight;dz4=(1,0); +x5=.7[x4,x6];y5=.7[y6,y4]; +x6l=w-0.15em;y6=0.3xheight; +x7=.1em;x8=w-.18em; +y7r=y8r=xheight; +stroke(1,2,.2,.05,.05); +curve(2,3,4);curve(4,5,6); +stroke(7,8,.8,0,.3); +labelpos(1,2,3,4,5,6,7,8); +enddef; + +% u by Nori Tokusue +vardef char.u = + setwidth .50em; %temp value + pos1(1.05thickwidth,10); + pos2(thickwidth,10); + pos3(.65[thickwidth,thinwidth],40); + pos4(.80[thickwidth,thinwidth],75); + pos5(.95[thickwidth,thinwidth],130); + pos6(thickwidth,180); + pos7(thickwidth,190); + pos8(1.1thickwidth,190); + % coordinate information + + x1l=.075em; + x7=w-x1l; + y1=y7=xheight; + x1=x2; + x6=x7;x6r=x8r; + + % left curve + y2=.30xheight; dz2=(0,-1); % going down at z2 + x3=.75[x4,x2]; y3=.75[y2,y4]; + x4r=.5[x2r,x6r]; y4l=-.05xheight; + dz4=(1,0); % rightward + + % right curve + x5=.70[x4,x6]; y5=.3[y4,y6]; + y6=.33xheight; dz6=(0,1); % upward at z6 + y8=0; + % now draw the line + stroke(1,2,.3,.05,0); % temp values. + curve(2,3,4); + + curve(4,5,6); + stroke(6,7,.7,0,.05); + dy6:=-1; + stroke(6,8,.5,.05,.05); + + labelpos(1,2,3,4,5,6,7,8); +enddef; + +% v by Ed Williams +vardef char.v = +setwidth .55em; +pos1(1.1thickwidth,05); z1=(.2w,xheight); +pos5(1.3thinwidth, -170); z5=(.85w,xheight); +pos3(1.8thickwidth,87); x3l=.5[x1,x5]; y3l=-.02w; +pos2(.9thickwidth, 25);z2=.5[z1,z3]; +pos4(1.1thinwidth,155); z4=.5[z5,z3]; + +stroke (1,2,.2,.05,.05); stroke(2,3,.8,0,0); +stroke(5,4,.2,.05,.05); stroke(4,3,.8,.02,0); +labelpos(1,2,3,4,5); +enddef; + +% w by Joey Tuttle +vardef char.w = + setwidth .74em; % this from "average character width table" TSS + pos1(1.5thickwidth,30); + pos2(1.05thickwidth,10); + pos21(thinwidth,10); + pos3(thinwidth,30); + pos31(thickwidth,30); + pos4(1.05thickwidth,10); + pos41(thinwidth,10); + pos5(1.5thinwidth,30); + y1=xheight; x1l=.1em; x5r=w-.1em; % some fixed points + x2=.45[x1,x3]; x3=.5[x1,x5]; x4=.45[x3,x5]; % relating corners + z21r=z2r; z31l=z3l; z41r=z4r; % tie corners of strokes + y31r=y1; y5=y1; % the tops of the strokes + y2=0; y4=y2; % the baseline + stroke(1,2,.1,.2,0); + stroke(21,3,.2,.0,.2); + stroke(31,4,.1,.2,.2); + stroke(41,5,.9,.2,0); + labelpos(1,21,2,31,3,41,4,5); +enddef; + +% x by William Burley +vardef char.x = + setwidth .45em; + pos1(1.4thickwidth,0); + pos2(.9thickwidth,45); + pos3(1.4thickwidth,0); + pos4(1.4thinwidth,0); + pos5(.9thinwidth,-45); + pos6(1.4thinwidth,0); + x1l=x4l=.1w; + x3r=x6r=.9w; + y1=y6=xheight; + y3=y4=0; + x2=x5=.5w; + y2=y5=.5xheight; + stroke(1,2,.15,0,.25); + stroke(2,3,.85,.25,0); + stroke(4,5,.15,0,.25); + stroke(5,6,.85,.25,0); + labelpos(1,2,3,4,5,6); +enddef; + +% y by Neenie Billawala +vardef char.y= + setwidth .57em; + pos1(1.4thickwidth,15); dz2=z2r-z1r; + pos2(1.25thickwidth,60); + pos3(1.65thinwidth,15); + pos4(.85thinwidth,-45); + pos5(1.65thinwidth,10); + pos6(1.23thickwidth,50); + pos7(1.5thinwidth,15); + pos8(1.4thinwidth,0); + y1=y3=xheight; + z2=z4; y4r=0; x4l=.5w; + numeric a; + y5=-ydepth; + x1l=.07w; + x3r=w-.09x1l-.02em; + z5=a[z3,z4]; + dz4=(z5-z3); + z6r=.02[z1r,z2r]; + dz6=z2l-z1l; curve(1,6,2); + %z7r=.08[z3r,z4r]; + %dz7=z4l-z3l; curve(3,7,4); + %z8l=.92[z3l,z4l]; + %dz8=z4r-z3r; %curve(4,8,5); + stroke(3,4,.2,.4,0); + stroke(4,5,.8,0,.4); + labelpos(1,2,3,4,5,6,7,8); +enddef; + +% z by Kanchi Gopinath +vardef char.z= + setwidth .43em; + + pos1(thickwidth,80); + pos2(2thickwidth,30); + pos3(2thickwidth,30); + pos4(thickwidth,90); % 90 is changed to 110 in his other file... + + x1l=0; + y1l=xheight-thickwidth; + + + y2r=xheight; + x2r=w; + + x3l=0; + y3l=0; + + x4l=w; + y4l=0; + + stroke(1,2,.4,.3,.2); + stroke(2,3,.5,.5,.5); + stroke(3,4,0.6,0.2,0.3); + labelpos(1,2,3,4); +enddef; + +% - by Dan Mills +vardef char.hyphen = + begingroup charcode:=ASCII"-"; +% charcd := '-; + save glyphwidth,lsb,rsb; + numeric glyphwidth,lsb,rsb; + + glyphwidth = .25em; + lsb = .1glyphwidth; + rsb = .1glyphwidth; + setwidth( lsb+glyphwidth+rsb ); + +% positions: + pos1(thinwidth,90); + pos2(thinwidth,90); + +% coordinates: + x1 = lsb; y1 = .55xheight; + x2 = lsb + glyphwidth; y2 = y1; + +% specials: + % none + +% draw stroke: + stroke(1,2,0,0,0); + + labelpos(1,2); + endgroup; +enddef; % char.hyphen + + +% . by Dan Mills +vardef char.period = + begingroup charcode:=ASCII"."; +% charcd := '.; + save glyphwidth,lsb,rsb; + numeric glyphwidth,lsb,rsb; + + glyphwidth = thickwidth; + lsb = .6glyphwidth; + rsb = .6glyphwidth; + setwidth( lsb+glyphwidth+rsb ); + +% positions: + pos1(thickwidth,90); + pos2(thickwidth,90); + +% coordinates: + x1 = lsb; y1l = 0; + x2 = lsb + glyphwidth; y2l = y1l; + +% specials: + % none + +% draw stroke: + stroke(1,2,0,0,0); + + labelpos(1,2); + endgroup; +enddef; % char.period + + +% , by Dan Mills +vardef char.comma = + begingroup charcode:=ASCII","; +% charcd := ',; + save glyphwidth,lsb,rsb; + numeric glyphwidth,lsb,rsb; + + glyphwidth = thickwidth; + lsb = .6glyphwidth; + rsb = .6glyphwidth; + setwidth( lsb+glyphwidth+rsb ); + +% positions: + pos1(thickwidth,90); + pos2(thickwidth,90); + pos3(.7thickwidth,0); + pos4(.3thickwidth,0); + +% coordinates: + x1 = lsb; y1l = 0; + x2 = lsb + glyphwidth; y2l = y1l; + x3r = x2; y3 = y1l; + x4l = x1; y4 = -1.5thickwidth; + +% specials: + % none + +% draw stroke: + stroke(1,2,0,0,0); + stroke(3,4,0,0,0); + + labelpos(1,2,3,4); + endgroup; +enddef; % char.comma + +% now we generate the font +% SELECT THE CORRECT init.... STATEMENT! + +openwindow 0 from (0,0) to (420,500) at (-40,310); +window:=0; +%init.normal(1.618033); +%init.bold(1.618033); +init.boldx(1.618033); +vardef init.wierd(expr f) = + begingroup + numeric thinwidth,thickwidth,capheight,xheight,hheight,ydepth,em; + thinwidth = 13f; thickwidth = 13f; em = 180f; + capheight = 170f; xheight = 90f; hheight = 180f; ydepth = 60f; + endgroup +enddef; +%init.wierd(sqrt2); + + +vardef make@#(expr ls,rs)=begingroup clear; charcode:=ASCII str@#; + "the character "&str @#; char@#; chardx:=w+ls+rs; charwd:=chardx/hppp; +if proofing>.5: shipit; +else: +proofrule((0,hheight),(w+ls+rs,hheight)); +proofrule((0,-ydepth),(w+ls+rs,-ydepth)); +proofrule((0,-ydepth),(0,hheight)); +proofrule((w+ls+rs,-ydepth),(w+ls+rs,hheight)); +proofrule((0-10,0),(0+10,0)); +proofrule((w+ls+rs-10,0),(w+ls+rs+10,0)); + shipout (currentpicture shifted (ls,0)); fi +endgroup enddef; + + +tracingtitles:=1; +make.A(-.025em,.05em); +make.B(0,-.025em); +make.C(-.02em,-.02em); +make.D(-.02em,0); +make.E(0,-.05em); +make.F(0,-.05em); +make.G(0,0); +make.H(0,0); +make.I(-.05em,-.05em); +make.J(0,0); +make.K(0,-.05em); +make.?(0,0); +make.L(0,-.02em); +make.M(0,0); +make.N(0,0); +make.O(0,0); +make.P(.05em,-.075em); +make.Q(0,0); +make.R(0,-.275em+thickwidth); +make.S(0,0); +make.T(-.05em,-.075em); +make.exclamation(0,-.075em); +make.U(0,0); +make.V(-.075em,0); +make.W(0,0); +make.X(-.05em,0); +make.Y(0,0); +make.Z(0,0); +make.a(-.05em,.5thickwidth); +make.b(0,-.025em); +make.c(.05em,0); +make.d(-.025em,0); +make.e(0,0); +make.f(0,0); +make.g(0,.01em); +make.h(0,0); +make.i(0,0); +make.j(-.05em,0); +make.k(-.02em,-.05em); +make.l(0,0); +make.m(0,0); +make.n(-.05em,.01em); +make.o(0,0); +make.p(.05em,0); +make.q(-.02em,0); +make.r(0,-.07em); +make.s(.05em,.05em); +make.t(-.025em,-.1em); +make.u(0,.04em); +make.v(-.025em,-.025em); +make.w(-.05em,-.05em); +make.x(0,0); +make.y(0,0); +make.z(.05em,.05em); +make.hyphen(0,0); +make.period(0,0); +make.comma(0,0); +fontdimen 1: 0, 1/3em/hppp, 1/6em/hppp, 1/9em/hppp, xheight/vppp, + em/hppp, 1/9em/hppp; +end diff --git a/fonts/unsupported/committee/font1base.mf b/fonts/unsupported/committee/font1base.mf new file mode 100644 index 0000000000..ecf5f91c31 --- /dev/null +++ b/fonts/unsupported/committee/font1base.mf @@ -0,0 +1,113 @@ +delimiters (); +smoothing:=1; autorounding:=2; % this adjusts curves to the raster +turningcheck:=2; % this will warn about a "strange path" + +vardef z@# = (x@#,y@#) enddef; +vardef dz@# = (dx@#,dy@#) enddef; + +picture currentpicture; +currentpicture=nullpicture; % this initializes an empty set of pixels + +def fill expr c = addto currentpicture contour c enddef; +def shipit = shipout currentpicture enddef; +def showit = display currentpicture inwindow window enddef; + +def unknown = not known enddef; + +vardef pos@#(expr length,theta) = + z@#=.5[z@#l,z@#r]; + z@#r-z@#l=(length,0) rotated theta enddef; +def stroke(suffix $,$$)(expr t,lt,rt) = + fill z$l + if known dz$: {dz$} fi + if t<>0: ..lt[ t[z$l,z$$l],t[z$,z$$] ]{z$$l-z$l} fi + .. z$$l + if known dz$$: {dz$$} fi + & z$$l..z$$r + & z$$r + if known dz$$: {-dz$$} fi + if t<>0: ..rt[ t[z$r,z$$r],t[z$,z$$] ]{z$r-z$$r} fi + .. z$r + if known dz$: {-dz$} fi + & z$r..z$l & cycle; + showit; enddef; +def curve(suffix $,$$,$$$) = + fill z$l + if known dz$: {dz$} fi + .. z$$l{if known dz$$: dz$$ else: z$$$l-z$l fi} + .. z$$$l + if known dz$$$: {dz$$$} fi + & z$$$l..z$$$r + & z$$$r + if known dz$$$: {-dz$$$} fi + .. z$$r{if known dz$$: -dz$$ else: z$r-z$$$r fi} + .. z$r + if known dz$: {-dz$} fi + & z$r..z$l & cycle; + showit; enddef; + +def proofrule(expr a,b) = + special "rule"; numspecial xpart a; numspecial ypart a; + numspecial xpart b; numspecial ypart b enddef; +string lcode_; +lcode_=" 0"; % change to " /" to avoid listing in overflow column +def makelabel(expr s,z) = % puts string s at point z + if known z: special lcode_ & s; + numspecial xpart z; numspecial ypart z fi enddef; +def labelpos(text t) = + if proofing>.5: + forsuffixes $$=l,,r: forsuffixes $=t: + makelabel(str $.$$, z$.$$); endfor endfor fi enddef; + + +def clear = + numeric x[],y[],x[]l,y[]l,x[]r,y[]r,dx[],dy[]; + currentpicture:=nullpicture; +enddef; + +def setwidth expr x = + chardx:=x; + numeric w; w=chardx; + if proofing>.5: + for n:=0 step .1em until chardx-1: + proofrule((n,-ydepth),(n,hheight)); endfor + proofrule((chardx,-ydepth),(chardx,hheight)); + proofrule((0,-ydepth),(chardx,-ydepth)); + proofrule((0,0),(chardx,0)); + proofrule((0,xheight),(chardx,xheight)); + proofrule((0,capheight),(chardx,capheight)); + proofrule((0,hheight),(chardx,hheight)); + fi +enddef; + +vardef init.normal(expr f) = + begingroup + numeric thinwidth,thickwidth,capheight,xheight,hheight,ydepth,em; + thinwidth = 11f; thickwidth = 15f; em = 200f; + capheight = 130f; xheight = 90f; hheight = 140f; ydepth = 40f; + endgroup +enddef; + +vardef init.bold(expr f) = + init.normal(f); thinwidth:= 14f; thickwidth:= 24f; +enddef; + +vardef init.boldx(expr f) = + init.bold(f); xheight:=95f; em:= 220f; +enddef; + + +vardef test@#(text #)= + begingroup + if str @# = "": % test all three + openwindow 1 from (0,0) to (420,167) at (-20,310); + openwindow 2 from (0,167) to (420,333) at (-20,310); + openwindow 3 from (0,333) to (420,500) at (-20,310); + window:=1; init.normal(1); clear; #; "normal"; shipit; + window:=2; init.bold(1); clear; #; "bold"; shipit; + window:=3; init.boldx(1); clear; #; "boldx"; shipit; + else: openwindow 0 from (0,0) to (420,500) at (-40,310); + window:=0; init@#(2); clear; #; str @#; shipit; + fi; + endgroup +enddef; diff --git a/fonts/unsupported/halftone b/fonts/unsupported/halftone new file mode 120000 index 0000000000..a27d8b959c --- /dev/null +++ b/fonts/unsupported/halftone @@ -0,0 +1 @@ +../cm/utilityfonts/half \ No newline at end of file diff --git a/fonts/unsupported/logo/flogo.mf b/fonts/unsupported/logo/flogo.mf new file mode 100644 index 0000000000..0af2a2a76a --- /dev/null +++ b/fonts/unsupported/logo/flogo.mf @@ -0,0 +1,10 @@ +% fat version of METAFONT logo +font_size 10pt#; % the "design size" of this font +ht#:=6pt#; % height of characters +xgap#:=2pt#; % horizontal adjustment +u#:=4/3pt#; % unit width +s#:=-2/3pt#; % extra space at the left and the right +o#:=1/9pt#; % overshoot +px#:=1/3pt#; % horizontal thickness of pen +input logo % now generate the font +end % and stop. diff --git a/fonts/unsupported/logo/nlogo.mf b/fonts/unsupported/logo/nlogo.mf new file mode 100644 index 0000000000..b43a392466 --- /dev/null +++ b/fonts/unsupported/logo/nlogo.mf @@ -0,0 +1,15 @@ +% Driver file for the METAFONT logo +if unknown logobase: input logobase fi + +mode_setup; font_setup; +input METAFON + +ligtable "T": "A" kern -.5u#; +ligtable "F": "O" kern -u#; + +font_quad:=18u#+2s#; +font_normal_space:=6u#+2s#; +font_normal_stretch:=3u#; +font_normal_shrink:=2u#; +font_identifier:="MFLOGO" if slant<>0: & "SL" fi; +font_coding_scheme:="AEFMNOT only"; diff --git a/fonts/unsupported/logo/sklogo.mf b/fonts/unsupported/logo/sklogo.mf new file mode 100644 index 0000000000..4a6f0d82b1 --- /dev/null +++ b/fonts/unsupported/logo/sklogo.mf @@ -0,0 +1,11 @@ +% skinny variant of METAFONT logo +font_size 30pt#; % the "design size" of this font +ht#:=25pt#; % height of characters +xgap#:=1.5pt#; % horizontal adjustment +u#:=3/9pt#; % unit width +s#:=1/3pt#; % extra space at the left and the right +o#:=2/9pt#; % overshoot +px#:=1pt#; % horizontal thickness of pen +slant:=-1/9; % leftward bias +input nlogo % now generate the font (testing the driver approach) +bye % and stop. diff --git a/fonts/unsupported/mfbook/logobase.mf b/fonts/unsupported/mfbook/logobase.mf new file mode 100644 index 0000000000..4a72875865 --- /dev/null +++ b/fonts/unsupported/mfbook/logobase.mf @@ -0,0 +1,34 @@ +% Base file for the METAFONT logo +logobase:=1; % when logobase is known, this file has been input + +def font_setup = + if unknown slant: slant:=0 else: currenttransform:= + identity slanted slant yscaled aspect_ratio fi; + + ygap#:=(ht#/13.5u#)*xgap#; % vertical adjustment + ho#:=o#; % horizontal overshoot + leftstemloc#:=2.5u#+s#; % position of left stem + barheight#:=.45ht#; % height of bar lines + py#:=.9px#; % vertical pen thickness + + define_pixels(s,u); + define_whole_pixels(xgap); + define_whole_vertical_pixels(ygap); + define_blacker_pixels(px,py); + pickup pencircle xscaled px yscaled py; + logo_pen:=savepen; + define_good_x_pixels(leftstemloc); + define_good_y_pixels(barheight); + define_corrected_pixels(o); + define_horizontal_corrected_pixels(ho); enddef; + +def beginlogochar(expr code, unit_width) = + beginchar(code,unit_width*u#+2s#,ht#,0); + pickup logo_pen enddef; + +def super_half(suffix i,j,k) = + draw z.i{0,y.j-y.i} + ... (.8[x.j,x.i],.8[y.i,y.j]){z.j-z.i} + ... z.j{x.k-x.i,0} + ... (.8[x.j,x.k],.8[y.k,y.j]){z.k-z.j} + ... z.k{0,y.k-y.j} enddef; diff --git a/fonts/unsupported/mfbook/metafon.mf b/fonts/unsupported/mfbook/metafon.mf new file mode 100644 index 0000000000..aeb1764b88 --- /dev/null +++ b/fonts/unsupported/mfbook/metafon.mf @@ -0,0 +1,50 @@ +beginlogochar("M",18); +x1=x2=leftstemloc; x4=x5=w-x1; x3=w-x3; +y1=y5; y2=y4; bot y1=-o; +top y2=h+o; y3=y1+ygap; +draw z1--z2--z3--z4--z5; +labels(1,2,3,4,5); endchar; + +beginlogochar("E",14); +x1=x2=x3=leftstemloc; +x4=x6=w-x1+ho; x5=x4-xgap; +y1=y6; y2=y5; y3=y4; +bot y1=0; top y3=h; y2=barheight; +draw z6--z1--z3--z4; draw z2--z5; +labels(1,2,3,4,5,6); endchar; + +beginlogochar("T",13); +italcorr ht#*slant + .5u#; +if .5w<>good.x .5w: change_width; fi +lft x1=-eps; x2=w-x1; x3=x4=.5w; +y1=y2=y3; top y1=h; bot y4=-o; +draw z1--z2; draw z3--z4; +labels(1,2,3,4); endchar; + +beginlogochar("A",15); +x1=.5w; x2=x4=leftstemloc; x3=x5=w-x2; +top y1=h+o; y2=y3=barheight; +bot y4=bot y5=-o; +draw z4--z2--z3--z5; super_half(2,1,3); +labels(1,2,3,4,5); endchar; + +beginlogochar("F",14); +x1=x2=x3=leftstemloc; +x4=w-x1+ho; x5=x4-xgap; +y2=y5; y3=y4; bot y1=-o; +top y3=h; y2=barheight; +draw z1--z3--z4; draw z2--z5; +labels(1,2,3,4,5); endchar; + +beginlogochar("O",15); +x1=x4=.5w; top y1=h+o; bot y4=-o; +x2=w-x3=good.x(1.5u+s); y2=y3=barheight; +super_half(2,1,3); super_half(2,4,3); +labels(1,2,3,4); endchar; + +beginlogochar("N",15); +x1=x2=leftstemloc; x3=x4=x5=w-x1; +bot y1=bot y4=-o; +top y2=top y5=h+o; y3=y4+ygap; +draw z1--z2--z3; draw z4--z5; +labels(1,2,3,4,5); endchar; -- cgit v1.2.3