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.mf223
1 files changed, 150 insertions, 73 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 e39d923d6bd..e0fb61c80af 100644
--- a/Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf
+++ b/Master/texmf-dist/fonts/source/public/knitting/knit_symbols.mf
@@ -1,4 +1,4 @@
-% Date: 2010/08/10
+% Date: 2019/04/05
% Don't flash pictures of the characters as you draw them.
% This is dizzying, and UNIX can't do it anyway.
@@ -29,41 +29,80 @@ enddef;
purltype = 0;
gridtype = 1;
foretype = 2;
-bothtype = 3;
+bothtype = 3; % Both the grid and the symbols
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";
+ % extra_endchar := extra_endchar & " pickup pencircle scaled 0.2pt; if w>0: draw (0,-d)--(0,h); draw (w,-d)--(w,h); fi ";
fi
+def nogrid_charbox =
+ if (fonttype = purltype) or (fonttype = gridtype):
+ currentpicture := nullpicture;
+ fi
+ enddef;
+
+def leftgrid_charbox =
+ if (fonttype = purltype): currentpicture := nullpicture; fi
+ if (fonttype = gridtype): currentpicture := nullpicture; fi
+ if (fonttype = gridtype) or (fonttype = bothtype):
+ pickup pensquare scaled gridwidth;
+ draw lft (w,h)--(0,h);
+ draw (0,h)--(0,-d);
+ draw (0,-d)--lft (w,-d);
+ fi
+enddef;
+
+def rightgrid_charbox =
+ if (fonttype = purltype): currentpicture := nullpicture; fi
+ if (fonttype = gridtype): currentpicture := nullpicture; fi
+ if (fonttype = gridtype) or (fonttype = bothtype):
+ pickup pensquare scaled gridwidth;
+ draw (w,h)--rt (0,h);
+ draw (w,h)--(w,-d);
+ draw rt (0,-d)--(w,-d);
+ fi
+enddef;
+
+def topbotgrid_charbox =
+ if (fonttype = purltype): currentpicture := nullpicture; fi
+ if (fonttype = gridtype): currentpicture := nullpicture; fi
+ if (fonttype = gridtype) or (fonttype = bothtype):
+ pickup pensquare scaled gridwidth;
+ draw (w,h)--(0,h);
+ draw (0,-d)--(w,-d);
+ fi
+enddef;
+
if gridfont:
def charbox =
- if fonttype = purltype:
- currentpicture := nullpicture;
- else:
- if fonttype = gridtype: currentpicture := nullpicture; fi
- if (fonttype = gridtype) or (fonttype = bothtype):
- 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;
- 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;
+ if fonttype = purltype:
+ currentpicture := nullpicture;
+ fi
+ if fonttype = gridtype: currentpicture := nullpicture; fi
+ if (fonttype = gridtype) or (fonttype = bothtype):
+ 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;
+ 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
fi
- fi
enddef;
else:
-def charbox =
- if fonttype = purltype:
- currentpicture := nullpicture;
- fi
- enddef;
+def charbox = nogrid_charbox enddef;
fi
def purlbox = charbox; purlfill; enddef;
+% We don't need any symbols in the counting fonts because we will never
+% actually show them and clearing them saves a bit of disk space.
+if fonttype = counttype:
+ def charbox = currentpicture := nullpicture; enddef;
+ def purlbox = currentpicture := nullpicture; enddef;
+fi
+
picture symbolpic[];
path symbolpath[];
@@ -86,7 +125,30 @@ def definearrow(text thepath, arrowlength, endpath) =
--arrowpoint + ((1,0) rotated (arrowdir-150) scaled arrowlength)
;
enddef;
-
+
+% Error symbols (glyphs that should not happen)
+
+if known debugcables: else: boolean debugcables; debugcables = true; fi
+
+picture errorsymbol[];
+for k=1,2,3:
+ errorsymbol[k] = nullpicture;
+endfor
+if debugcables:
+ errorslashes = 4;
+ if (fonttype=foretype) or (fonttype=bothtype):
+ for j=1,2,3:
+ for k=(1/errorslashes) step (1/errorslashes) until 0.99:
+ addto errorsymbol[j] doublepath ((0,k[-dp,ht])--(k[wd,0],.001pt+ht)) withpen (pencircle scaled symbolwidth);
+ addto errorsymbol[j] doublepath ((j*wd,k[-dp,ht])--(k[j*wd,(j-1)*wd],.001pt-dp)) withpen (pencircle scaled symbolwidth);
+ endfor
+ for k=0 step (1/errorslashes) until (j-1):
+ addto errorsymbol[j] doublepath ((k*wd,-dp)--((k+1)*wd,ht)) withpen (pencircle scaled symbolwidth);
+ endfor
+ endfor
+ fi
+fi
+
% Arrow symbols
beginchar("s",wd#,ht#,dp#); "Slip one left";
@@ -164,7 +226,7 @@ beginchar("O",incrwidth(0,1),ht#,dp#); "Yarn over";
penpos3(symbolwidth,270);
penpos4(symbolwidth,180);
penstroke z1e..z2e..z3e..z4e..cycle;
- charbox; endchar;
+ purlbox; endchar;
beginchar("@",wd#,ht#,dp#); "Bead";
pickup symbol_pen;
@@ -177,7 +239,6 @@ beginchar("@",wd#,ht#,dp#); "Bead";
charbox; endchar;
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;
@@ -201,12 +262,12 @@ beginchar(ditto,incrwidth(0,0),ht#,dp#); "Wrap and turn";
definearrow(symbolpath0)((x4-x2)/2)(symbolpath1);
draw symbolpath0;
draw symbolpath1;
- fi
symbolpic0 := currentpicture; symbolpicwd0 := w;
-endchar;
+ nogrid_charbox; endchar;
beginchar(19,incrwidth(0,0),ht#,dp#); "Reverse wrap and turn";
- fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
- endchar;
+ fliphoriz(symbolpic0)(currentpicture);
+ currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
+ nogrid_charbox; endchar;
ligtable
ditto:
@@ -324,15 +385,12 @@ beginchar(4,wd#,ht#,dp#); "Purl make N from 1";
purlbox; endchar;
beginchar("U",incrwidth(0,1),ht#,dp#); "Cast on";
- if fonttype <> purltype:
pickup symbol_pen;
bot y1 = bot y3 = -d+bottomgap;
x1 = 0; x3 = w; x2 = w/2; top y2 = h-topgap;
draw z1{right}..z2{left}..z3{right};
- fi
- endchar;
+ nogrid_charbox; endchar;
beginchar("f",decrwidth(1,0),ht#,dp#); "Bind off knitwise";
- if fonttype <> purltype:
pickup symbol_pen;
x3-x1=wd; 0.5[x1,x3]=w/2; x2 = 0.5[x1,x3];
y1 = y3 = (h-d)/2; top y2 = h-topgap;
@@ -340,14 +398,13 @@ beginchar("f",decrwidth(1,0),ht#,dp#); "Bind off knitwise";
symbolpath0 := z1..z2{right}..z3;
draw symbolpath0;
%draw z4--bot z1;
- fi
- endchar;
+ nogrid_charbox; endchar;
beginchar("F",decrwidth(1,0),ht#,dp#); "Bind off purlwise";
if fonttype <> purltype:
pickup purl_symbol_pen;
draw symbolpath0;
fi
- purlfill; endchar;
+ nogrid_charbox; purlfill; endchar;
beginchar("Z",incrwidth(1,3),ht#,dp#); "Knit one doubly elongated";
pickup symbol_pen;
0.5[z1,z7] = top (w/2, -d+min_bottomgap);
@@ -427,43 +484,26 @@ beginchar("9",incrwidth(1,2),ht#,dp#); "CYCA knit one elongated";
beginchar(25,wd#/2,ht#,dp#); "Left end of a wide increase";
- if fonttype <> purltype:
pickup pensquare xscaled wideinctip yscaled wideincline;
z1 = (w+cableextend,(h-topgap-d+bottomgap)/2);
x2 = w/3; top y2 = h-min_topgap+o;
fill bot lft z2{down}..bot z1{right}--top z1{left}..top rt z2{up}--top lft z2---cycle;
- if gridfont:
- if fonttype = gridtype: currentpicture := nullpicture; fi
- if (fonttype = gridtype) or (fonttype = bothtype):
- pickup pensquare scaled gridwidth;
- draw lft (w,h)--(0,h);
- draw (0,h)--(0,-d);
- draw (0,-d)--lft (w,-d);
- fi fi fi
symbolpic0 := currentpicture; symbolpicwd0 := w;
- endchar;
+ leftgrid_charbox; endchar;
beginchar(22,wd#/2,ht#,dp#); "Extender for a wide increase/decrease";
- if fonttype <> purltype:
z1 = (w+cableextend,(h-topgap-d+bottomgap)/2);
x2 = 0-cableextend; y2 = y1;
pickup pensquare scaled wideincline;
draw rt z2 -- lft z1;
- if gridfont:
- if fonttype = gridtype: currentpicture := nullpicture; fi
- if (fonttype = gridtype) or (fonttype = bothtype):
- pickup pensquare scaled gridwidth;
- draw lft (w,h) -- rt (0,h); draw rt (0,-d) -- lft (w,-d);
- fi fi fi
- endchar;
+ topbotgrid_charbox; endchar;
beginchar(26,wd#/2,ht#,dp#); "Right end of a wide increase";
- fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0); endchar;
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0); rightgrid_charbox; endchar;
beginchar(27,wd#/2,ht#,dp#); "Left end of a wide decrease";
- flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0); endchar;
+ flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0); leftgrid_charbox; endchar;
beginchar(28,wd#/2,ht#,dp#); "Right end of a wide decrease";
- fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0); flipvert(currentpicture)(currentpicture);endchar;
+ fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0); flipvert(currentpicture)(currentpicture); rightgrid_charbox; endchar;
beginchar(29,wd#,ht#,dp#); "Middle of a wide increase";
- if fonttype <> purltype:
pickup pensquare xscaled wideinctip yscaled wideincline;
z1 = (-cableextend,(h-topgap-d+bottomgap)/2);
z3 = (w+cableextend,(h-topgap-d+bottomgap)/2);
@@ -472,16 +512,12 @@ beginchar(29,wd#,ht#,dp#); "Middle of a wide increase";
fill bot lft z2{up}..bot z1{left}--top z1{right}..top rt z2---bot rt z2--cycle;
%draw z3{left}..z2{down};
fill bot rt z2{up}..bot z3{right}--top z3{left}..top lft z2---bot lft z2--cycle;
- if gridfont:
- if fonttype = gridtype: currentpicture := nullpicture; fi
- if (fonttype = gridtype) or (fonttype = bothtype):
- pickup pensquare scaled gridwidth;
- draw lft (w,h) -- rt (0,h); draw rt (0,-d) -- lft (w,-d);
- fi fi fi
symbolpic0 := currentpicture; symbolpicwd0 := w;
+ topbotgrid_charbox;
endchar;
beginchar(30,wd#,ht#,dp#); "Middle of a wide decrease";
flipvert(symbolpic0)(currentpicture); currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
+ topbotgrid_charbox;
endchar;
if 5*wd# < symbolmaxwd#:
@@ -498,8 +534,7 @@ beginchar(31,if fonttype = counttype: decrwidth(5,1) else: 5wd# fi,ht#,dp#); "Ma
fill bot lft z2---top lft z2..top z4{right}..top lft z1{up}--top rt z1---bot rt z1..bot z4{left }..bot rt z2{down}--cycle;
fill bot rt z3---top rt z3..top z5{left }..top rt z1{up}--top lft z1---bot lft z1..bot z5{right}..bot lft z3{down}--cycle;
- charbox;
- endchar;
+ charbox; endchar;
fi
beginchar("~",incrwidth(0,0),ht#,dp#); "Empty box (spacer)"; endchar;
@@ -554,11 +589,10 @@ beginchar("M",incrwidth(0,1),ht#,dp#); "Make one purlwise";
% purlbox; endchar;
beginchar("|",if fonttype <> counttype: overlinewd# else: 0 fi,ht#,dp#); "Divider";
- if fonttype <> purltype:
+ if (fonttype = foretype) or (fonttype = bothtype):
fill(0,-d-gridwidth/2-purlextend)--(0,h+gridwidth/2+purlextend)
--(w,h+gridwidth/2+purlextend)--(w,-d-gridwidth/2-purlextend)
--cycle;
- if gridfont: if fonttype = gridtype: currentpicture := nullpicture; fi fi
fi
endchar;
@@ -662,8 +696,18 @@ beginchar("<",decrwidth(2,1),ht#,dp#); "SSK or left-slant cable";
symbolpic0 := currentpicture; symbolpicwd0 := w;
charbox; endchar;
beginchar(">",decrwidth(2,1),ht#,dp#); "k2tog or right-slant cable";
- fliphoriz(symbolpic0)(currentpicture); currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
+ fliphoriz(symbolpic0)(currentpicture);
+ currentpicture := currentpicture shifted (-(w-symbolpicwd0)/2,0);
charbox; endchar;
+
+beginchar("0",incrwidth(1,2),ht#,dp#); "Make 2 from 1";
+ flipvert(symbolpic0)(currentpicture);
+ charbox; endchar;
+beginchar("#",incrwidth(1,2),ht#,dp#); "Make 2 from 1";
+ flipvert(symbolpic0)(currentpicture);
+ fliphoriz(currentpicture)(currentpicture);
+ charbox; endchar;
+
beginchar(";",decrwidth(2,1),ht#,dp#); "P2tog";
pickup purl_symbol_pen;
draw symbolpath0;
@@ -811,9 +855,11 @@ beginchar("Y",incrwidth(1,3),ht#,dp#); "Make 3 from 1 with YO center";
beginchar("E",incrwidth(1,3),ht#,dp#); "make 3 from 1 with purl center";
pickup symbol_pen;
- if fonttype <> purltype:
- currentpicture := symbolpic0; currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
- else:
+ if (fonttype = foretype) or (fonttype = bothtype):
+ currentpicture := symbolpic0; currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
+ fi
+ charbox;
+ if (fonttype = purltype):
z1 = point 0 of symbolpath0;
z2 = point 1 of symbolpath0;
z3 = point 2 of symbolpath0;
@@ -821,6 +867,21 @@ beginchar("E",incrwidth(1,3),ht#,dp#); "make 3 from 1 with purl center";
fi
endchar;
+beginchar("&",incrwidth(1,3),ht#,dp#); "make 3 from 1 with knit center";
+ pickup symbol_pen;
+ if (fonttype = foretype) or (fonttype = bothtype):
+ currentpicture := symbolpic0; currentpicture := currentpicture shifted ((w-symbolpicwd0)/2,0);
+ fi
+ charbox;
+ if (fonttype = purltype):
+ z1 = point 0 of symbolpath0;
+ z2 = point 1 of symbolpath0;
+ z3 = point 2 of symbolpath0;
+ fill z1--z2--z3--%z1--(0,h)--
+ (w,h)--(w,-d)--(0,-d)--(0,h)--cycle;
+ fi
+ endchar;
+
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);
@@ -940,7 +1001,7 @@ beginchar("a",decrwidth(3,1),ht#,dp#); "LRC";
trianglecharwd# = 19/3 pt#;
beginchar("}", trianglecharwd#, 6.25pt#, 0); "Triangle pointing right";
- if (fonttype = foretype) or (fonttype = bothtype) or (fonttype = counttype):
+ if (fonttype = foretype) or (fonttype = bothtype):
x1=x2=w-x3-max(purlextend, 0.5gridwidth)=4/3pt; y3=.5h;
y1-y3=y3-y2;
y1-y2 = 1.3*(x3-x1);
@@ -1084,3 +1145,19 @@ ligtable 18:
"1" |=: 18,
18 =:| 17;
+% Outlines
+
+if gridfont:
+
+beginchar(5,wd#,ht#,dp#); "Top and bottom outlines";
+ topbotgrid_charbox; endchar;
+
+beginchar(6,0,ht#,dp#); "Vertical grid line";
+ pickup pensquare scaled gridwidth;
+ if (fonttype = gridtype) or (fonttype = bothtype):
+ draw (0,-d)--(0,h);
+ fi
+endchar;
+
+fi
+