summaryrefslogtreecommitdiff
path: root/fonts/musixtex-fonts/source/xppffgen.mf
diff options
context:
space:
mode:
Diffstat (limited to 'fonts/musixtex-fonts/source/xppffgen.mf')
-rw-r--r--fonts/musixtex-fonts/source/xppffgen.mf261
1 files changed, 261 insertions, 0 deletions
diff --git a/fonts/musixtex-fonts/source/xppffgen.mf b/fonts/musixtex-fonts/source/xppffgen.mf
new file mode 100644
index 0000000000..df847f5119
--- /dev/null
+++ b/fonts/musixtex-fonts/source/xppffgen.mf
@@ -0,0 +1,261 @@
+%%
+%% xppffgen.mf - an alternative font for MusiXTeX \ppff
+%% font source code, letter figure definition
+%%
+%% Modified from official cmbxti10.mf cmbase.mf textit.mf itall.mf
+%% (Computer Modern Text Italic family)
+%%
+%% by Hiroaki MORIMOTO <CQX05646@nifty.com>
+%%
+%% August, 2004.
+%%
+
+mode_setup; font_setup;
+
+%----patches for cmbase--------------------------------------------------------
+def bulb(suffix $,$$,$$$) =
+pair uprevsl, dnrevsl;
+uprevsl := (0,y$r-y$$r) slanted -slant;
+dnrevsl := (0,y$$r-y$r) slanted -slant;
+ z$$$r=z$$r;
+% path_.l:=z$l{x$$r-x$r,0}...{0,y$$r-y$r}z$$l;
+ path_.l:=z$l{x$$r-x$r,0}...{dnrevsl}z$$l;
+% draw path_.l--z$$r{0,y$r-y$$r}...{x$r-x$$r,0}z$r--cycle; % link
+ filldraw path_.l--z$$r{uprevsl}...{x$r-x$$r,0}z$r--cycle; % link
+% path_.r:=z$$$l{0,y$r-y$$r}..z$$$r{0,y$$r-y$r}; % near-circle
+ path_.r:=z$$$l{uprevsl}..z$$$r{dnrevsl}; % near-circle
+% filldraw subpath(0,xpart(path_.r intersectiontimes path_.l)) of path_.r
+% --z$$r{0,y$$r-y$r}..cycle; % bulb
+ filldraw path_.r--z$$r{dnrevsl}..cycle; % bulb
+ enddef;
+
+def hook_out(suffix $,$$,$$$)suffix modifier= % |x$| and |x$$$| (only) are known
+ pos$(stem,0); pos$$(vair,90);
+ x$$$:=hround(x$$$+.5hair-eps)-.5hair; pos$$$(hair,180);
+ y$=1/4x_height; bot y$$l=-oo; y$$$=1/3x_height;
+% if skewed.modifier: x$$=x$+1.25u;
+% filldraw stroke z$e{-u,-x_height}...z$$e{right}...{up}z$$$e; % hook
+% else: x$$=x$+1.5u;
+% filldraw stroke z$e{down}...z$$e{right}
+% ...{x$$$-(x$+2.5u),x_height}z$$$e; fi enddef; % hook
+ x$$=x$$$-u;
+ filldraw stroke z$e{down}...z$$e{right}
+ ...{up slanted .5slant}z$$$e; % hook
+enddef;
+
+def hook_in(suffix $,$$,$$$)suffix modifier= % |x$| and |x$$$| (only) are known
+ x$:=hround(x$-.5hair)+.5hair; pos$(hair,180);
+% x$:=hround(x$-.5hair)+.5hair; pos$(vair,180);
+ pos$$(vair,90); pos$$$(stem,0);
+% pos$$(hair,90); pos$$$(stem,0);
+% y$=2/3x_height; top y$$r=x_height+oo; y$$$=3/4x_height;
+ y$=.55x_height; top y$$r=x_height+.9oo; y$$$=3/4x_height;
+% if skewed.modifier: x$$=x$$$-1.25u;
+ x$$=x$+u;
+% filldraw stroke z$e{up}..z$$e{right}...{-u,-x_height}z$$$e; % hook
+ filldraw stroke z$e{up slanted .5slant}...z$$e{right}...{down}z$$$e; % hook
+% else: x$$=x$$$-1.5u;
+% filldraw stroke z$e{x$$$-2.5u-x$,x_height}
+% ...z$$e{right}...{down}z$$$e; fi enddef; % hook
+enddef;
+
+%----letter f------------------------------------------------------------------
+cmchar "Italic letter f";
+%beginchar("f",max(1.5u#,stem#)+max(3.5u#,2flare#),asc_height#,desc_depth#);
+beginchar("f",max(1.5u#,stem#)+max(3.5u#,2flare#)-.6u#,asc_height#,desc_depth#);
+%italcorr asc_height#*slant+.75u#;
+italcorr asc_height#*slant;
+adjust_fit(if monospace:u#,u# else: 0,0 fi); pickup fine.nib;
+%numeric theta; z88=(.5w-.5u,h); z89=(.5w+.5u,-d); theta=angle(z88-z89);
+numeric theta; z88=(.5w,h); z89=(.5w,-d); theta=angle(z88-z89);
+pos0(flare,0); pos1(hair,0); pos2(vair,90);
+%pos3(.5[hair,stem],180); pos4(stem,theta+90);
+%pos3(.5[hair,stem],180); pos4(stem,270-theta);
+pos3(.5[hair,stem],180); pos4(stem,180);
+%pos5(stem,theta-90); pos6(.5[hair,stem],0);
+%pos5(stem,90-theta); pos6(.5[hair,stem],0);
+pos5(stem,0); pos6(.5[hair,stem],0);
+%pos7(vair,-90); pos8(hair,-180); pos9(flare,-180);
+pos7(vair,-75); pos8(hair,-180); pos9(flare,-180);
+%rt x1r=hround(w+.25u); lft x8r=hround-.35u; x2=.6[x1,x4]; x7=.6[x8,x5];
+rt x1r=hround(w+.25u)+.9u; lft x8r=hround-1.4u; x2=.6[x1,x4]; x7=.6[x8,x5];
+%y9-.5flare=vround -.85d; y2-y0=y9-y7; top y2r=h+oo; bot y7r=-d-oo;
+y9-.5flare=vround -d; y2-y0=y9-y7; top y2r=h+oo+.2hair; bot y7r=-d-oo-.2hair;
+%y4=.25[x_height,h]; y5=.5[-d,y4];
+y4=.2[x_height,h]; y5=.47[-d,y4];
+z4=whatever[z88,z89]; z5=whatever[z88,z89];
+%x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.8[y4,y2]; y6=.8[y5,y7];
+x3=.8[x2+x4-x88,x88]; x6=.8[x7+x5-x89,x89]; y3=.7[y4,y2]; y6=.7[y5,y7];
+bulb(2,1,0); bulb(7,8,9); % bulbs
+filldraw stroke z2e{left}...z3e...{z89-z88}z4e; % upper arc
+filldraw z4r--z5l--z5r--z4l--cycle; % stem
+filldraw stroke z5e{z89-z88}...z6e...{left}z7e; % lower arc
+pickup crisp.nib; pos20(bar,90); pos21(bar,90);
+%top y20r=top y21r=x_height;
+top y20r=top y21r=x_height;
+%lft x20=lft x4r-.5stem-u; rt x21=rt x4l+.5stem+1.5u;
+lft x20=lft x4r-.5stem-1.1u; rt x21=rt x4l+.5stem+1.1u;
+filldraw stroke z20e--z21e; % crossbar
+math_fit(desc_depth#*slant+u#,x_height#*slant);
+penlabels(0,1,2,3,4,5,6,7,8,9,20,21,88,89);
+currentpicture:=currentpicture shifted (.3u,.025x_height);
+endchar;
+
+
+%----letter p------------------------------------------------------------------
+cmchar "Italic letter p";
+%beginchar("p",9u#,x_height#,desc_depth#);
+%beginchar("p",6.7u#,x_height#,desc_depth#);
+beginchar("p",7u#,x_height#,desc_depth#);
+italcorr .7x_height#*slant+.5curve#-u# if math_fitting:-.5u# fi;
+adjust_fit(0,0); pickup fine.nib;
+x0=0-.1u; x2-.5stem=hround(2.5u-.5stem); hook_in(0,1,2); % opening hook
+pos4(hair,-180); pos5(vair,-90); pos6(curve,0); pos7(vair,90);
+%x4=x2; rt x6r=hround(w-1.5u+.5curve); x5=x7=.5[x4,x6];
+%x4=.4[x2,x2r]; rt x6r=hround(w+.25u+.5curve); x5=.55[x4,x6]; x7=.4[x4,x6];
+x4=.4[x2,x2r]; rt x6r=hround(w-.05u+.5curve); x5=.55[x4,x6]; x7=.4[x4,x6];
+%bot y5r=-oo+.5hair; top y7r=h+oo+.25hair; y4=.55[y5,y7]; y6=.45[y5,y7];
+bot y5r=-oo+hair; top y7r=h+oo+.1hair; y4=.55[y5,y7]; y6=.45[y5,y7];
+filldraw stroke super_arc.e(4,5) & pulled_arc.e(5,6)
+ & pulled_arc.e(6,7) & super_arc.e(7,4); % bowl
+filldraw stroke super_arc.e(4,5) & super_arc.e(5,6)
+ & super_arc.e(6,7) & super_arc.e(7,4); % bowl
+pickup tiny.nib; pos2'(stem,0); pos3(stem,0);
+z2=z2'; x3=x2; bot y3=-d; filldraw stroke z2'e--z3e; % stem
+dish_serif(3,2',a,1/3,.75jut,b,1/3,jut); % serif
+math_fit(-min(2/3x_height#*slant-.5hair#-.5u#,
+ 2u#-.5stem#-desc_depth#*slant),ic#);
+penlabels(0,1,2,3,4,5,6,7);
+currentpicture:=currentpicture shifted (.25u,.025x_height);
+endchar;
+
+
+%----letter m------------------------------------------------------------------
+cmchar "Italic letter m";
+beginchar("m",9u#,x_height#,0);
+%italcorr 1/3x_height#*slant;
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+x_height_o:=x_height; x_height:=.8x_height;
+adjust_fit(if monospace:-1.5u#,-2u# else: 0,0 fi); pickup fine.nib;
+%w := .9w;
+numeric shaved_stem; %shaved_stem=mfudged.stem;
+shaved_stem=.2[ess,stem];
+save stem; stem=shaved_stem;
+pos2(stem,0); x1=x2;
+%if monospace: pos1(stem,0); lft x1l=hround(2.5u-.5stem); top y1=h;
+%else:% x0=0; lft x2l=hround(2.5u-.5stem);
+% x0=0; lft x2l=hround(2.5u-.5stem);
+% x0=0+.08w; lft x2l=hround(2.5u-.5stem);
+ x0=0-.5hair+.5stem; lft x2l=hround(2.5u-.5stem);
+ hook_in(0,a,1);% fi % opening hook
+y2-.5stem=-oo; filldraw circ_stroke z2e--z1e; % left stem
+%x4+.5stem=hround(.5w+.5stem); ital_arch(2,3,4); % left arch
+%x4+.5stem=hround(.675w+.5stem); ital_arch(2,3,4); % left arch
+x4+.5stem=hround(.58w+.5stem); ital_arch(2,3,4); % left arch
+pos5(stem,0); y5=y2; x5=x4;
+filldraw circ_stroke z5e--z4e; % middle stem
+%x7+.5stem=hround(w-2.5u+.5stem);
+%x7+.5stem=hround(1.35w-2.5u+.5stem);
+x7+.5stem=hround(1.16w-2.5u+.5stem);
+%x8=x7-.25u; ital_arch(5,6,7); % right arch
+x8=x7; ital_arch(5,6,7); % right arch
+%if monospace: pos9(vair,90); x9=good.x .5[x8,w]; bot y9l=0; y8=1/3h;
+% pos8(stem,0); filldraw stroke z8e{-u,-x_height}...{right}z9e; % terminal
+%else:% x9=w; hook_out(8,b,9)(skewed); fi % closing hook
+%x9=1.25w; hook_out(8,b,9)(skewed);% fi % closing hook
+x9=w+1u; hook_out(8,b,9)(skewed);% fi % closing hook
+%filldraw stroke z7e{down}..{-u,-x_height}z8e; % right stem
+%filldraw stroke z7e{down}--{down}z8e; % right stem
+filldraw stroke z7e--z8e; % right stem
+math_fit(-2/3x_height#*slant+.5hair#+.5u#,ic#);
+penlabels(0,a,1,2,3,4,5,6,7,8,b,9);
+x_height:=x_height_o;
+currentpicture:=currentpicture shifted (.6u,.19x_height);
+endchar;
+
+
+%----letter s------------------------------------------------------------------
+cmchar "Italic letter s";
+%beginchar("s",5.25u#+max(1.75u#,flare#),x_height#,0);
+beginchar("s",4.8u#,x_height#,0);
+%italcorr x_height#*slant-.5u#;
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(0,0); pickup fine.nib;
+%numeric theta; theta=90-angle(40u,h); slope:=-h/40u; % angle at middle
+numeric theta; theta=90-angle(16u,h); slope:=-h/16u; % angle at middle
+pos2(vair,-90); pos0(max(fine.breadth,ess),theta); pos7(vair,-90);
+%x2l=x0=x7=.5w; top y2l=h+oo; bot y7r=-oo;
+%x2l+.08w=x0=x7-.08w=.5w; top y2l=h+oo-.1x_height; bot y7r=-oo+.1x_height;
+x0=.5w; top y2l=h+oo-.1x_height; bot y7r=-oo+.1x_height;
+x2=.4w; x7=.6w;
+y0-.5ess=y7l+.55(y2r-y7l-ess);
+%lft x3l=hround u-eps; rt x6r=hround(w-.5u)+eps;
+%lft x3l=hround u-eps+.2u; rt x6r=hround(w-.5u)+eps-.2u;
+lft x3l=0-.1u; rt x6r=w+.2u;
+x3r-x3l=x6r-x6l=hround .5[vair,ess]-fine;
+ellipse_set(2l,3l,4l,0l); ellipse_set(2r,3r,4r,0r); y3=y3r;
+ellipse_set(7l,6l,5l,0l); ellipse_set(7r,6r,5r,0r); y6=y6r;
+interim superness:=more_super;
+filldraw stroke super_arc.e(2,3) & z3e{down}
+ ..z4e---z5e..z6e{down} & super_arc.e(6,7); % main stroke
+pos1(hair,0); pos10(hround .75[hair,flare],0);
+pos2'(vair,90); z2'=z2;
+pos8(hair,-180); pos9(flare,-180);
+%rt x10r=hround(w-u)+2eps; lft x9r=hround .5u-2eps; y10=.78h; y9=.25h;
+%rt x10r=hround(w-u)+2eps-.5u; lft x9r=hround 1u-2eps+.5u; y10=.78h; y9=.25h;
+lft x9r=+.35u; rt x10r=w-.55u; y9=.25h; y10=.75h;
+bulb(2',1,10); bulb(7,8,9); % bulbs
+math_fit(0,ic#); penlabels(0,1,2,3,4,5,6,7,8,9,10);
+currentpicture:=currentpicture shifted (u,.09x_height);
+endchar;
+
+%----letter z------------------------------------------------------------------
+cmchar "Italic letter z";
+%beginchar("z",5.5u#+max(1.5u#,stem#),x_height#,0);
+beginchar("z",5.2u#,x_height#,0);
+%italcorr x_height#*slant+.5hair#;
+italcorr 1/3x_height#*slant+.5hair#+.5u#;
+adjust_fit(if monospace:.5u#,.5u# else: 0,0 fi); pickup fine.nib;
+%pos1(hair,0); pos2(stem,-90); pos3(vair,-90); pos4(hair,0);
+%pos1(hair,0); pos2(ess,-90); pos3(vair,-90); pos4(hair,0);
+pos1(hair,-0); pos2(.3[ess,stem],-80); pos3(.7[vair,ess],-90); pos4(hair,-30);
+%lft x1l=hround(u-.5hair); x2=2.5u; x3=w-2u; rt x4r=hround(w-.5u);
+%lft x1l=hround(.5u-.5hair); x2=2.2u; x3=w-2u; rt x4r=hround(w-.5u);
+lft x1l=hround(.0u-.5hair); x2=1.2u; x3=2.9u; rt x4r=hround(1.1w-.6u)-.2u;
+%top y1=.78h; top y2l=top y4=h+oo; y3=.825h;
+%top y1=.78h-.1x_height; top y2l=top y4=h+oo-.1x_height; y3=.825h-.1x_height;
+%top y1=.78h-.1x_height; top y2l=top y4=h+oo-.1x_height; y3=.825h-.04x_height;
+top y1=.76h-.1x_height; top y2l=top h+oo-.1x_height; y4l=h-.1x_height; y3=.85h-.1x_height;
+%pos5(hair,0); pos6(vair,-90); pos7(stem,-90); pos8(hair,0);
+%pos5(hair,0); pos6(vair,-90); pos7(ess,-90); pos8(hair,0);
+pos5(hair,-30); pos6(.7[vair,ess],-90); pos7(.5[ess,stem],-80); pos8(hair,-0);
+%x5=x1; x6=2.5u; x7=w-2u; x8+.5hair=hround(w+.5hair-eps);
+%x5=x1+u; x6=3.5u; x7=w-1u; x8+.5hair=hround(w+.5hair-eps)+u;
+%x5=x1+.5u; x6=2.5u; x7=.87w; x8+.5hair=hround(1.1w+.5hair-eps);
+x5=x1+.5u; x6=2.5u; x7=.95w; x8+.5hair=hround(1.1w+.5hair-eps);
+%bot y5=bot y7r=-oo; y6=.175h; bot y8=.31h;
+%bot y5=.1x_height; y7r=-oo; y6=.175h+.1x_height; bot y8=.31h;
+bot y5=.1x_height; y7r=-oo; y6=.175h+.03x_height; bot y8=.31h;
+pair p; p=(z4-z5) yscaled 2;
+filldraw stroke z1e{up}...z2e{right}..z3e{right}...{p}z4e; % upper bar
+filldraw stroke z5e{p}...z6e{right}..{right}z7e...{up}z8e; % lower bar
+filldraw stroke z5e{p}..{p}z4e; % diagonal
+math_fit(0,1/3x_height#*slant+.5hair#+.5u#);
+penlabels(1,2,3,4,5,6,7,8);
+currentpicture:=currentpicture shifted (.7u,.09x_height);
+endchar;
+
+
+%----font dimensions-----------------------------------------------------------
+font_slant slant; font_x_height x_height#;
+% font_normal_space 6u#+2letter_fit#;
+font_normal_space 4u#+2letter_fit#;
+font_normal_stretch 3u#; font_normal_shrink 2u#;
+font_quad 18u#+4letter_fit#;
+font_extra_space 2u#;
+
+ligtable "f": "f" kern -.7u#;
+ligtable "p": "f" kern +.5u#;
+
+bye.
+