summaryrefslogtreecommitdiff
path: root/fonts/hands
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /fonts/hands
Initial commit
Diffstat (limited to 'fonts/hands')
-rw-r--r--fonts/hands/hands.mf83
-rw-r--r--fonts/hands/handsdef.mf66
-rw-r--r--fonts/hands/mirror.mf20
-rw-r--r--fonts/hands/reverse.mf20
-rw-r--r--fonts/hands/rvmirror.mf27
5 files changed, 216 insertions, 0 deletions
diff --git a/fonts/hands/hands.mf b/fonts/hands/hands.mf
new file mode 100644
index 0000000000..2268e4542f
--- /dev/null
+++ b/fonts/hands/hands.mf
@@ -0,0 +1,83 @@
+%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% A Handy Little Font %
+% %
+% This collection produces a series of "pointing hand" dingbats %
+% in various orientations, including pointing left and right, %
+% and "reverse video" versions in the same directions. %
+% %
+% Design work was originally by Georgia K.M. Tobin, and was %
+% published in TUGBoat Vol. 10, Number 1 (1989). Unfortunately, %
+% that publishing lost all of its braces, so as printed it would %
+% not work. This version corrects all of those problems. %
+% %
+% Assembled by Norman E. Powroz, with thanks to Don Hosek, who %
+% picked out all of the errors. %
+% %
+% -- 16 May 1989 %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%
+
+%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%
+% %
+% Implementation consists of five files in total. Filenames %
+% have been shortened to fit on PCs and their ilk, as this work %
+% was done on such a beast. The filenames, and contents are: %
+% %
+% HANDS.MF -- driver file controlling all else (this file) %
+% HANDSDEF.MF -- contains the actual definition of the hand %
+% MIRROR.MF -- contains the macro to mirror-image the hand %
+% REVERSE.MF -- the macro to create "inverse video" version %
+% RVMIRROR.MF -- the macro for "inverse video mirror-image" %
+% %
+% Parameters such as size have been moved to this driver file, %
+% so that they may be changed without impacting the rest of the %
+% files. Default size is 48pt. To change it, just change the %
+% value of "size" below, and rerun this driver file. %
+% %
+% Have Fun!! %
+% %
+%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%
+
+% Setup basic parameters
+
+mode_setup;
+size=48pt#;
+font_size size;
+em#:=size; cap#:=7/10em#; desc#:=3/10em#;
+thinline#:=1/100em#;
+define_pixels(em,cap,desc);
+define_blacker_pixels(thinline);
+
+% Read the actual definition
+input handsdef;
+
+
+% The basic hand, pointing to the right
+beginchar("A",16/15em#,cap#,desc#);
+handpointing;
+endchar;
+
+% The basic hand, mirror-imaged
+beginchar("B",16/15em#,cap#,desc#);
+input mirror;
+pattern;
+handpointing;
+endchar;
+
+% The "inverse video" hand, pointing to the right
+beginchar("C",16/15em#,cap#,desc#);
+input reverse;
+pattern;
+handpointing;
+endchar;
+
+% And the "inverse video" hand, mirror-imaged
+beginchar("D",16/15em#,cap#,desc#);
+input rvmirror;
+pattern;
+handpointing;
+endchar;
+
+% That's all folks
+bye
diff --git a/fonts/hands/handsdef.mf b/fonts/hands/handsdef.mf
new file mode 100644
index 0000000000..c9f6363abc
--- /dev/null
+++ b/fonts/hands/handsdef.mf
@@ -0,0 +1,66 @@
+% handsdef.mf
+% Defines the actual pointing hand
+% Standard hand points to the right
+
+def handpointing=
+% define points for thumb and cuff
+x1=x3=1/2[0,1/15w];
+x2=x5=x4=x23=4/16w;
+y1=y2=10/15[-desc,cap];
+y3=y4=2/15[-desc,cap];
+y5=6/7[y4,y2]; y23=1/7[y4,y2];
+x6=9.75/16w;
+y6=y2;
+x7=11.25/16w;
+y7=4/5[y23,y5];
+x8=8.75/16w;
+y8=1/4[y7,y6];
+x17=14.5/16w;
+y17=9.25/15[-desc,cap];
+
+% find a point at a certain height on
+% the curve from z6 to z7
+ path dummyCurve; path dummyLine;
+ x.dummy=1/2[x8,x7];
+ y.dummy=y17;
+ dummyCurve:=z6{z5-z2}..z7..tension1.4..z8;
+ dummyLine:=z.dummy--z17;
+ z18=dummyCurve intersectionpoint dummyLine;
+
+x16=x17;
+y16=y7;
+x9=7/16w;
+y9=y8;
+x10=6/16w;
+y10=2/5[y23,y5];
+
+% find another point on the
+% curve from z6 to z7
+ x.dummy2=x5;
+ y.dummy2=y16;
+ x.dummy3:=1/2[x8,x7];
+ y.dummy3=y.dummy2;
+ dummyLine:=z.dummy3--z.dummy2;
+ z12=dummyCurve intersectionpoint dummyLine;
+
+% define points for curled fingers
+x15=x14=x19=x22=1/3[x18,x17];
+x13=x20=x21=x12;
+y15=y16;
+y13=y14=y15-(y17-y16);
+y20=y19=y13-(y17-y16);
+y21=y22=y20-(y17-y16);
+
+% pick up pen and draw whole image
+pickup pencircle scaled thinline;
+draw z1--z2--z4--z3--cycle;
+draw z5{(1,1)}..tension 1.5..z6
+ &z6{z5-z2}..z7..tension 1.4..z8
+ &z8{down}..tension 3..z9
+ &z9..tension 1.8..{left}z10;
+draw z18--z17{right}..z16--z7;
+draw z7--z15{right}..z14--z13{left}..z12;
+draw z14{right}..z19--z20{left}..z13;
+draw z19{right}..z22--z21{left}..z20;
+draw z21{(-1,-1)}..tension 1.5..z23;
+enddef;
diff --git a/fonts/hands/mirror.mf b/fonts/hands/mirror.mf
new file mode 100644
index 0000000000..10befb7ede
--- /dev/null
+++ b/fonts/hands/mirror.mf
@@ -0,0 +1,20 @@
+% pattern_mirror (for PCs, written as mirror.mf)
+def pattern=
+def endchar=
+tracingequations:=1;
+cullit;
+picture normalchar;
+normalchar:=currentpicture;
+
+picture mirrorimage;
+ mirrorimage:=normalchar
+ reflectedabout ((0,0),(0,h))
+ shifted (w,0);
+currentpicture:=mirrorimage;
+scantokens extra_endchar;
+chardx:=w;
+shipit;
+if displaying>0: showit; fi
+endgroup;
+enddef;
+enddef;
diff --git a/fonts/hands/reverse.mf b/fonts/hands/reverse.mf
new file mode 100644
index 0000000000..e182755265
--- /dev/null
+++ b/fonts/hands/reverse.mf
@@ -0,0 +1,20 @@
+% pattern_rev (for PCs, written as reverse.mf)
+def pattern=
+def endchar=
+tracingequations:=1;
+cullit;
+picture phaseone; phaseone=currentpicture;
+currentpicture:=nullpicture;
+fill (0,-desc)--(w,-desc)--(w,cap)--(0,cap)--cycle;
+cullit;
+
+picture phasetwo;
+phasetwo=currentpicture-phaseone;
+currentpicture:=phasetwo;
+scantokens extra_endchar;
+chardx:=w;
+shipit;
+if displaying>0: showit; fi
+endgroup;
+enddef;
+enddef;
diff --git a/fonts/hands/rvmirror.mf b/fonts/hands/rvmirror.mf
new file mode 100644
index 0000000000..19714abe81
--- /dev/null
+++ b/fonts/hands/rvmirror.mf
@@ -0,0 +1,27 @@
+% pattern_revmirror.mf (for PCs written as rvmirror.mf)
+def pattern=
+def endchar=
+tracingequations:=1;
+cullit;
+
+picture phaseone;
+phaseone=currentpicture;
+currentpicture:=nullpicture;
+fill (0,-desc)--(w,-desc)--(w,cap)--(0,cap)--cycle;
+cullit;
+
+picture phasetwo;
+phasetwo=currentpicture-phaseone;
+
+picture phasethree;
+phasethree:=phasetwo
+ reflectedabout ((0,0),(0,h))
+ shifted (w,0);
+currentpicture:=phasethree;
+scantokens extra_endchar;
+chardx:=w;
+shipit;
+if displaying>0: showit; fi
+endgroup;
+enddef;
+enddef;