diff options
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.mf | 223 |
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 + |