summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf')
-rw-r--r--Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf428
1 files changed, 292 insertions, 136 deletions
diff --git a/Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf b/Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf
index b69176268d2..e39d923d6bd 100644
--- a/Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf
+++ b/Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf
@@ -1,3 +1,17 @@
+% Date: 2010/08/10
+
+% Don't flash pictures of the characters as you draw them.
+% This is dizzying, and UNIX can't do it anyway.
+displaying := 0;
+
+% If you want actual documentation, say
+% "mf knitnn" and then
+% "gftodvi knitnn.2602gf" and then
+% "dvipdfm knitnn"
+% at a command prompt in the directory containing this file.
+% This will give you a PDF with big pictures of all the characters in
+% the font with the important points labeled.
+
if known ps_output:
font_coding_scheme := "T1-WGL4.enc";
fi
@@ -16,6 +30,11 @@ purltype = 0;
gridtype = 1;
foretype = 2;
bothtype = 3;
+counttype = 4;
+
+if fonttype = counttype:
+ extra_endchar := extra_endchar & "pickup pencircle scaled 0.2pt; if w>0: draw (0,-d)--(0,h); draw (w,-d)--(w,h); fi";
+fi
if gridfont:
def charbox =
@@ -27,8 +46,10 @@ def charbox =
pickup pencircle scaled gridwidth;
fill (-gridwidth/2,-d-gridwidth/2)--(w+gridwidth/2,-d-gridwidth/2)--
(w+gridwidth/2,h+gridwidth/2)--(-gridwidth/2,h+gridwidth/2)--cycle;
- unfill (gridwidth/2,-d+gridwidth/2)--(w-gridwidth/2,-d+gridwidth/2)--
- (w-gridwidth/2,h-gridwidth/2)--(gridwidth/2,h-gridwidth/2)--cycle;
+ if (w>0):
+ unfill (gridwidth/2,-d+gridwidth/2)--(w-gridwidth/2,-d+gridwidth/2)--
+ (w-gridwidth/2,h-gridwidth/2)--(gridwidth/2,h-gridwidth/2)--cycle;
+ fi
%draw (0,-d)--(w,-d)--(w,h)--(0,h)--cycle;
fi
fi
@@ -41,7 +62,6 @@ def charbox =
enddef;
fi
-
def purlbox = charbox; purlfill; enddef;
picture symbolpic[];
@@ -67,6 +87,8 @@ def definearrow(text thepath, arrowlength, endpath) =
;
enddef;
+% Arrow symbols
+
beginchar("s",wd#,ht#,dp#); "Slip one left";
pickup symbol_pen;
y1 = y2 = (h-d)/2-offset;
@@ -76,16 +98,15 @@ beginchar("s",wd#,ht#,dp#); "Slip one left";
definearrow(symbolpath0)((x2-x1)/3)(symbolpath1);
draw symbolpath0;
draw symbolpath1;
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
beginchar("S",wd#,ht#,dp#); "Slip one right";
- fliphoriz(symbolpic0)(currentpicture);
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
beginchar("[",wd#,ht#,dp#); "Slip one left knitwise";
pickup symbol_pen;
- pickup symbol_pen;
y1 = y2 = (h-d)/2-offset;
0.5[x1,x2]=w/2;
rt x2 - lft x1 = ht+dp-2*0.3[smallgap,mingap];
@@ -99,16 +120,16 @@ beginchar("[",wd#,ht#,dp#); "Slip one left knitwise";
y4-y3 = 1.5 ypart (point 2 of symbolpath1 - point 0 of symbolpath1);
draw z3--z4;
labels(1,2,3,4);
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
beginchar("]",wd#,ht#,dp#); "Slip one right knitwise";
- fliphoriz(symbolpic0)(currentpicture);
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
flipvert(currentpicture)(currentpicture);
charbox; endchar;
-beginchar("h",wd#,ht#,dp#); "Drop stitch";
+beginchar("h",decrwidth(1,0),ht#,dp#); "Drop stitch";
pickup symbol_pen;
y1 = bot h-small_topgap;
y2 = top -d+small_bottomgap;
@@ -117,14 +138,22 @@ beginchar("h",wd#,ht#,dp#); "Drop stitch";
definearrow(symbolpath0)((y1-y2)/3)(symbolpath1);
draw symbolpath0;
draw symbolpath1;
- symbolpic0 := currentpicture;
charbox; endchar;
-beginchar("H",wd#,ht#,dp#); "Up arrow";
- flipvert(symbolpic0)(currentpicture);
+beginchar("H",incrwidth(0,1),ht#,dp#); "Up arrow";
+ pickup symbol_pen;
+ y1 = bot h-small_topgap;
+ y2 = top -d+small_bottomgap;
+ x1 = x2 =w/2;
+ symbolpath0 := z1--z2;
+ definearrow(reverse symbolpath0)((y1-y2)/3)(symbolpath1);
+ draw symbolpath0;
+ draw symbolpath1;
charbox; endchar;
-beginchar("O",wd#,ht#,dp#); "Yarn over";
+% Miscellaneous symbols
+
+beginchar("O",incrwidth(0,1),ht#,dp#); "Yarn over";
pickup symbol_pen;
top z1 = (0.5w, h-topgap+o);
bot z3 = (0.5w, bottomgap-d-o);
@@ -147,8 +176,8 @@ beginchar("@",wd#,ht#,dp#); "Bead";
unfill fullcircle scaled 0.3333(y1-y3) shifted 0.5[z1,z3];
charbox; endchar;
-beginchar(ditto,wd#,ht#,dp#); "Wrap and turn";
- if fonttype <> purltype:
+beginchar(ditto,incrwidth(0,0),ht#,dp#); "Wrap and turn";
+ if (fonttype = foretype) or (fonttype = bothtype) or (fonttype = counttype):
pickup symbol_pen;
z0 = 0.4[z1,z3] = 0.5[z2,z4];
x3=x1=w/2; y2=y4; y3-y1=x4-x2;
@@ -173,10 +202,10 @@ beginchar(ditto,wd#,ht#,dp#); "Wrap and turn";
draw symbolpath0;
draw symbolpath1;
fi
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
endchar;
-beginchar(19,wd#,ht#,dp#); "Reverse wrap and turn";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar(19,incrwidth(0,0),ht#,dp#); "Reverse wrap and turn";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
endchar;
ligtable
@@ -218,16 +247,24 @@ def drawM(expr topheight, bottomheight, mwidth, penwidth) =
labels(1,2,3,4,5,6,7,8,9,10,4l,4r);
enddef;
-def drawstar(expr topheight, bottomheight) =
- top z1 = (w/2,topheight+o);
- bot z2 = (w/2, bottomheight-o);
+beginchar("*",wd#,ht#,dp#); "Special instructions";
+ pickup symbol_pen;
+ top z1 = (w/2,h-topgap+o);
+ bot z2 = (w/2, -d+bottomgap-o);
z3 - z4 = (z1-z2) rotated 60;
z5 - z6 = (z1-z2) rotated 120;
0.5[z3,z4] = 0.5 [z5,z6] = 0.5[z1,z2];
- draw z1--z2; draw z3--z4; draw z5--z6;
-enddef;
-
-beginchar("*",wd#,ht#,dp#); "Special instructions"; pickup symbol_pen; drawstar(h-topgap,-d+bottomgap); charbox; endchar;
+ for k=1,3,5:
+ z[k]' = 0.25[z[k],z[k+1]];
+ 0.5[z[k+1]',z[k]']=0.5[z1,z2];
+ z[k]'' = 0.5[z[k],z[k+1]];
+ penpos[k]'(symbolwidth, angle (z[k]-z[k+1])+90);
+ penpos[k+1]'(symbolwidth, angle (z[k]-z[k+1])+90);
+ penpos[k]''((1/sqrt(3))*symbolwidth, angle (z[k]-z[k+1])+90);
+ draw z[k]--z[k]'; draw z[k+1]--z[k+1]';
+ penstroke z[k]'e{z[k+1]-z[k]}..z[k]''e..{z[k+1]-z[k]}z[k+1]'e;
+ endfor
+charbox; endchar;
%beginchar("a",wd#,ht#,dp#); "Small bobble";
% pickup symbol_pen;
@@ -268,25 +305,25 @@ def drawhat(expr linewd) =
fill z3l---z1l3..z1l2---z2l..z2m..z2r---z1r---z3r..z3m..cycle;
enddef;
-
+% Increases and decreases
beginchar(1,wd#,ht#,dp#); "Make 1 from N";
% Fontforge keeps mangling this symbol, so I'm doing it the slow, hard, but reliable way.
drawhat(symbolwidth);
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
beginchar(2,wd#,ht#,dp#); "Purl make 1 from N";
drawhat(purl_symbolwidth);
- symbolpic1 := currentpicture;
+ symbolpic1 := currentpicture; symbolpicwd1 := w;
purlbox; endchar;
beginchar(3,wd#,ht#,dp#); "Make N from 1";
- flipvert(symbolpic0)(currentpicture);
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
charbox; endchar;
beginchar(4,wd#,ht#,dp#); "Purl make N from 1";
- flipvert(symbolpic1)(currentpicture);
+ flipvert(symbolpic1)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd1)/2,0);
purlbox; endchar;
-beginchar("U",wd#,ht#,dp#); "Cast on";
+beginchar("U",incrwidth(0,1),ht#,dp#); "Cast on";
if fonttype <> purltype:
pickup symbol_pen;
bot y1 = bot y3 = -d+bottomgap;
@@ -294,27 +331,25 @@ beginchar("U",wd#,ht#,dp#); "Cast on";
draw z1{right}..z2{left}..z3{right};
fi
endchar;
-beginchar("f",wd#,ht#,dp#); "Bind off knitwise";
+beginchar("f",decrwidth(1,0),ht#,dp#); "Bind off knitwise";
if fonttype <> purltype:
pickup symbol_pen;
- x1 = 0; x3 = w; x2 = w/2;
+ x3-x1=wd; 0.5[x1,x3]=w/2; x2 = 0.5[x1,x3];
y1 = y3 = (h-d)/2; top y2 = h-topgap;
bot z4 = (w/2, -d+bottomgap);
- draw z1..z2{right}..z3;
+ symbolpath0 := z1..z2{right}..z3;
+ draw symbolpath0;
%draw z4--bot z1;
fi
endchar;
-beginchar("F",wd#,ht#,dp#); "Bind off purlwise";
+beginchar("F",decrwidth(1,0),ht#,dp#); "Bind off purlwise";
if fonttype <> purltype:
- pickup symbol_pen;
- x1 = 0; x3 = w; x2 = w/2;
- y1 = y3 = (h-d)/2; top y2 = h-topgap;
- draw z1..z2{right}..z3;
+ pickup purl_symbol_pen;
+ draw symbolpath0;
fi
purlfill; endchar;
-beginchar("Z",wd#,ht#,dp#); "Knit one doubly elongated";
+beginchar("Z",incrwidth(1,3),ht#,dp#); "Knit one doubly elongated";
pickup symbol_pen;
-% drawstar(h-topgap,-d+bottomgap);
0.5[z1,z7] = top (w/2, -d+min_bottomgap);
y1 = y7;
x7 - x1 = 0.8(x8 - x0);
@@ -351,7 +386,7 @@ beginchar("Z",wd#,ht#,dp#); "Knit one doubly elongated";
charbox; endchar;
-beginchar("z",wd#,ht#,dp#); "Knit one elongated";
+beginchar("z",incrwidth(1,2),ht#,dp#); "Knit one elongated";
pickup symbol_pen;
0.5[z1,z5] = top (w/2, -d+small_bottomgap);
y1 = y5;
@@ -372,6 +407,24 @@ beginchar("z",wd#,ht#,dp#); "Knit one elongated";
..tension midtension..z4{right}..z6{down}..z5{dir(-endangle)};
charbox; endchar;
+beginchar("9",incrwidth(1,2),ht#,dp#); "CYCA knit one elongated";
+ pickup symbol_pen;
+ y0l=y0r; y1l=y1r; y2l=y2r;
+ x0r=wd-x0l;
+ x1r=wd-x1l;
+ x2r=wd-x2l;
+ z0l = top rt (mingap-ho,-d+small_bottomgap-o);
+ y1l = bot h-small_topgap;
+ x2r-x2l = y1l-y0l+2(smallgap-mingap-o/2);
+ x1l = 0.23[x2l,x2r];
+ y2l = 0.7[y0l,y1l];
+ draw z0l..tension 3..z1l{left}..z2l{down}..tension 1.5..
+ z2r{up}..z1r{left}..tension 3..z0r;
+ labels(0l,1l,2l,0r,1r,2r);
+ currentpicture := currentpicture shifted ((w-wd)/2,0);
+ charbox; endchar;
+
+
beginchar(25,wd#/2,ht#,dp#); "Left end of a wide increase";
if fonttype <> purltype:
@@ -387,7 +440,7 @@ beginchar(25,wd#/2,ht#,dp#); "Left end of a wide increase";
draw (0,h)--(0,-d);
draw (0,-d)--lft (w,-d);
fi fi fi
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
endchar;
beginchar(22,wd#/2,ht#,dp#); "Extender for a wide increase/decrease";
if fonttype <> purltype:
@@ -403,11 +456,11 @@ beginchar(22,wd#/2,ht#,dp#); "Extender for a wide increase/decrease";
fi fi fi
endchar;
beginchar(26,wd#/2,ht#,dp#); "Right end of a wide increase";
- fliphoriz(symbolpic0)(currentpicture); endchar;
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0); endchar;
beginchar(27,wd#/2,ht#,dp#); "Left end of a wide decrease";
- flipvert(symbolpic0)(currentpicture); endchar;
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0); endchar;
beginchar(28,wd#/2,ht#,dp#); "Right end of a wide decrease";
- fliphoriz(symbolpic0)(currentpicture); flipvert(currentpicture)(currentpicture);endchar;
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0); flipvert(currentpicture)(currentpicture);endchar;
beginchar(29,wd#,ht#,dp#); "Middle of a wide increase";
if fonttype <> purltype:
@@ -425,15 +478,15 @@ beginchar(29,wd#,ht#,dp#); "Middle of a wide increase";
pickup pensquare scaled gridwidth;
draw lft (w,h) -- rt (0,h); draw rt (0,-d) -- lft (w,-d);
fi fi fi
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
endchar;
beginchar(30,wd#,ht#,dp#); "Middle of a wide decrease";
- flipvert(symbolpic0)(currentpicture);
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
endchar;
if 5*wd# < symbolmaxwd#:
-beginchar(31,5wd#,ht#,dp#); "Make 1 from 5";
+beginchar(31,if fonttype = counttype: decrwidth(5,1) else: 5wd# fi,ht#,dp#); "Make 1 from 5";
pickup pensquare xscaled wideinctip yscaled wideincline;
top z1 = (w/2,h-min_topgap+o);
x2 = wd/3; bot y2 = bot y3 = -d+min_bottomgap-o;
@@ -449,18 +502,18 @@ beginchar(31,5wd#,ht#,dp#); "Make 1 from 5";
endchar;
fi
-beginchar("~",wd#,ht#,dp#); "Empty box (spacer)"; endchar;
-beginchar("`",0.5wd#,ht#,dp#); "Empty box (spacer)"; endchar;
-beginchar("'",0.5wd#,ht#,dp#); "Empty box (spacer)";
+beginchar("~",incrwidth(0,0),ht#,dp#); "Empty box (spacer)"; endchar;
+beginchar("`",if fonttype = counttype: 0 else: 0.5wd# fi,ht#,dp#); "Empty box (spacer)"; endchar;
+beginchar("'",if fonttype = counttype: 0 else: 0.5wd# fi,ht#,dp#); "Empty box (spacer)";
if fonttype = purltype: fill (0,-d)--(w,-d)--(w,h)--(0,h)--cycle; fi
endchar;
-beginchar("m",wd#,ht#,dp#); "Make one";
+beginchar("m",incrwidth(0,1),ht#,dp#); "Make one";
pickup symbol_pen;
drawM(h-topgap, -d+bottomgap, 0.5(h+d),symbolwidth);
charbox; endchar;
-beginchar("M",wd#,ht#,dp#); "Make one purlwise";
+beginchar("M",incrwidth(0,1),ht#,dp#); "Make one purlwise";
pickup purl_symbol_pen;
drawM(h-topgap, -d+bottomgap, 0.5(h+d),purl_symbolwidth);
purlbox; endchar;
@@ -500,7 +553,7 @@ beginchar("M",wd#,ht#,dp#); "Make one purlwise";
% drawB(topgap, bottomgap, purl_symbolwidth);
% purlbox; endchar;
-beginchar("|",overlinewd#,ht#,dp#); "Divider";
+beginchar("|",if fonttype <> counttype: overlinewd# else: 0 fi,ht#,dp#); "Divider";
if fonttype <> purltype:
fill(0,-d-gridwidth/2-purlextend)--(0,h+gridwidth/2+purlextend)
--(w,h+gridwidth/2+purlextend)--(w,-d-gridwidth/2-purlextend)
@@ -515,7 +568,7 @@ path twistpath[];
pair time;
-beginchar("x",wd#,ht#,dp#); "Twist slanting right";
+beginchar("x",incrwidth(0,1),ht#,dp#); "Twist slanting right";
pickup symbol_pen;
bot lft z0 = (0.5w-0.4 standardheight-ho,-d+small_bottomgap-o);
bot rt z4 = (0.5w+0.4 standardheight+ho,-d+small_bottomgap-o);
@@ -561,36 +614,36 @@ beginchar("x",wd#,ht#,dp#); "Twist slanting right";
z1e{up}..z2e{left}..z3e{down}
;%..z4e{direction 4 of twistpath0};
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
labels(0,1,2,3,4,5);
charbox; endchar;
numeric t[];
-beginchar("t",wd#,ht#,dp#); "Twist slanting left";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar("t",incrwidth(0,1),ht#,dp#); "Twist slanting left";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
-beginchar("X",wd#,ht#,dp#); "Purl right twist";
- currentpicture := symbolpic0;
+beginchar("X",incrwidth(0,1),ht#,dp#); "Purl right twist";
+ currentpicture := symbolpic0; currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
purlbox; endchar;
-beginchar("T",wd#,ht#,dp#); "Purl left twist";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar("T",incrwidth(0,1),ht#,dp#); "Purl left twist";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
purlbox; endchar;
beginchar("b",wd#,ht#,dp#); "Right upside-down twist";
- flipvert(symbolpic0)(currentpicture);
- symbolpic0 := currentpicture;
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
beginchar("q",wd#,ht#,dp#); "Left upside-down twist";
- fliphoriz(symbolpic0)(currentpicture);
- symbolpic0 := currentpicture;
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
beginchar("Q",wd#,ht#,dp#); "Purl right upside-down twist";
- currentpicture := symbolpic0;
+ currentpicture := symbolpic0; currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
purlbox; endchar;
beginchar("B",wd#,ht#,dp#); "Purl left upside-down twist";
- fliphoriz(symbolpic0)(currentpicture);
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
purlbox; endchar;
%2/1 increases and decreases
@@ -603,24 +656,24 @@ def drawSSK(expr topheight,bottom) =
draw symbolpath0;
enddef;
-beginchar("<",decrwidth(2),ht#,dp#); "SSK or left-slant cable";
+beginchar("<",decrwidth(2,1),ht#,dp#); "SSK or left-slant cable";
pickup symbol_pen;
drawSSK(h-topgap,-d+bottomgap);
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
-beginchar(">",decrwidth(2),ht#,dp#); "k2tog or right-slant cable";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar(">",decrwidth(2,1),ht#,dp#); "k2tog or right-slant cable";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
-beginchar(";",decrwidth(2),ht#,dp#); "P2tog";
+beginchar(";",decrwidth(2,1),ht#,dp#); "P2tog";
pickup purl_symbol_pen;
draw symbolpath0;
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
purlbox; endchar;
-beginchar(":",decrwidth(2),ht#,dp#); "SSP";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar(":",decrwidth(2,1),ht#,dp#); "SSP";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
purlbox; endchar;
-beginchar("j",incrwidth(1),ht#,dp#); "Lifted increase slanting left";
+beginchar("j",incrwidth(0,1),ht#,dp#); "Lifted increase slanting left";
pickup symbol_pen;
top lft z1 = (0.5w-0.5 standardheight-ho,h-topgap+o);
bot rt z2 = (0.5w+0.5 standardheight, -d+bottomgap-o);
@@ -628,23 +681,26 @@ beginchar("j",incrwidth(1),ht#,dp#); "Lifted increase slanting left";
definearrow(symbolpath0)((y1-y2)/3)(symbolpath1);
draw symbolpath0;
draw symbolpath1;
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
-beginchar("i",incrwidth(1),ht#,dp#); "Lifted increase slanting right";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar("i",incrwidth(0,1),ht#,dp#); "Lifted increase slanting right";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
-beginchar("J",incrwidth(1),ht#,dp#); "Purl increase slanting right";
+beginchar("J",incrwidth(0,1),ht#,dp#); "Purl increase slanting right";
pickup purl_symbol_pen;
draw symbolpath0;
draw symbolpath1;
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
purlbox; endchar;
-beginchar("I",incrwidth(1),ht#,dp#); "Purl increase slanting left";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar("I",incrwidth(0,1),ht#,dp#); "Purl increase slanting left";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
purlbox; endchar;
beginchar("(",wd#,ht#,dp#); "Left-slanting line";
pickup symbol_pen;
+ top lft z1 = (0.5w-0.5 standardheight-ho,h-topgap+o);
+ bot rt z2 = (0.5w+0.5 standardheight, -d+bottomgap-o);
+ symbolpath0 := z2--z1;
draw symbolpath0;
charbox; endchar;
beginchar(")",wd#,ht#,dp#); "Right-slanting line";
@@ -653,7 +709,7 @@ beginchar(")",wd#,ht#,dp#); "Right-slanting line";
fliphoriz(currentpicture)(currentpicture);
charbox; endchar;
-beginchar("y",incrwidth(2),ht#,dp#); "Knit front and back";
+beginchar("y",incrwidth(1,2),ht#,dp#); "Knit front and back";
pickup symbol_pen;
bot lft z1 = (0.5w-0.495 Vwidth-ho,-d+bottomgap-o);
top rt z2 = (0.5w+0.495 Vwidth+ho,h-topgap+o);
@@ -663,46 +719,72 @@ beginchar("y",incrwidth(2),ht#,dp#); "Knit front and back";
z5 = whatever[z1,z2] = whatever[z3,z4];
draw z1--z2;
draw z4--z5;
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
-beginchar("u",incrwidth(2),ht#,dp#); "Knit back and front";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar("u",incrwidth(1,2),ht#,dp#); "Knit back and front";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
-
-beginchar("4",incrwidth(2),ht#,dp#); "Alternative SSK";
- flipvert(symbolpic0)(currentpicture);
+beginchar("4",decrwidth(2,1),ht#,dp#); "Alternative SSK";
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
charbox; endchar;
-beginchar("5",incrwidth(2),ht#,dp#); "Alternative K2tog";
- flipvert(symbolpic0)(currentpicture);
+beginchar("5",decrwidth(2,1),ht#,dp#); "Alternative K2tog";
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
fliphoriz(currentpicture)(currentpicture);
charbox; endchar;
-beginchar("v",incrwidth(2),ht#,dp#); "Generic make 2 from 1";
+
+beginchar("7",incrwidth(1,2),ht#,dp#); "Alt front and back";
+ pickup symbol_pen;
+ x0 = x1 = x2;
+ bot y0 = -d+small_bottomgap;
+ top y1 = h-small_topgap;
+ 0.5[x3+ho,x0] = w/2;
+ z3 = z2 + whatever*(-1.2,1);
+ y3 = 0.9[y0,y1];
+ y2 = 0.4[y0,y1];
+ draw z2--z3; draw z1--z0;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
+ charbox; endchar;
+beginchar("8",incrwidth(1,2),ht#,dp#); "Alt back and front";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
+ charbox; endchar;
+
+
+
+beginchar("v",incrwidth(1,2),ht#,dp#); "Generic make 2 from 1";
pickup symbol_pen;
top rt z1 = (0.5w+0.5 Vwidth+ho,h-topgap+o);
bot y2 = -d+bottomgap-o; x2 = 0.5[x1,x3];
top lft z3 = (0.5w-0.5 Vwidth-ho,h-topgap+o);
symbolpath0 := z1--z2--z3;
draw symbolpath0;
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
-beginchar("V",incrwidth(2),ht#,dp#); "Purl make 2 from 1";
+beginchar("V",incrwidth(1,2),ht#,dp#); "Purl make 2 from 1";
pickup purl_symbol_pen;
draw symbolpath0;
- symbolpic1 := currentpicture;
+ symbolpic1 := currentpicture; symbolpicwd1 := w;
purlbox; endchar;
+beginchar("6",wd#,ht#,dp#); "V with bar";
+ pickup symbol_pen;
+ currentpicture := symbolpic0; currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
+ 0.5[x0,x1]=w/2;
+ y0=y1=0.6[-d+bottomgap,h-topgap];
+ rt x1-lft x0 = Wwidth;
+ draw z0--z1;
+ charbox; endchar;
-beginchar("!",incrwidth(2),ht#,dp#); "Make 1 from 2";
- flipvert(symbolpic0)(currentpicture);
+beginchar("!",decrwidth(2,1),ht#,dp#); "Make 1 from 2";
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
charbox; endchar;
-beginchar("2",incrwidth(2),ht#,dp#); "Make 1 from 2 purlwise";
- flipvert(symbolpic1)(currentpicture);
- purlbox; endchar;
+beginchar("2",decrwidth(2,1),ht#,dp#); "Make 1 from 2 purlwise";
+ flipvert(symbolpic1)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd1)/2,0);
+ purlbox; endchar;
%Double decreases and increases
-beginchar("w",incrwidth(3),ht#,dp#); "make 3 from 1";
+beginchar("w",incrwidth(1,3),ht#,dp#); "make 3 from 1";
pickup symbol_pen;
top lft z1 = (0.5w-0.5 Wwidth-ho,h-small_topgap+o);
bot z2 = (0.5w,-d+small_bottomgap-o);
@@ -713,12 +795,12 @@ beginchar("w",incrwidth(3),ht#,dp#); "make 3 from 1";
symbolpath1 := z2--z4;
draw symbolpath1;
charbox; endchar;
-beginchar("W",incrwidth(3),ht#,dp#); "Purl make 3 from 1";
+beginchar("W",incrwidth(1,3),ht#,dp#); "Purl make 3 from 1";
pickup purl_symbol_pen;
draw symbolpath0; draw symbolpath1;
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
purlbox; endchar;
-beginchar("Y",incrwidth(3),ht#,dp#); "Make 3 from 1 with YO center";
+beginchar("Y",incrwidth(1,3),ht#,dp#); "Make 3 from 1 with YO center";
pickup symbol_pen;
draw symbolpath0;
top z4 = (0.5w, h-small_topgap+o);
@@ -727,10 +809,10 @@ beginchar("Y",incrwidth(3),ht#,dp#); "Make 3 from 1 with YO center";
draw z4..z6..z5..z7..cycle;
charbox; endchar;
-beginchar("E",incrwidth(3),ht#,dp#); "make 3 from 1 with purl center";
+beginchar("E",incrwidth(1,3),ht#,dp#); "make 3 from 1 with purl center";
pickup symbol_pen;
if fonttype <> purltype:
- currentpicture := symbolpic0;
+ currentpicture := symbolpic0; currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
else:
z1 = point 0 of symbolpath0;
z2 = point 1 of symbolpath0;
@@ -739,55 +821,107 @@ beginchar("E",incrwidth(3),ht#,dp#); "make 3 from 1 with purl center";
fi
endchar;
-beginchar("A",decrwidth(3),ht#,dp#); "Make 1 from 3";
+beginchar("A",decrwidth(3,1),ht#,dp#); "Make 1 from 3";
pickup symbol_pen;
bot lft z1 = (0.5w-0.5 biggerheight-ho,-d+small_bottomgap-o);
- top z2 = (0.5w, h-small_topgap+o);
- bot rt z3 = (0.5w+0.5 biggerheight, -d+small_bottomgap-o);
+ bot rt z3 = (0.5w+0.5 biggerheight+ho,-d+small_bottomgap-o);
+ top z2 = (xpart z4, h-small_topgap+o);
z4 = 0.5[z1,z3];
symbolpath0 := z1--z2--z3;
symbolpath1 := z2--z4;
draw symbolpath0;
draw symbolpath1;
+ labels(1,2,3,4);
charbox; endchar;
-beginchar("3",decrwidth(3),ht#,dp#); "Purl make 1 from 3";
+beginchar("3",decrwidth(3,1),ht#,dp#); "Purl make 1 from 3";
pickup purl_symbol_pen;
draw symbolpath0;
draw symbolpath1;
purlbox; endchar;
-beginchar("R",decrwidth(3),ht#,dp#); "k3tog";
+beginchar("R",decrwidth(3,1),ht#,dp#); "k3tog";
pickup symbol_pen;
+ finesymbolwidth := 4/7symbolwidth;
+ top rt z0 = (0.5w+0.5 biggerheight, h-small_topgap+o);
bot lft z1 = (0.5w-0.5 biggerheight-ho,-d+small_bottomgap-o);
- top rt z2 = (0.5w+0.5 biggerheight, h-small_topgap+o);
bot rt z3 = (0.5w+0.5 biggerheight, -d+small_bottomgap-o);
- z4 = 0.5[z1,z3];
- draw z1--z2--z3;
- draw z4--0.5[z4,z2];
- symbolpic0 := currentpicture;
+
+ % The line z0--z4 is halfway between z0--z1 and z0--z3 as angles
+ z4 = whatever[z1,z3];
+ z4 = z0+whatever*(dir 0.5[angle(z1-z0),angle(z3-z0)]);
+ z5 = 0.5[z1,z3];
+
+ z2 = 0.5[z4,z5];
+
+ z1' = 0.5[z1,z0];
+ z3' = 0.2[z3,z0];
+ z2'' = z0;
+ z2' = 0.2[z2,z2''];
+ penpos1(symbolwidth, -90+angle (z0-z1));
+ penpos1'(symbolwidth, -90+angle (z0-z1));
+ penpos3(symbolwidth, 0);
+ penpos3'(symbolwidth, 0);
+
+ z1''l = whatever[z1l,z1'l];
+ z1''l = z0 + whatever*((z1-z0) rotated 90);
+ penpos1''(finesymbolwidth, -90+angle (z0-z1));
+
+ z3''r = (x3r,y0);
+ penpos3''(finesymbolwidth, 0);
+
+ penpos2(symbolwidth, -90+angle (z2''-z2));
+ penpos2'(symbolwidth, -90+angle (z2''-z2));
+ penpos2''(finesymbolwidth, -90+angle (z2''-z2));
+
+ symbolpath1 := z1''l..z1'l---z1l..z1r---z1'r..z1''r;
+ symbolpath2 := z2''l..z2'l---z2l..z2r---z2'r..z2''r;
+ symbolpath3 := z3''l..z3'l---z3l..z3r---z3'r..z3''r;
+ % Not penstroke because we want the endpoints to be rounded
+
+ numeric t[];
+ (t12,t21) = symbolpath1 intersectiontimes symbolpath2;
+ (t23,t32) = symbolpath2 intersectiontimes symbolpath3;
+ fill (subpath(0,t12) of symbolpath1
+ -- subpath (t21,t23) of symbolpath2
+ -- subpath (t32,infinity) of symbolpath3
+ -- z3''r{z3''r-z3'r}..{z1-z0}cycle
+ );
+ %pickup pencircle scaled 0.01pt;
+ %draw symbolpath2; draw symbolpath3;
+
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
+ labels(1,2,3,1',2',3',1r,1l,2r,2l,3r,3l,1'r,1'l,2'r,2'l,3'r,3'l, 1''r,1''l);
+
+ symbolpath0 := z1--z0--z3--z2;
charbox; endchar;
-beginchar("L",decrwidth(3),ht#,dp#); "SSSK";
+beginchar("L",decrwidth(3,1),ht#,dp#); "SSSK";
+
+ %draw subpath(0,2) of symbolpath0;
+ %draw point 3 of symbolpath0--point 1 of symbolpath0;
fliphoriz(symbolpic0)(currentpicture);
+ %currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
-beginchar("r",decrwidth(3),ht#,dp#); "LRC";
+beginchar("r",decrwidth(3,1),ht#,dp#); "LRC";
pickup symbol_pen;
bot lft z1 = (0.5w-0.5 biggerheight-ho,-d+small_bottomgap-o);
top rt z2 = (0.5w+0.5 biggerheight+ho,h-small_topgap+o);
bot rt z3 = (0.5w+0.5 biggerheight+ho,-d+small_bottomgap-o);
top lft z4 = (0.5w-0.5 biggerheight-ho,h-small_topgap+o);
- z5 = alpha[z1,z2]; z5 = beta[z3,z4];
+ x5 = 0.5w; y5 = 0.53[y1,y4];
x6=x5; y6=y1;
- draw z1--z2;
+ draw z1..z5..z2;
draw z3--z5;
draw z5--z6;
- symbolpic0 := currentpicture;
+
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
+ labels(1,2,3,4,5,6,7);
charbox; endchar;
-beginchar("l",decrwidth(3),ht#,dp#); "RLC";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar("l",decrwidth(3,1),ht#,dp#); "RLC";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
-beginchar("a",decrwidth(3),ht#,dp#); "LRC";
+beginchar("a",decrwidth(3,1),ht#,dp#); "LRC";
pickup symbol_pen;
bot lft z1 = (0.5w-0.5 biggerheight-ho,-d+small_bottomgap-o);
top rt z2 = (0.5w+0.5 biggerheight+ho,h-small_topgap+o);
@@ -800,6 +934,28 @@ beginchar("a",decrwidth(3),ht#,dp#); "LRC";
draw z3--z5;
draw z6--z7;
charbox; endchar;
+
+% Rownumber triangles (modified from manfnt.mf)
+
+trianglecharwd# = 19/3 pt#;
+
+beginchar("}", trianglecharwd#, 6.25pt#, 0); "Triangle pointing right";
+ if (fonttype = foretype) or (fonttype = bothtype) or (fonttype = counttype):
+ x1=x2=w-x3-max(purlextend, 0.5gridwidth)=4/3pt; y3=.5h;
+ y1-y3=y3-y2;
+ y1-y2 = 1.3*(x3-x1);
+ % For an equilateral triangle, use 2/sqrt 3 = 1.1547
+ fill z1--z2--z3--cycle;
+ fi
+ symbolpic0 := currentpicture;
+ labels(1,2,3); endchar;
+
+beginchar("{", trianglecharwd#, 6.25pt#, 0); "Triangle pointing left";
+ fliphoriz(symbolpic0)(currentpicture);
+ endchar;
+
+
+% Wrapped stitches
beginchar("?",wd#,ht#,dp#); "Left end of wrapped stitches";
pickup symbol_pen;
@@ -840,7 +996,7 @@ beginchar("?",wd#,ht#,dp#); "Left end of wrapped stitches";
draw lft z0r--rt (0,y0r);
if wraplines=3: draw lft z1r--rt (0,y1r); fi
draw lft z2r--rt (0,y2r);
- symbolpic1 := currentpicture;
+ symbolpic1 := currentpicture; symbolpicwd1 := w;
currentpicture := nullpicture;
draw lft z0r---rt z0m;
if wraplines=3: draw lft z1r---rt z1m; fi
@@ -854,19 +1010,19 @@ beginchar("?",wd#,ht#,dp#); "Left end of wrapped stitches";
draw bot (w/2,h-small_topgap+o) -- top (w/2, -d+small_bottomgap-o);
fi
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
labels(0r,0m,0l,1r,1m,1l,2r,2m,2l);
charbox; endchar;
beginchar(23,wd#,ht#,dp#); "Middle of wrapped stitches";
pickup symbol_pen;
- currentpicture := symbolpic1;
+ currentpicture := symbolpic1; currentpicture := currentpicture shifted ((w-symbolpicwd1)/2,0);
if gridfont: else:
draw bot (w/2,h-small_topgap+o) -- top (w/2, -d+small_bottomgap-o);
fi
charbox; endchar;
beginchar(24,wd#,ht#,dp#); "Right end of wrapped stitches";
- fliphoriz(symbolpic0)(currentpicture);
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
ligtable "?":
@@ -897,7 +1053,7 @@ beginchar("1",wd#,ht#,dp#); "Left end of single-wrapped stitches";
pickup pensquare scaled symbolwidth;
draw lft z1r--rt (0,y1r);
- symbolpic1 := currentpicture;
+ symbolpic1 := currentpicture; symbolpicwd1 := w;
currentpicture := nullpicture;
draw lft z1r---rt z1m;
pickup symbol_pen;
@@ -907,19 +1063,19 @@ beginchar("1",wd#,ht#,dp#); "Left end of single-wrapped stitches";
draw bot (w/2,h-topgap+o) -- top (w/2, -d+bottomgap-o);
fi
- symbolpic0 := currentpicture;
+ symbolpic0 := currentpicture; symbolpicwd0 := w;
labels(1r,1m,1l);
charbox; endchar;
beginchar(17,wd#,ht#,dp#); "Middle of wrapped stitches";
pickup symbol_pen;
- currentpicture := symbolpic1;
+ currentpicture := symbolpic1; currentpicture := currentpicture shifted ((w-symbolpicwd1)/2,0);
if gridfont: else:
draw bot (w/2,h-small_topgap+o) -- top (w/2, -d+small_bottomgap-o);
fi
charbox; endchar;
-beginchar(18,wd#,ht#,dp#); "Right end of wrapped stitches";
- fliphoriz(symbolpic0)(currentpicture);
+beginchar(18,decrwidth(1,0),ht#,dp#); "Right end of wrapped stitches";
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
ligtable "1":