summaryrefslogtreecommitdiff
path: root/fonts/dingbat
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/dingbat
Initial commit
Diffstat (limited to 'fonts/dingbat')
-rw-r--r--fonts/dingbat/README36
-rw-r--r--fonts/dingbat/ark10.mf320
-rw-r--r--fonts/dingbat/dingbat.dtx329
-rw-r--r--fonts/dingbat/dingbat.ins58
-rw-r--r--fonts/dingbat/dingbat.mf693
-rw-r--r--fonts/dingbat/dingbat.pdfbin0 -> 130376 bytes
-rw-r--r--fonts/dingbat/dingbat.tex48
7 files changed, 1484 insertions, 0 deletions
diff --git a/fonts/dingbat/README b/fonts/dingbat/README
new file mode 100644
index 0000000000..954410faa4
--- /dev/null
+++ b/fonts/dingbat/README
@@ -0,0 +1,36 @@
+ +---------------------------------+
+ | DINGBAT: |
+ |A LaTeX interface to the ark10.mf|
+ | and dingbat.mf symbol fonts |
+ | |
+ | By Scott Pakin, pakin@uiuc.edu |
+ +---------------------------------+
+
+Installation
+------------
+
+There's nothing special about building dingbat:
+
+ latex dingbat.ins <== Generate dingbat.sty
+ latex dingbat.dtx <== Produce the documentation (dingbat.dvi)
+ makeindex -s gind.ist dingbat <== Generate an index
+ latex dingbat.dtx <== Incorporate the index into the document
+
+If you're new to this, see
+http://www.tex.ac.uk/cgi-bin/texfaq2html?label=instpackages for more
+information on installing packages.
+
+
+Copyright and license
+---------------------
+Copyright (C) 2001 Scott Pakin, pakin@uiuc.edu
+
+This package may be distributed and/or modified under the conditions
+of the LaTeX Project Public License, either version 1.2 of this
+license or (at your option) any later version. The latest version of
+this license is in:
+
+ http://www.latex-project.org/lppl.txt
+
+and version 1.2 or later is part of all distributions of LaTeX version
+1999/12/01 or later.
diff --git a/fonts/dingbat/ark10.mf b/fonts/dingbat/ark10.mf
new file mode 100644
index 0000000000..751a17cd8f
--- /dev/null
+++ b/fonts/dingbat/ark10.mf
@@ -0,0 +1,320 @@
+% ark10.mf file
+% Copyright (c) 1988 by Arthur M. Keller
+% The ARK font was initially done in MF79
+% by Scott Kim. It was converted to (new) MF by N.N. Billawala
+% of Metamarks.
+% It contains 10 characters.
+
+
+rulepen:=pensquare scaled 1; % makes one pixel proofing lines
+mode_setup;
+designsize:=10pt#;
+width#:=10pt#;
+height#:=7.5pt#;
+depth#:=2.5pt#;
+ define_pixels(width,height,depth);
+extra_beginchar:=extra_beginchar&"save p;path p[];";
+
+% ***** general macros *****
+extra_beginchar:=extra_beginchar&"w#:=charwd;"; % for adjust def
+extra_endchar:=extra_endchar&"wsaved:=w; w:=r-l;"; % for adjust def
+
+letter_fit#:=letter_fit:=0;
+def adjust(expr left_adjustment,right_adjustment) =
+ l:=-round(left_adjustment*hppp)-letter_fit;
+ interim xoffset:=-l;
+ charwd:=charwd+2letter_fit#+left_adjustment+right_adjustment;
+ r:=l+round(charwd*hppp);
+ w:=r-round(right_adjustment*hppp)-letter_fit;
+ enddef;
+
+def makebox(text rule)= % makes a reference box for screen and proof characters
+ for y=0,h.o_,-d.o_: rule((l,y),(r,y)); endfor % horizontals
+ for x=l,r: rule((x,-d.o_),(x,h.o_)); endfor % outer verticals
+ if charic<>0: rule((wsaved+charic*hppp,h.o_),(wsaved+charic*hppp,.5h.o_));fi
+enddef;
+
+% ***** pencils *****
+
+line_thickness:=max(1,.3pt); % thickness of character lines
+pencil_thickness#:=.6width#; % pencil thickness
+tip_length#:=.5width#; % length of pencil tips
+lead_length#:=.3tip_length#; % amount of pencil tip lead showing
+tip_curve:=.2; % curvature of the pencil tip
+lead_curve:=.1; % curvature of the pencil tip lead part
+bottom_showing:=.7; % proportion of bottom height/width in pencil
+
+def pencil_pen=pencircle scaled line_thickness; enddef;
+define_pixels(pencil_thickness,tip_length,lead_length);
+
+
+% The pencil keeps a general vertical size no matter what the rotation angle is.
+% The width is determined after the character is drawn.
+% Adjustments can be made to the height of the pencil(size)
+% angle of pencil from upright or 90 degrees(rotation)
+% thickness or width of the pencil(pencil_thickness)
+% length of the tip of the pencil(pencil_tip)
+% size of the lead showing in the tip(lead_length)
+% the curvature of the pencil tip(tip_curve) as a percentage of the tip_length
+% the curvature of the lead tip(lead_curve) as a percentage of the lead_length
+% the size of the bottom part of the pencil(bottom_showing)
+
+vardef pencil(expr tip,size,rotation)=
+ save x,y,p,t; path p[]; transform t; pickup pencil_pen;
+ z1=tip+(0,size/(sind abs(90+rotation))); % bottom
+ z2=z1-(0,.5pencil_thickness);
+ for n:=0 upto 5:z[10+n]=z2+(.5pencil_thickness,0) rotated (n*60); endfor
+ for n:=0 upto 5:z[10+n]a=.45[z2,z[10+n]]; endfor % bottom lead
+ z2 transformed t=z1-(0,.5*bottom_showing*pencil_thickness);
+ z11 transformed t=z11; z12 transformed t=z12;
+ z113=z13 transformed t; z114=z14 transformed t;
+ z115=z15 transformed t; z110=z10 transformed t;
+ z3=tip+(0,tip_length); penpos3(pencil_thickness,0); % tip
+ z4=tip_curve[z3,tip];
+ p1=z3r...z4{left}...z3l;
+ z20=(x114,ypart tip); z21=(x115,ypart tip);
+ z22=p1 intersectionpoint (z114--z20);
+ z23=p1 intersectionpoint (z115--z21);
+ z5=tip+(0,lead_length); % lead
+ y30=y31=y5; z30=whatever[tip,z3l]; z31=whatever[tip,z3r];
+ z6=lead_curve[z5,tip];
+ p2=(z10--z11--z12--z13--z14--z15--cycle) transformed t; % pencil bottom
+ p3=z113--z3l--tip--z3r--z110; % pencil
+ p4=z114--z22;
+ p5=z115--z23;
+ p6=(z10a..z11a..z12a..z13a..z14a..z15a..cycle) transformed t; % bottom lead
+ p7=tip--z31...z6{left}...z30--cycle; % lead tip
+ for n:=1 upto 5: draw p[n] rotatedaround (tip,rotation); endfor
+ for n:=6,7: fill p[n]rotatedaround (tip,rotation); endfor
+enddef;
+
+% An amount for placing the tip of the pencil
+def tip_adjust=
+ if abs(tip_length*cosd (90+rotation))>abs(.5*pencil_thickness):0
+ else:abs(.5*pencil_thickness-abs(tip_length*cosd (90+rotation)))fi enddef;
+
+"small pencil";
+ rotation:=55; % angle of pencil
+ pencil_width#:=
+ pencil_thickness#+ % base or minimum width
+ (height#+depth#) % vertical pencil dimension
+ *abs(cosd(90+rotation)/sind(90+rotation)) % * rotation
+ -pencil_thickness#*abs(cosd(90+rotation)); % - adjustment to thickness
+
+ beginchar(oct"120",pencil_width#,height#,depth#);
+ z0=(if rotation>0:w- else:0+ fi tip_adjust,0);
+ pencil(z0,h+d,rotation);
+ adjust(.2width#,.2width#);
+ endchar;
+
+"large pencil";
+ rotation:=20; % angle of pencil
+ pencil_width#:=
+ pencil_thickness#+ % base or minimum width
+ (height#+depth#) % vertical pencil dimension
+ *abs(cosd(90+rotation)/sind(90+rotation)) % * rotation
+ -pencil_thickness#*abs(cosd(90+rotation)); % - adjustment to thickness
+
+ beginchar(oct"127",pencil_width#,2.8height#,2.8depth#);
+ z0=(if rotation>0:w- else:0+ fi tip_adjust,0);
+ pencil(z0,h+d,rotation);
+ adjust(.2width#,.2width#);
+ endchar;
+
+
+% ***** return *****
+def return_pen=pencircle scaled line_thickness; enddef;
+
+
+"return";
+ beginchar(oct"103",.4width#,.6height#,.6depth#);
+ save curvature,arrowhead,base_length;
+ curvature1=angle((h+d),-.25(h+d));
+ curvature2=angle(-(h+d),-.25(h+d));
+ arrowhead=.2h; % length of arrowhead
+ pickup return_pen; % the pen used in this char
+ top lft z1=(0,h); bot lft z3=(0,-d); rt z2=(w,.5[y1,y3]);
+ p1=z1{dir curvature1}...z2{down}...z3{dir curvature2};
+ z4=z3+(arrowhead,0) rotated curvature2;
+ z5=z3+(arrowhead,0) rotated (curvature2+120);
+ z6=z3+(arrowhead,0) rotated (curvature2-120);
+ draw p1; filldraw z4--z5--z6--cycle;
+ adjust(.3width#,.2width#);
+ endchar;
+
+
+
+% ***** eye *****
+"eye";
+ beginchar(oct"105",1.2width#,.75height#,depth#);
+ save limit; pair limit; % keeps curve bounded
+ randomseed:=.71; % iris shape
+ pickup pencil_pen; % the pen used in this char
+ lft x1=0; x0=x2=x4=.5w; rt x3=w;
+ bot y2=0; y0=y1=y3=.5h; top y4=h;
+ limit=if abs(y2-y1)>abs(x2-x1):down else:(0,0) fi;
+ draw z1{limit}...z2{right}...z3{-limit}--
+ z3+(0,eps){-limit}...z4{left}...z1+(0,eps){limit}--cycle; % outer shape
+ draw z2..(.5[z0,z3])..z4..(.5[z0,z1])..cycle; % "retina"
+ pickup pencircle; % number and shape of pupil lines can be altered here
+ for n:=0 step 25 until 360:
+ draw z0--(z0+(.9abs(y4-y0),0)rotated n);
+ endfor
+ for n:=60 step 60 until 360:
+ draw z0--(z0+(.9abs(y4-y0),0)rotated (n*(uniformdeviate 5)));
+ endfor
+ pickup pencircle scaled .10h;
+ for n:=12 step 30 until 375:
+ draw z0--(z0+((((uniformdeviate 2)+2)*.15abs(y4-y0)),0)rotated n);
+ endfor
+ adjust(.2width#,.2width#);
+ endchar;
+
+
+% ***** hands *****
+handheight#:=6.5pt#;
+handdepth#:=3pt#;
+ define_pixels(handheight,handdepth);
+cuff_width:=.15width; % thickness of the cuff
+shirt_width:=.75cuff_width; % thickness of the sleeve
+digit:=round(.2handheight); % thickness of the fingers
+indent:=.05width; % finger indent increment
+knuckles:=2indent; % length of knuckles
+finger_tips:=3indent; % length of finger tips
+
+def handpen=pickup pencircle scaled .2pt; enddef;
+
+% Makes an open horizontal oval shape; path moves clockwise
+vardef finger(expr tip,alength)suffix $=
+ save x,y,tips; boolean tips; tips=if str$="tips":true else:false fi;
+ z2=tip; x1=x3=x2 if tips:+finger_tips else:-knuckles fi; x4=x3-alength;
+ y1=y2+.5digit; y1-y3=digit; y4=y3;
+ if tips:z4..z3{left}...z2...z1{right} else:z1{right}...z2...z3{left}...z4 fi
+enddef;
+
+% Points used in the hand characters
+def hand_points=
+ y1=y2=h; top y3=top y4=y2-(.05h+1); x1=x5=0; x2=x3=x6=x7=x1+cuff_width;% cuff
+ y5=y6=0; bot y7=bot y8=y5+(.05h+1); x4=x8=x1a=x3a=x2+shirt_width;
+ y1a=y3-(.1h); y2a=y3; x2a=.3[x1a,w-3indent]; % wrist
+ y3a=y1a-.5h; y4a=y7+(.05h+1); y5a=.2[y4a,y2a]; x4a=x5a=.45[x3a,x5d];
+ y1b=y3-.5digit; y2b+digit=y3b+2digit=y4b+3digit=y1b; y5b=y4b; % knuckles
+ x1b+2indent=x2b+indent=x3b=x4b+indent=w; x5b=x3b+2knuckles;
+ for n:=1 upto 4:y[n]c=y[n]b; endfor % tips
+ x1c=x2c=x3c=x4c-indent=0[x3d,x3b];
+ z3d=(.5[x3a,x3b],-d); z2d=z3d+(.5digit,.3d); z4d=z2d-(digit,0); % up thumb
+ z1d=(x2d-indent,.5[y2d,y4b-.5digit]); z5d=z1d-(1.5digit,0);
+ z1e=z5d+(0,.5digit); z2e=(.2[x1e,x3b],y1e); % down thumb
+ z5e=(.55[x3c,x3b],y3b-.5digit);
+ z3e=.4[z2e,z5e]+(.55digit,0)rotated(angle(z5e-z2e)-90);
+ z4e-z3e=whatever*(z5e-z2e); y4e=y4b;
+ z6e=z3e+(1.1digit,0)rotated(angle(z5e-z2e)+90); z7e=z6e-(.5knuckles,0);
+ z8e=(1[x3a,x5d],y3b);
+ enddef;
+
+def cuff(expr trans)=
+ p10=z1--z2--z6--z5--cycle; fill p10 transformed trans; % cuff
+ p11=z3--z4--z8--z7; draw p11 transformed trans; % sleeve
+ enddef;
+
+"left thumbs down";
+ beginchar(oct"104",1.2*width#,handheight#,handdepth#);
+ transform t[]; t1=identity shifted (0,-.1h);
+ handpen hand_points;
+ cuff(t1); % cuff
+ p1=z1a{right}...z2a{right}...finger(z1b,2.5indent); % finger
+ p2=finger(z2b,2.5indent); % finger
+ p3=finger(z3b,4.5indent); % finger
+ p4=finger(z4b,2.5indent)... % finger
+ z1d{down}...z2d{down}...z3d...z4d{up}...z5d{z4a-z3d}...z3a{left};% thumb
+ for n:=1 upto 4: draw p[n] transformed t1; endfor
+ adjust(.2width#,.2width#);
+ endchar;
+
+"right thumbs down";
+ beginchar(oct"144",1.2*width#,handheight#,handdepth#);
+ transform t[];
+ t1=identity reflectedabout ((.5w,0),(.5w,h)) shifted (0,-.1h);
+ handpen hand_points;
+ cuff(t1); % cuff
+ p1=z1a{right}...z2a{right}...finger(z1b,2.5indent); % finger
+ p2=finger(z2b,2.5indent); % finger
+ p3=finger(z3b,4.5indent); % finger
+ p4=finger(z4b,2.5indent)... % finger
+ z1d{down}...z2d{down}...z3d...z4d{up}...z5d{z4a-z3d}...z3a{left};% thumb
+ for n:=1 upto 4: draw p[n] transformed t1; endfor
+ adjust(.2width#,.2width#);
+ endchar;
+
+"left thumbs up";
+ beginchar(oct"125",1.2*width#,handheight#,handdepth#);
+ transform t[];
+ t1=identity reflectedabout ((0,.5h),(w,.5h)) shifted (0,-.1h);
+ handpen hand_points;
+ cuff(t1); % cuff
+ p1=z1a{right}...z2a{right}...finger(z1b,0)--finger(z1c,0)tips; % finger
+ p2=finger(z2b,0)--finger(z2c,0)tips; % finger
+ p3=finger(z3b,0)--finger(z3c,0)tips; % finger
+ p4=finger(z4c,0)tips--finger(z4b,0){left}... % finger
+ z1d{down}...z2d{down}...z3d...z4d{up}...z5d{z4a-z3d}...z4a...z5a{up};
+ p5=z3a--z4a; % wrist
+ for n:=1 upto 5: draw p[n] shifted (0,-.07h) transformed t1; endfor
+ adjust(.2width#,.2width#);
+ endchar;
+
+"right thumbs up";
+ beginchar(oct"165",1.2*width#,handheight#,handdepth#);
+ transform t[];
+ t1=identity rotatedaround ((.5w,.5h),180) shifted (0,-.1h);
+ handpen hand_points;
+ cuff(t1); % cuff
+ p1=z1a{right}...z2a{right}...finger(z1b,0)--finger(z1c,0)tips; % finger
+ p2=finger(z2b,0)--finger(z2c,0)tips; % finger
+ p3=finger(z3b,0)--finger(z3c,0)tips; % finger
+ p4=finger(z4c,0)tips--finger(z4b,0){left}... % finger
+ z1d{down}...z2d{down}...z3d...z4d{up}...z5d{z4a-z3d}...z4a...z5a{up};
+ p5=z3a--z4a; % wrist
+ for n:=1 upto 5: draw p[n] shifted (0,-.07h) transformed t1; endfor
+ adjust(.2width#,.2width#);
+ endchar;
+
+"left hand pointing right";
+ beginchar(oct"122",1.2*width#,handheight#,handdepth#);
+ transform t[];
+ t1=identity reflectedabout ((0,.5h),(w,.5h)) shifted (0,-.1h);
+ handpen hand_points;
+ cuff(t1); % cuff
+ z1f=(z2e{right}...z3e{z5e-z2e}...z5e{left}...z6e{z2e-z5e})
+ intersectionpoint ((0,y4b-.5digit)--(w,y4b-.5digit));
+ p1=z1a{right}...z2a{right}...finger(z1b,0)--finger(z1c,0)tips; % finger
+ p2=finger(z2b,0)--finger(z2c,0)tips; % finger
+ p3=finger(z3b,0)--finger(z3c,0)tips; % finger
+ p4=z5e--finger(z5b,0)--z1f; % finger
+ p5=z3a{right}...z1e{right}...z2e{right}...z3e{z5e-z2e}...
+ z4e{z5e-z2e}...z5e{left}...z6e{z2e-z5e} & z6e--z7e{dir 120}..z8e;
+ w:=w+2knuckles;
+ for n:=1 upto 5: draw p[n] shifted (0,-.07h) transformed t1; endfor
+ adjust(.2width#,.35width#);
+ endchar;
+
+"right hand pointing left";
+ beginchar(oct"114",1.2*width#,handheight#,handdepth#);
+ transform t[];
+ t1=identity rotatedaround ((.5w,.5h),180) shifted (0,-.1h);
+ handpen hand_points;
+ cuff(t1); % cuff
+ z1f=(z2e{right}...z3e{z5e-z2e}...z5e{left}...z6e{z2e-z5e})
+ intersectionpoint ((0,y4b-.5digit)--(w,y4b-.5digit));
+ p1=z1a{right}...z2a{right}...finger(z1b,0)--finger(z1c,0)tips; % finger
+ p2=finger(z2b,0)--finger(z2c,0)tips; % finger
+ p3=finger(z3b,0)--finger(z3c,0)tips; % finger
+ p4=z5e--finger(z5b,0)--z1f; % finger
+ p5=z3a{right}...z1e{right}...z2e{right}...z3e{z5e-z2e}...
+ z4e{z5e-z2e}...z5e{left}...z6e{z2e-z5e} & z6e--z7e{dir 120}..z8e;
+ w:=w+2knuckles;
+ for n:=1 upto 5: draw p[n] shifted (0,-.07h) transformed t1; endfor
+ adjust(.35width#,.2width#);
+ endchar;
+
+end
+
diff --git a/fonts/dingbat/dingbat.dtx b/fonts/dingbat/dingbat.dtx
new file mode 100644
index 0000000000..a30fb90400
--- /dev/null
+++ b/fonts/dingbat/dingbat.dtx
@@ -0,0 +1,329 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2001 Scott Pakin <pakin@uiuc.edu>
+% -------------------------------------------------------
+%
+% This package may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.2 or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% \fi
+% \iffalse
+%% File: dingbat.dtx Copyright (C) 2001 Scott Pakin <pakin@uiuc.edu>
+%
+%<package>\NeedsTeXFormat{LaTeX2e}
+%<package>\ProvidesPackage{dingbat}
+%<package> [2001/04/27 v1.00 Hands and other dingbats]
+%<uarkfd>\ProvidesFile{uark.fd}
+%<uarkfd> [2001/04/27 v1.00 Font definitions for the ark10 font]
+%<udingbatfd>\ProvidesFile{udingbat.fd}
+%<udingbatfd> [2001/04/27 v1.00 Font definitions for the dingbat font]
+%
+%<*driver>
+\documentclass{ltxdoc}
+\usepackage{dingbat}
+\usepackage{tabularx}
+\EnableCrossrefs
+\CodelineIndex
+
+% Uncomment the following line if you don't want to include a
+% source-code listing.
+%\OnlyDescription
+
+\begin{document}
+\DocInput{dingbat.dtx}
+\end{document}
+%</driver>
+% \fi
+%
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+% \CheckSum{76}
+% \GetFileInfo{dingbat.sty}
+%
+% \title{The \textsf{dingbat} package\thanks{This file
+% has version number \fileversion, last
+% revised \filedate.}}
+% \author{Scott Pakin\\pakin@uiuc.edu}
+% \date{\filedate}
+% \maketitle
+%
+% \changes{v1.00}{2001/04/27}{Initial version}
+%
+% \DoNotIndex{\newcommand,\selectfont}
+%
+% \StopEventually{^^A
+% \section{Credits}
+%
+% Just so it's clear who did what, here are the various components of
+% the \textsf{dingbat} package and the associated copyright information:
+%
+% \begin{center}
+% \begin{tabularx}{0.9\textwidth}{lX}
+% \texttt{ark10.mf} & Copyright (c) 1988 by Arthur M. Keller \\
+% & The ARK font was initially done in MF79
+% by Scott Kim. It was converted to (new) MF by N.N. Billawala
+% of Metamarks. \\
+% \texttt{dingbat.dtx} & Copyright (C) 2001 Scott Pakin \\
+% \texttt{dingbat.ins} & Copyright (C) 2001 Scott Pakin \\
+% \texttt{dingbat.mf} & Created 3-3-89 by Doug Henderson \\
+% \texttt{uark.fd} & Copyright (C) 2001 Scott Pakin
+% \end{tabularx}
+% \end{center}
+%
+% \PrintIndex
+% }
+%
+% \begin{abstract}
+% The \textsf{dingbat} package provides a \LaTeXe\ interface to the
+% |ark10.mf| and |dingbat.mf| fonts.
+% \end{abstract}
+%
+%
+% \section{Usage}
+%
+% ^^A Typeset a symbol in one column and its name in the next.
+% \def\tblsym#1{#1 & \texttt{\string#1}}
+%
+% \DescribeMacro{\rightpointright}
+% \DescribeMacro{\leftpointright}
+% \DescribeMacro{\leftthumbsdown}
+% \DescribeMacro{\leftthumbsup}
+% \DescribeMacro{\rightpointleft}
+% \DescribeMacro{\rightthumbsdown}
+% \DescribeMacro{\rightthumbsup}
+% The \textsf{dingbat} package defines the following hand gestures:
+%
+% \begin{center}
+% \renewcommand{\arraystretch}{1.2}
+% \begin{tabular}{lll}
+% \tblsym{\rightpointright} & Right hand pointing to the right \\
+% \tblsym{\leftpointright} & Left hand pointing to the right \\
+% \tblsym{\leftthumbsdown} & Left hand, thumbs down \\
+% \tblsym{\leftthumbsup} & Left hand, thumbs up \\
+% \tblsym{\rightpointleft} & Right hand pointing to the left \\
+% \tblsym{\rightthumbsdown} & Right hand, thumbs down \\
+% \tblsym{\rightthumbsup} & Right hand, thumbs up \\
+% \end{tabular}
+% \end{center}
+%
+% \noindent
+% (|\rightpointright| comes from |dingbat.mf|, while the rest come from
+% |ark10.mf|, hence, the discrepency in style.)
+%
+% \DescribeMacro{\squarewithdots}
+% \DescribeMacro{\filledsquarewithdots}
+% \DescribeMacro{\Sborder}
+% \DescribeMacro{\Zborder}
+% The following symbols are intended to be used to create fancy borders
+% around a box or the entire page.
+%
+% \begin{center}
+% \renewcommand{\arraystretch}{1.2}
+% \begin{tabular}{lll}
+% \tblsym{\squarewithdots} & Unfilled square with dots \\
+% \tblsym{\filledsquarewithdots} & Filled square with dots \\
+% \tblsym{\Sborder} & \textit{S}-like border design \\
+% \tblsym{\Zborder} & \textit{Z}-like border design \\
+% \end{tabular}
+% \end{center}
+%
+% \noindent
+% Note that if you \emph{are} going to create fancy borders, I recommend
+% using the \textsf{niceframe} package. \textsf{niceframe} is geared
+% to drawing fancy borders and knows specifically about the border
+% characters in |dingbat.mf|. The symbols defined by the
+% \textsf{dingbat} package, |\squarewithdots|, |\filledsquarewithdots|,
+% |\Sborder|, and |\Zborder|, are the only border characters that might
+% be useful outside of a border (e.g., in a straight line or as a bullet
+% in a fancy itemized list); the other, unnamed, characters defined in
+% |dingbat.mf| represent a frame's corners and sides.
+%
+% \DescribeMacro{\largepencil}
+% \DescribeMacro{\anchor}
+% \DescribeMacro{\carriagereturn}
+% \DescribeMacro{\checkmark}
+% \DescribeMacro{\eye}
+% \DescribeMacro{\satellitedish}
+% \DescribeMacro{\smallpencil}
+% The following \textsf{dingbat} symbols don't fit into either of the
+% previous categories:
+%
+% \begin{center}
+% \renewcommand{\arraystretch}{1.2}
+% \begin{tabular}{lll}
+% \tblsym{\largepencil} & Large pencil \\
+% \tblsym{\anchor} & Anchor \\
+% \tblsym{\carriagereturn} & Carriage return \\
+% \tblsym{\checkmark} & Check mark \\
+% \tblsym{\eye} & Eye \\
+% \tblsym{\satellitedish} & DLA satellite dish \\
+% \tblsym{\smallpencil} & Small pencil \\
+% \end{tabular}
+% \end{center}
+%
+% For some of these symbols, most notably |\largepencil|, the font
+% metrics seem to be a bit off. As a result, the symbols tend to jut
+% into previous or subsequent lines.
+%
+%
+% \section{Implementation}
+%
+% There's nothing particularly interesting about the implementation.
+% Section~\ref{sec:symbol-commands} defines the symbol commands that
+% make up |dingbat.sty|, and Section~\ref{sec:font-definitions} creates
+% the |uark.fd| and |udingbat.fd| font definition files, which \LaTeX\
+% loads when |dingbat.sty| selects font encoding~|U| and font family
+% |ark| or |dingbat|.
+%
+% \subsection{Symbol commands}
+% \label{sec:symbol-commands}
+%
+% \begin{macrocode}
+%<*package>
+% \end{macrocode}
+%
+% \begin{macro}{\arkfamily}
+% \begin{macro}{\ark@sym}
+% Define a macro, |\arkfamily|, which switches the font to |ark| and
+% another macro, |\ark@sym| which typesets a symbol in the |ark| font.
+% \begin{macrocode}
+\newcommand{\arkfamily}{\fontencoding{U}\fontfamily{ark}\selectfont}
+\newcommand{\ark@sym}[1]{{\arkfamily\symbol{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\carriagereturn}
+% \begin{macro}{\leftthumbsdown}
+% \begin{macro}{\eye}
+% \begin{macro}{\rightpointleft}
+% \begin{macro}{\smallpencil}
+% \begin{macro}{\leftpointright}
+% \begin{macro}{\leftthumbsup}
+% \begin{macro}{\largepencil}
+% \begin{macro}{\rightthumbsdown}
+% \begin{macro}{\rightthumbsup}
+% There are only ten symbols in the |ark| font. We define names
+% individually for each of them. Note that |\largepencil|'s bounding box
+% is a little too short, so |\largepencil| may jut into the previous line
+% of text. I think some of the other bounding boxes may be the wrong
+% size, as well, but I haven't yet tested that carefully.
+% \begin{macrocode}
+\newcommand{\carriagereturn}{\ark@sym{'103}}
+\newcommand{\leftthumbsdown}{\ark@sym{'104}}
+\newcommand{\eye}{\ark@sym{'105}}
+\newcommand{\rightpointleft}{\ark@sym{'114}}
+\newcommand{\smallpencil}{\ark@sym{'120}}
+\newcommand{\leftpointright}{\ark@sym{'122}}
+\newcommand{\leftthumbsup}{\ark@sym{'125}}
+\newcommand{\largepencil}{\ark@sym{'127}}
+\newcommand{\rightthumbsdown}{\ark@sym{'144}}
+\newcommand{\rightthumbsup}{\ark@sym{'165}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\dingbatfamily}
+% \begin{macro}{\dingbat@sym}
+% Define a macro, |\dingbatfamily|, which switches the font to |dingbat|
+% and another macro, |\dingbat@sym| which typesets a symbol in the
+% |dingbat| font.
+% \begin{macrocode}
+\newcommand{\dingbatfamily}{\fontencoding{U}\fontfamily{dingbat}\selectfont}
+\newcommand{\dingbat@sym}[1]{{\dingbatfamily\symbol{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\checkmark}
+% \begin{macro}{\satellitedish}
+% \begin{macro}{\rightpointright}
+% \begin{macro}{\anchor}
+% The following are definitions for all the non-border characters in
+% |dingbat.mf|.
+% \begin{macrocode}
+\newcommand{\checkmark}{\dingbat@sym{'104}}
+\newcommand{\satellitedish}{\dingbat@sym{'111}}
+\newcommand{\rightpointright}{\dingbat@sym{'116}}
+\newcommand{\anchor}{\dingbat@sym{'117}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macro}{\squarewithdots}
+% \begin{macro}{\filledsquarewithdots}
+% \begin{macro}{\Sborder}
+% \begin{macro}{\Zborder}
+% The following are the border characters. There are many more, but I
+% haven't yet made up \LaTeX\ names for them.
+% \begin{macrocode}
+\newcommand{\squarewithdots}{\dingbat@sym{'102}}
+\newcommand{\filledsquarewithdots}{\dingbat@sym{'103}}
+\newcommand{\Sborder}{\dingbat@sym{'123}}
+\newcommand{\Zborder}{\dingbat@sym{'132}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \begin{macrocode}
+%</package>
+% \end{macrocode}
+%
+% \subsection{Font definition files}
+% \label{sec:font-definitions}
+%
+% \subsubsection{\ttfamily uark.fd}
+%
+% All we do here is define |ark| as a symbol font (|U|~encoding) and tell
+% \LaTeX\ to scale |ark10.mf| to whatever font size is requested.
+%
+% \begin{macrocode}
+%<*uarkfd>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontFamily{U}{ark}{}
+\DeclareFontShape{U}{ark}{m}{n}{<-> ark10}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</uarkfd>
+% \end{macrocode}
+%
+% \subsubsection{\ttfamily udingbat.fd}
+%
+% Similarly, we define |dingbat| as another, |U|-encoded symbol font and
+% instruct \LaTeX\ to scale |dingbat.mf| to whatever font size is requested.
+%
+% \begin{macrocode}
+%<*udingbatfd>
+% \end{macrocode}
+%
+% \begin{macrocode}
+\DeclareFontFamily{U}{dingbat}{}
+\DeclareFontShape{U}{dingbat}{m}{n}{<-> dingbat}{}
+% \end{macrocode}
+%
+% \begin{macrocode}
+%</udingbatfd>
+% \end{macrocode}
+%
+% \Finale
+%
diff --git a/fonts/dingbat/dingbat.ins b/fonts/dingbat/dingbat.ins
new file mode 100644
index 0000000000..c181a57421
--- /dev/null
+++ b/fonts/dingbat/dingbat.ins
@@ -0,0 +1,58 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright (C) 2001 Scott Pakin <pakin@uiuc.edu>
+%% -------------------------------------------------------
+%%
+%% This package may be distributed and/or modified under the
+%% conditions of the LaTeX Project Public License, either version 1.2
+%% of this license or (at your option) any later version.
+%% The latest version of this license is in
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.2 or later is part of all distributions of LaTeX
+%% version 1999/12/01 or later.
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+\input docstrip
+
+\keepsilent
+
+\usedir{tex/latex/dingbat}
+
+\preamble
+
+This is a generated file.
+
+Copyright (C) 2001 Scott Pakin <pakin@uiuc.edu>
+-------------------------------------------------------
+
+This package may be distributed and/or modified under the
+conditions of the LaTeX Project Public License, either version 1.2
+of this license or (at your option) any later version.
+The latest version of this license is in
+ http://www.latex-project.org/lppl.txt
+and version 1.2 or later is part of all distributions of LaTeX
+version 1999/12/01 or later.
+
+\endpreamble
+
+\generate{\file{dingbat.sty}{\from{dingbat.dtx}{package}}}
+\generate{\file{uark.fd}{\from{dingbat.dtx}{uarkfd}}}
+\generate{\file{udingbat.fd}{\from{dingbat.dtx}{udingbatfd}}}
+
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To finish the installation, you have to move}
+\Msg{* dingbat.sty, uark.fd, ark10.mf, and dingbat.mf into}
+\Msg{* directories searched by TeX.}
+\Msg{*}
+\Msg{* To produce the documentation, run dingbat.dtx}
+\Msg{* through LaTeX.}
+\Msg{*}
+\Msg{* Happy TeXing!}
+\Msg{***********************************************************}
+
+\endbatchfile
diff --git a/fonts/dingbat/dingbat.mf b/fonts/dingbat/dingbat.mf
new file mode 100644
index 0000000000..cc4c96c6a0
--- /dev/null
+++ b/fonts/dingbat/dingbat.mf
@@ -0,0 +1,693 @@
+% Dingbat characters as of 3-3-89 by Doug Henderson
+% To be run with plain.bas.
+% Last modified on 3-27-89
+
+font_size=10pt#; % make the pxl or pk files be in ...\pixel\pxl1500
+
+def clear_all =
+ clearit; clearxy;
+enddef;
+
+%%%
+% turn pt,in,cm etc. into pixel values
+%%%
+
+mode_setup;
+
+%%%
+% define your variables here
+%%%
+string s[];
+picture p[];
+numeric anchor_scale;
+anchor_scale=10;
+path the_anchor,ring_of_anchor,tilted_anchor,tilted_ring;
+% how much to tilt the anchor
+numeric akilter;
+akilter:=20;
+picture holdit,holdem,flower_x,flower_y;
+path collar, thumb, index_finger, the_bird, ring_finger, pinky_finger ;
+a#:=12pt#;
+b#:=12pt#;
+glyph_width#:=10pt#;
+glyph_height#:=7pt#;
+uniform_square#:=20pt#;
+triangle_size#:=12pt#;
+check_width#:=10pt#;
+check_height#:=10pt#;
+check_depth#:=0pt#;
+dash#:=2pt#;
+%flu_width#:=31pt#;
+%flu_height#:=15pt#;
+flu_width#:=62pt#;
+flu_height#:=30pt#;
+anchor_height#:=150pt#/anchor_scale;
+anchor_width#:=130pt#/anchor_scale;
+anchor_depth#:=0pt#;
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% Very thin weight stroke for flouron (not advised for < 600dpi)
+%thinish#:=.25pt#;
+%thinthick#:=.45pt#;
+%thickish#:=.75pt#;
+
+% Normal weight stroke for flouron
+thinish#:=.5pt#;
+thinthick#:=1pt#;
+thickish#:=1.5pt#;
+
+% Heavy weight stroke for flouron
+%thinish#:=1pt#;
+%thinthick#:=2pt#;
+%thickish#:=2.5pt#;
+
+% Strokes widths for the flower from 1-12 (= 1 pixel - 4.5pt)
+flower_one#:=.25;
+flower_two#:=.5;
+flower_three#:=.5pt#/1.5;
+flower_four#:=.5pt#/1.5;
+flower_five#:=1pt#/1.5;
+flower_six#:=1.5pt#/1.5;
+flower_seven#:=2pt#/1.5;
+flower_eight#:=2.5pt#/1.5;
+flower_nine#:=3pt#/1.5;
+flower_ten#:=3.5pt#/1.5;
+flower_eleven#:=4pt#/1.5;
+flower_twelve#:=4.5pt#/1.5;
+hand_scale=6;
+hand_width#:=110pt#/hand_scale;
+hand_height#:=80pt#/hand_scale;
+hand_depth#:=0pt#;
+
+%%%
+% define your pixels here, do this for each variable defined above
+%%%
+
+define_pixels(glyph_width,glyph_height,uniform_square,triangle_size);
+define_pixels(check_width,check_height,check_depth,dash,thinish,thickish);
+define_pixels(thinthick,flu_width,flu_height,a,b);
+define_pixels(flower_one,flower_two,flower_three,flower_four,flower_five);
+define_pixels(flower_six,flower_seven,flower_eight,flower_nine,flower_ten);
+define_pixels(flower_eleven,flower_twelve);
+define_pixels(hand_width,hand_height,hand_depth,dash);
+define_pixels(anchor_height,anchor_weight,anchor_depth);
+
+%%%
+% define a macro which pauses until the user hits the return key
+%%%
+
+def
+ whoa= s0:= readstring;
+enddef;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Define all the pens we use
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+pickup pensquare scaled .2pt;
+smallpen:=savepen;
+pickup pensquare scaled .4pt;
+bigpen:=savepen;
+pickup pensquare scaled .8pt;
+bigger:=savepen;
+pickup pencircle scaled .1pt;
+razorpen:=savepen;
+pickup pencircle scaled 2pt;
+bigdotpen:=savepen;
+pickup pencircle scaled 1.1pt;
+lildotpen:=savepen;
+pickup pensquare scaled 1.6pt;
+chunkypen:=savepen;
+pickup pencircle scaled .35pt;
+ringpen:=savepen;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%% Let the dingbat characters begin
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Anchor for TUG dingbat contest";
+beginchar("O",anchor_width#,anchor_height#,anchor_depth#);
+ %%%
+ % x variables
+ %%%
+ x1=8/130w; % x1
+ x2=6/130w; % x2
+ x3=13/130w; % x3
+ x4=x25=x26=x31=30/130w; % x4 x25 x26 x31
+ x5=x22=60/130w; % x5
+ x6=x14=x18=x19=90/130w; % x6 x14 x18 x19
+ x27=x28=x45=54/130w; % x27 x28 x45
+ x17=x35=x56=66/130w; % x17 x35 x56
+
+ x7=107/130w; % x7
+ x8=114/130w; % x8
+ x10=112/130w; % x10
+ x12=94/130w; % x12
+ x13=99/130w; % x13
+ x15=72/130w; % x15
+ x16=67/130w; % x16
+ x20=70/130w; % x20
+ x21=65/130w; % x21
+ x23=55/130w; % x23
+ x24=50/130w; % x24
+
+ x29=53/130w; % x29
+ x30=48/130w; % x30
+ x32=21/130w; % x32
+ x33=26/130w; % x33
+
+ %%%
+ % y variables
+ %%%
+ y1=y10=65/150h; % y1 y10
+ y2=y8=43/150h; % y2 y8
+ y3=y7=45/150h; % y3 y7
+
+ y4=y6=25/150h; % y4 y6
+ y5=13/150h; % y5
+ y21=y23=130/150h; % y21 y23
+ y22=136/150h; % y22
+ y45=y56=20/150h; % y45 y56
+
+ y18=y26=y27=y35=118/150h; % y18 y26 y27 y35
+ y19=y20=y24=y25=124/150h; % y19 y20 y24 y25
+ y17=y28=40/150h; % y17 y28
+ y16=y29=36/150h; % y16 y29
+ y15=y30=35/150h; % y15 y30
+ y14=y31=38/150h; % y14 y31
+ y13=y32=50/150h; % y13 y32
+ y12=y33=54/150h; % y12 y33
+
+ %%%
+ % path assignments
+ %%%
+ the_anchor = z25--z26--z27--z28 & z28..z29..z31..z32 &
+ z32--z33--z1--z2--z3 & z3..z4..z45 & z45--z5--z56 & z56..z6..z7 &
+ z7--z8--z10--z12--z13 & z13..z14..z16..z17 &
+ z17--z35--z18--z19--cycle;
+ ring_of_anchor = z20..z22..z24;
+
+ tilted_anchor = the_anchor rotated akilter;
+ tilted_ring = ring_of_anchor rotated akilter;
+ %%%
+ % draw the character, show how ring meets anchor
+ %%%
+ pickup razorpen;
+ fill the_anchor;
+ pickup ringpen;
+ draw ring_of_anchor;
+
+ %%%
+ % after clearing previous path (upright anchor) fill the tilted path
+ %%%
+ %clearit;
+ %fill tilted_anchor;
+ %draw tilted_ring;
+ %showit;
+ %message"When thru viewing, press Enter to continue";
+ %whoa;
+
+ labels(range 1 thru 4,45,5,56,range 6 thru 19);
+ labels(range 20 thru 33,35);
+
+endchar;
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+"Hand pointer to the left";
+beginchar("N",hand_width#,hand_height#,hand_depth#);
+ %%%
+ % x variables
+ %%%
+ x1=9.5/110w; % x1
+ x2=15/110w; % x2
+ x3=x6=20/110w; % x3 x6
+ x4=19/110w; % x4
+ x5=x8=16/110w; % x5 x8
+ x7=21/110w; % x7
+ x9=10.5/110w; % x8
+ x10=5/110w; % x10
+ x11=42.5/110w; % x11
+ x1112=61/110w; % x1112 (a point between 11 and 12)
+ x12=67/110w; % x12
+ x13=x24=70/110w; % x13 x24
+ x14=57.5/110w; % x14
+ x15=76/110w; % x15
+ x16=77/110w; % x16
+ x17=58/110w; % x17
+ x18=82.5/110w; % x18
+ x19=83/110w; % x19
+ x20=57/110w; % x20
+ x21=94/110w; % x21
+ x22=102/110w; % x22
+ x23=90/110w; % x23
+ x25=43.5/110w; % x25
+ x26=62.5/110w; % x26
+ x27=75/110w; % x27
+ x28=74/110w; % x28
+
+ %%%
+ % y variables
+ %%%
+ y1=y24=63/80h; % y1 y24
+ y2=y25=64/80h; % y2 y25
+ y3=63.5/80h; % y3
+ y4=59/80h; % y4
+ y5=y17=40/80h; % y5 y17
+ y6=18/80h; % y6
+ y7=13/80h; % y7
+ y8=12.5/80h; % y8
+ y9=13.5/80h; % y9
+ y10=39.5/80h; % y10
+ y11=15/80h; % y11
+ y1112=17.5/80h; % y1112 (a point between 11 and 12)
+ y12=20/80h; % y12
+ y13=27.5/80h; % y13
+ y14=28/80h; % y14
+ y15=32/80h; % y15
+ y16=39/80h; % y16
+ y18=44/80h; % y18
+ y19=y21=50/80h; % y19
+ y20=51/80h; % y20
+ y22=55/80h; % y22
+ y23=62/80h; % y23
+ y26=71/80h; % y26
+ y27=72/80h; % y27
+ y28=67/80h; % y28
+
+ collar=z1..z2..z3 & z3..z4..z5..z6..z7 & z7..z8..z9 & z9..z10..z1;
+ thumb=z25..z26..z27..z28..z24;
+ index_finger=z4..z25..z24..z23..z22..z21..z19..z20;
+ the_bird=z17--z16..z18..z19;
+ ring_finger=z14--z13..z15..z16;
+ pinky_finger=z6..z11..z1112 & z1112..z12..z13;
+
+ pickup razorpen;
+
+ draw collar; draw thumb; draw index_finger;
+ draw the_bird; draw ring_finger; draw pinky_finger;
+ labels(range 1 thru 11,1112,range 12 thru 28);
+endchar;
+
+"Flowery flouron";
+beginchar("J",flu_width#,flu_height#,0);
+ % first stroke = x1 thru x8
+ x1=.02w; x2=.10w; x3=.23w; x4=.38w; x5=.51w;
+ x6=.73w; x7=.85w; x8=x14=x19=.98w;
+ % second stroke = x9 thru x14
+ x9=.22w; x10=.17w; x11=.165w; x12=.20w;
+ x13=.58w; % x14=x8=x19
+ % third stroke = x15 thru x19
+ x15=.32w; x16=.46w; x17=.65w; x18=.82w; % x19=x8=x14
+ % first stroke = y1 thru y8
+ y1=.05h; y2=.19h; y3=.26h; y4=.24h; y5=.18h;
+ y6=.13h; y7=.14h; y8=y14=y19=.19h;
+ % second stroke = y9 thru y14
+ y9=.99h; y10=.92h; y11=.85h;
+ y12=.71h; y13=.32h; % y14=y8
+ % third stroke = y15 thru y19
+ y15=.67h; y16=.74h; y17=.71h; y18=.48h;
+ % pen positions for stroke 1
+ penpos1(flower_one,135); penpos2(flower_five,135); penpos3(flower_nine,90);
+ penpos4(flower_twelve,90); penpos5(flower_ten,67); penpos6(flower_five,85);
+ penpos7(flower_four,90); penpos8(flower_three,135);
+ % pen positions for stroke 2
+ penpos9(flower_one,135); penpos10(flower_seven,180);
+ penpos11(flower_eight,180); penpos12(flower_seven,210);
+ penpos13(flower_six,210); penpos14(flower_three,270);
+ % pen positions for stroke 3
+ penpos15(flower_one,115); penpos16(flower_seven,100);
+ penpos17(flower_nine,70); penpos18(flower_five,45);
+ penpos19(flower_three,45);
+ % now draw our three strokes
+ penstroke z1e..z2e..z3e..z4e..z5e..z6e..z7e..z8e;
+ penstroke z9e...z10e...z11e...z12e{dir 315}...z13e...z14e;
+ penstroke z15e..z16e..z17e..z18e{dir 315}..z19e;
+ penlabels(range 1 thru 19);
+ flower_x:=currentpicture;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Right flower";
+beginchar("K",flu_width#,flu_height#,0);
+ currentpicture:=currentpicture+flower_x;
+ currentpicture:=currentpicture reflectedabout((.5[0,0],1),(.5[0,0],0));
+ currentpicture:=currentpicture shifted (w,0);
+ flower_y:=currentpicture;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+"Flipped left flower--matches J";
+beginchar("L",flu_width#,flu_height#,0);
+ currentpicture:=currentpicture+flower_y;
+ currentpicture:=currentpicture reflectedabout((0,.5[0,h]),(1,.5[0,h]));
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Flipped right flower--matches K";
+beginchar("M",flu_width#,flu_height#,0);
+ currentpicture:=currentpicture+flower_x;
+ currentpicture:=currentpicture reflectedabout((0,.5[0,h]),(1,.5[0,h]));
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"DLA satelite dish";
+beginchar("I",a#,b#,0);
+ numeric zero; zero=0;
+ % define the coordinates we will work with here
+ z1=origin; z2=(a,zero); z3=(a,b/5); z4=(zero,b/5);
+ x5=3/10(x2-x1); y5=y4=y6; x6=7/10(x2-x1);
+ x7=4/10(x2-x1); y7=y8=y9=3/10(b); x8=6/10(x2-x1);
+ x9=x10=1/2(x2-x1);
+ x11=1/10(x2-x1); y11=9/10(b); x12=3/10(x2-x1);
+ y12=.53(b); x13=9/10(x2-x1); y13=5/10(b);
+ y10=4.5/10(b);
+
+ % draw the bottom platform of the dish
+ pickup pensquare xscaled .5pt yscaled .5pt
+ filldraw z1--z2--z3--z4--cycle;
+ % draw the base of the dish, which sits on top of the bottom platform
+ pickup penrazor;
+ filldraw z5--z7--z8--z6--cycle;
+ % draw the arm holding the dish, which sits on the base of the dish
+ pickup penrazor xscaled .5pt;
+ draw z9--z10;
+ % draw the dish now
+ pickup pencircle xscaled .5pt yscaled .5pt;
+ draw z11..z12..z13;
+ % dish mod, complete the dish top
+% draw z11--z13;
+ labels(range 1 thru 13);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Left flouron";
+beginchar("E",flu_width#,flu_height#,0);
+ pickup pencircle;
+ x1=.23w; x2=.10w; x3=.05w; x4=.10w; x5=.19w;
+ x6=.25w; x7=.26w; x8=.20w; x9=.22w; x10=.26w;
+ x11=.48w; x12=.62w; x13=.71w; x14=.84w; x15=.90w;
+ x16=.97w; x17=.93w; x18=.84w;
+ y1=.07h; y2=.07h; y3=.33h; y4=.57h; y5=.65h;
+ y6=.61h; y7=.53h; y8=.55h; y9=.75h; y10=.80h;
+ y11=.67h; y12=.56h; y13=.53h; y14=.55h; y15=.60h;
+ y16=.80h; y17=.92h; y18=.87h;
+ penpos1(thinish,270); penpos2(thinish,225);
+ penpos3(thickish,180); penpos4(thinish,135);
+ penpos5(thinish,90); penpos6(thinish,45);
+ penpos7(thinish,0); penpos8(thinish,225);
+ penpos9(thinish,135); penpos10(thinish,90);
+ penpos11(thinish,45); penpos12(thinish,45);
+ penpos13(thinish,90); penpos14(thinthick,135);
+ penpos15(thinthick,135); penpos16(thinthick,180);
+ penpos17(thinish,225); penpos18(thinish,270);
+ penstroke z1e..z2e..z3e..z4e..z5e..z6e..z7e..z8e..z9e..z10e..z11e..z12e..
+ z13e..z14e..z15e..z16e..z17e..z18e;
+ penlabels(range 1 thru 18);
+holdit:=currentpicture;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Right flouron";
+beginchar("F",flu_width#,flu_height#,0);
+ currentpicture:=currentpicture+holdit;
+% currentpicture:=currentpicture reflectedabout((.5[l,r],1),(.5[l,r],0));
+ currentpicture:=currentpicture reflectedabout((.5[0,0],1),(.5[0,0],0));
+ currentpicture:=currentpicture shifted (w,0);
+ holdem:=currentpicture;
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Flipped left flouron--matches F";
+beginchar("G",flu_width#,flu_height#,0);
+ currentpicture:=currentpicture+holdem;
+ currentpicture:=currentpicture reflectedabout((0,.5[0,h]),(1,.5[0,h]));
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Flipped right flouron--matches E";
+beginchar("H",flu_width#,flu_height#,0);
+ currentpicture:=currentpicture+holdit;
+ currentpicture:=currentpicture reflectedabout((0,.5[0,h]),(1,.5[0,h]));
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Check mark";
+beginchar("D",check_width#,check_height#,check_depth#);
+ pickup pencircle;
+ y1=.4h; y2=.15h; y3=.85h;
+ x1l=0+eps; x2=1/3w; x3=.85w;
+ penpos1(dash,45); penpos2(dash,90); penpos3(dash,170);
+ penstroke z1e--z2e--z3e;
+ penlabels(1,2,3);
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Square (filled) with dots border design";
+beginchar("C",triangle_size#,triangle_size#,0);
+x1=x3=good.x(1/2triangle_size);
+x2=good.x(1/10triangle_size);
+x4=good.x(9/10triangle_size);
+x5=x6=good.x(3/10triangle_size);
+x7=x8=good.x(7/10triangle_size);
+x9=x10=good.x(2/10triangle_size);
+x12=x11=good.x(8/10triangle_size);
+
+y1=good.y(1/10triangle_size);
+y9=y12=good.y(2/10triangle_size);
+y5=y8=good.y(3/10triangle_size);
+y2=y4=good.y(1/2triangle_size);
+y6=y7=good.y(7/10triangle_size);
+y10=y11=good.y(8/10triangle_size);
+y3=good.y(9/10triangle_size);
+
+pickup razorpen;
+fill z1..z5..z2 & z2..z6..z3 & z3..z7..z4 & z4..z8..z1..cycle;
+pickup bigdotpen;
+drawdot z9; drawdot z12; drawdot z10; drawdot z11;
+
+labels(range 1 thru 12);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Square (unfilled) with dots border design";
+beginchar("B",triangle_size#,triangle_size#,0);
+ x1=x3=good.x(1/2triangle_size);
+ x2=good.x(1/10triangle_size);
+ x4=good.x(9/10triangle_size);
+ x5=x6=good.x(3/10triangle_size);
+ x7=x8=good.x(7/10triangle_size);
+ x9=x10=good.x(2/10triangle_size);
+ x12=x11=good.x(8/10triangle_size);
+
+ y1=good.y(1/10triangle_size);
+ y9=y12=good.y(2/10triangle_size);
+ y5=y8=good.y(3/10triangle_size);
+ y2=y4=good.y(1/2triangle_size);
+ y6=y7=good.y(7/10triangle_size);
+ y10=y11=good.y(8/10triangle_size);
+ y3=good.y(9/10triangle_size);
+
+ pickup bigpen;
+ draw z1..z5..z2;
+ draw z2..z6..z3;
+ draw z3..z7..z4;
+ draw z4..z8..z1;
+
+ pickup bigdotpen;
+ drawdot z9; drawdot z12; drawdot z10; drawdot z11;
+ pickup lildotpen;
+ erase drawdot z9; erase drawdot z12; erase drawdot z10;erase drawdot z11;
+
+ labels(range 1 thru 12);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Z border design";
+beginchar("Z",glyph_width#,glyph_height#,0);
+pickup bigger;
+% define our x values for the border design
+x1=x6=x7=good.x(glyph_width);
+x4=6/8good.x(glyph_width);
+x8=2/8good.x(glyph_width);
+x2=x3=x5=0;
+% design our y values for the border design
+y1=y2=0;
+y7=y8=1/3good.y(glyph_height);
+y3=y4=2/3good.y(glyph_height);
+y5=y6=good.y(glyph_height);
+
+draw z5--z6--z7--z8;
+draw z1--z2--z3--z4;
+%draw bot z5--z3;
+%draw top z1--z7;
+
+labels(range 1 thru 8);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"S border design";
+beginchar("S",glyph_width#,glyph_height#,0);
+pickup bigger;
+% define our x values for the border design
+x1=x6=x7=0;
+x2=x3=x8=good.x(glyph_width);
+x4=good.x(2/8glyph_width);
+x5=good.x(6/8glyph_width);
+
+y1=y2=0;
+y5=y6=good.y(1/3glyph_height);
+y3=y4=good.y(2/3glyph_height);
+y7=y8=good.y(glyph_height);
+
+draw z1--z2--z3--z4;
+draw z5--z6--z7--z8;
+%draw top z1--z6;
+%draw bot z8--z3;
+cullit;
+
+labels(range 1 thru 8);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 1 (top-left)";
+beginchar("a",uniform_square#,uniform_square#,0);
+
+x1=x2=good.x(1/10uniform_square);
+x3=x4=good.x(4/10uniform_square);
+x5=x8=good.x(uniform_square);
+x6=x7=good.x(2/10uniform_square);
+
+y1=y6=good.y(0);
+y2=y3=good.y(6/10uniform_square);
+y7=y8=good.y(8/10uniform_square);
+y4=y5=good.y(9/10uniform_square);
+
+pickup chunkypen;
+draw z1--z2--z3--z4--z5;
+pickup bigpen;
+draw z6--z7--z8;
+p1:=currentpicture;
+
+labels(range 1 thru 8);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 2 (top-middle)";
+beginchar("b",uniform_square#,uniform_square#,0);
+
+x1=x3=good.x(0);
+x2=x4=good.x(uniform_square);
+
+y1=y2=good.y(9/10uniform_square);
+y3=y4=good.y(8/10uniform_square);
+
+pickup chunkypen;
+draw z1--z2;
+pickup bigpen;
+draw z3--z4;
+p2:=currentpicture;
+
+labels(1,2,3,4);
+
+endchar;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 3 (top-right)";
+beginchar("c",uniform_square#,uniform_square#,0);
+
+x1=x6=good.x(0);
+x2=x3=good.x(6/10uniform_square);
+x7=x8=good.x(8/10uniform_square);
+x4=x5=good.x(9/10uniform_square);
+
+y1=y2=good.y(9/10uniform_square);
+y6=y7=good.y(8/10uniform_square);
+y3=y4=good.y(6/10uniform_square);
+y5=y8=good.y(0);
+
+pickup chunkypen;
+draw z1--z2--z3--z4--z5;
+pickup bigpen;
+draw z6--z7--z8;
+p3:=currentpicture;
+
+labels(range 1 thru 8);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 4 (middle-left)";
+beginchar("d",uniform_square#,uniform_square#,0);
+
+x1=x2=good.x(1/10uniform_square);
+x3=x4=good.x(2/10uniform_square);
+y1=y3=good.y(0);
+y2=y4=good.y(uniform_square);
+
+pickup chunkypen;
+draw z1--z2;
+pickup bigpen;
+draw z3--z4;
+p4:=currentpicture;
+
+labels(1,2,3,4);
+
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 5 (middle-right)";
+beginchar("e",uniform_square#,uniform_square#,0);
+currentpicture:=currentpicture + p4;
+currentpicture:=currentpicture reflectedabout((.5[0,0],0),(.5[0,0],1));
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 6 (bottom-left)";
+beginchar("f",uniform_square#,uniform_square#,0);
+currentpicture:=currentpicture + p1;
+currentpicture:=currentpicture
+reflectedabout((0,.5[0,uniform_square]),(1,.5[0,uniform_square]));
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 7 (bottom-middle)";
+beginchar("g",uniform_square#,uniform_square#,0);
+currentpicture:=currentpicture + p2;
+currentpicture:=currentpicture
+reflectedabout((0,.5[0,uniform_square]),(1,.5[0,uniform_square]));
+endchar;
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+"Overlapping thick\thin line border design--- character 8 (bottom-right)";
+beginchar("h",uniform_square#,uniform_square#,0);
+currentpicture:=currentpicture + p3;
+currentpicture:=currentpicture
+reflectedabout((0,.5[0,uniform_square]),(1,.5[0,uniform_square]));
+endchar;
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+bye
diff --git a/fonts/dingbat/dingbat.pdf b/fonts/dingbat/dingbat.pdf
new file mode 100644
index 0000000000..947521c77f
--- /dev/null
+++ b/fonts/dingbat/dingbat.pdf
Binary files differ
diff --git a/fonts/dingbat/dingbat.tex b/fonts/dingbat/dingbat.tex
new file mode 100644
index 0000000000..e260c9701e
--- /dev/null
+++ b/fonts/dingbat/dingbat.tex
@@ -0,0 +1,48 @@
+\nopagenumbers
+
+
+\font\ding dingbat scaled 1200
+
+\setbox0=\hbox{\ding\char'141}
+\newdimen\charwidth \charwidth\wd0
+\def\updoublerulefill{\xleaders\hbox to 10pt
+ {\hss\ding\char'142 \hss}\hfill}
+\def\downdoublerulefill{\xleaders\hbox to 10pt
+ {\hss\ding\char'147 \hss}\hfill}
+\def\leftdoublerulefill{\xleaders\vbox to 10pt
+ {\vss\hbox{\ding\char'144}\vss}\vfill}
+\def\rightdoublerulefill{\xleaders\vbox to 10pt
+ {\vss\hbox{\ding\char'145}\vss}\vfill}
+
+\newdimen\Width \newdimen\Height
+\Width\hsize \Height\vsize
+\def\rramec{\vbox to\Height
+ {\hbox to\Width{\ding\char'141\updoublerulefill{\char'143}}
+ \xleaders\vbox to 10pt
+ {\vss\hbox to\Width{\ding\char'144\hfill\char'145}\vss}
+ \vfill
+ \hbox to\Width{\ding\char'146\downdoublerulefill{\char'150}}}}
+
+\def\RRamec #1{\setbox0=\vbox{#1}\Height\ht0\advance\Height\dp0
+ \Width\wd0 \advance\Width 2\charwidth
+ \vbox
+ {\hbox to\Width{\ding\char'141\updoublerulefill{\char'143}}
+ \hbox to\Width{\vbox to\Height{\leftdoublerulefill}\hss
+ \box0\hss\vbox to\Height{\rightdoublerulefill}}
+ \hbox to\Width{\ding\char'146\downdoublerulefill{\char'150}}}}
+
+\rramec
+\tolerance 800
+\RRamec{\hsize 5cm Hip hip hurrahhh Hip hip hurrahhh Hip hip
+hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip
+hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh
+Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip
+hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip
+hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh
+Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip
+hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip
+hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh Hip hip hurrahhh}
+
+
+
+\bye