% Blackboard bold capitals, Alan Jeffrey, 11--14 Dec 1989.

% -------------------------------------------------------------------

bbcap 
   ("A")
   (smallgap#, medcap#, smallgap#);

   "The letter A";

   % The bar, clipped by the wedge.
   draw
      cliptwice
         (ABar~Left -- ABar~Right)
         (Bottom~Left -- Top~Middle -- Bottom~Right);
   
   % The left line, fattened, and clipped by the right line.
   outline
      fatcliponce
         (rightof Bottom~Left -- rightof Top~Middle)
         (Top~Middle -- Bottom~Right);
   
   % The right line.
   draw
      Top~Middle 
         -- Bottom~Right

endchar;

% -------------------------------------------------------------------

bbcap 
   ("B")
   (biggap#, smallcap#, medgap#);

   "The letter B";

   % The top arc.
   draw
      Top~Left 
         -- Top~Middle {right}
         .. (Top -+- BBar)~Right
         .. {left}  BBar~Middle
         -- BBar~Left;

   % The bottom arc.
   draw
      BBar~Left
         -- BBar~Middle {right}
         .. (BBar -+- Bottom)~Right
         .. {left} Bottom~Middle
         -- Bottom~Left;

   % The left line, fattened.
   outline
      fatten
         rightof Top~Left
            -- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbcap 
   ("C")
   (medgap#, medcap#, medgap#);

   "The letter C";

   % The curve of the C.
   var (path) Cpath;
   
   Cpath 
      = (Top - CCurl)~Right
           .. oabove Top~Middle {left}
           .. Horizon~Left {down}
           .. obelow Bottom~Middle {right}
           .. (Bottom + CCurl)~Right;

   % The fat line emphasising the left side, clipped by the curve.
   draw
      fatcliptwice
         (obelow rightof Bottom~Left -- oabove rightof Top~Left)
         (Cpath);
   
   % The curve.
   draw Cpath

endchar;

% -------------------------------------------------------------------

bbcap 
   ("D")
   (biggap#, medcap#, medgap#);

   "The letter D";

   % The curve of the D.
   draw
      Top~Left 
         -- Top~Middle {right}
         .. Horizon~Right {down}
         .. {left} Bottom~Middle 
         -- Bottom~Left;
   
   % The left line, fattened.
   draw
      fatten
         rightof Top~Left
            --- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbcap 
   ("E")
   (biggap#, smallcap#, smallgap#);

   "The letter E";

   % The top line.
   draw
      Top~Left
         -- Top~Right;
         
   % The bar.
   draw
      BBar~Left
         -- farrightof BBar~(Left + bigjut);
        
   % The bottom line.
   draw
      Bottom~Left
         -- Bottom~Right;
  
   % The left line, fattened.       
   outline
      fatten
         rightof Top~Left
            -- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbcap 
   ("F")
   (biggap#, smallcap#, smallgap#);

   "The letter F";

   % The top line.
   draw
      Top~Left
         -- Top~Right;
         
   % The bar.
   draw
      BBar~Left
         -- farrightof BBar~(Left + bigjut);
         
   % The left line, fattened.
   outline
      fatten
         rightof Top~Left
            -- rightof Bottom~Left
endchar;

% -------------------------------------------------------------------

bbcap 
   ("G")
   (medgap#, medcap#, medgap#);

   "The letter G";

   % The curve of the G (which is the same as of a C).
   var (path) Gpath;
   
   Gpath 
      = (Top - CCurl)~Right
           .. oabove Top~Middle {left}
           .. Horizon~Left {down}
           .. obelow Bottom~Middle {right}
           .. (Bottom + CCurl)~Right;

   % The emphasis for the left of the curve.
   draw
      fatcliptwice
         (rightof obelow Bottom~Left -- oabove rightof Top~Left)
         (Gpath);
   
   % The curve.
   draw Gpath;
   
   % The bar.
   draw
      (Bottom + CCurl)~Right
         -- GBar~Right 
         -- GBar~(Right - bigjut)

endchar;

% -------------------------------------------------------------------

bbcap 
   ("H")
   (biggap#, medcap#, biggap#);

   "The letter H";

   % The right line.
   draw
      Top~Right
         -- Bottom~Right;
   
   % The bar.
   draw
      BBar~Left
         -- BBar~Right;
   
   % The left line, fattened.
   outline
      fatten
         rightof Top~Left
            -- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbcap 
   ("I")
   (biggap#, tiny#, biggap#);

   "The letter I";

   % The vertical, fattened.
   draw
      fatten
         Top~Middle
            -- Bottom~Middle

endchar;

% -------------------------------------------------------------------

bbcap 
   ("J")
   (medgap#, smallcap#, biggap#);

   "The letter J";

   % The curve.
   var (path) Jpath;
   
   Jpath
      = Top~Right
           -- (Bottom -+- Top)~Right {down}
           .. obelow Bottom~Middle {left}
           .. (Bottom + CCurl)~Left;

   % The emphasis on the J, clipped by the curve.
   draw
      fatcliponce
         (leftof Top~Right -- obelow leftof Bottom~Right)
         (Jpath);

   % The curve.
   draw Jpath

endchar;

% -------------------------------------------------------------------

bbcap 
   ("K")
   (biggap#, smallcap#, medgap#);

   "The letter K";

   % The point at which the top diagonal hits the left side of the character.
   % It is somewhere along the line from the top right to BBar~Middle.

   z1 = whatever[Top~Right, BBar~Middle];
   x1 = Left;

   % The top diagonal.
   draw
      z1 -- Top~Right;
         
   % The bottom diagonal.
   draw
      BBar~Middle
         -- Bottom~Right;

   % The left edge, fattened.
   outline
      fatten
         rightof Top~Left
            -- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbcap 
   ("L")
   (biggap#, smallcap#, smallgap#);

   "The letter L";

   % The bottom line.
   draw
      Bottom~Left
         -- Bottom~Right;

   % The left line, fattened.
   draw
      fatten
         rightof Top~Left
            -- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbcap 
   ("M")
   (biggap#, medcap#, biggap#);

   symmetric;

   "The letter M";

   % The left line, fattened and clipped by the left diagonal.
   
   draw
      fatcliponce
         (rightof Bottom~Left -- rightof Top~Left)
         (Top~Left -- BBar~Middle);

   % The rest of the letter.
   draw
      Top~Left
         -- BBar~Middle
         -- Top~Right
         -- Bottom~Right

endchar;

% -------------------------------------------------------------------

bbcap 
   ("N")
   (biggap#, medcap#, biggap#);

   "The letter N";

   % The left line, fattened and clipped by the diagonal.
   
   draw
      fatcliponce
         (rightof Bottom~Left -- rightof Top~Left)
         (Top~Left -- Bottom~Right);

   % The rest of the letter.
   draw
      Top~Left
         -- Bottom~Right
         -- Top~Right

endchar;

% -------------------------------------------------------------------

bbcap 
   ("O")
   (medgap#, medcap#, medgap#);

   "The letter O";

   % The path of the O.
   var (path) Opath;
   
   Opath 
      = oabove Top~Middle
           .. Horizon~Left
           .. obelow Bottom~Middle
           .. Horizon~Right
           .. cycle;

   % The emphasis at the left of the O, clipped by the O curve.
   draw
      fatcliptwice
         (obelow rightof Bottom~Left -- oabove rightof Top~Left)
         (Opath);
         
   % The curve.
   draw Opath

endchar;

% -------------------------------------------------------------------

bbcap 
   ("P")
   (biggap#, smallcap#, medgap#);

   "The letter P";

   % The arc.
   draw
      Top~Left 
         -- Top~Middle {right}
         .. (Top -+- BBar)~Right
         .. {left}  BBar~Middle
         -- BBar~Left;

   % The left line, fattened.
   outline
      fatten
         rightof Top~Left
            -- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbchar 
   ("Q")
   (medgap#, medcap#, medgap#)
   (ATop#, QTailBottom#);

   "The letter Q";

   % The path of the Q.
   var (path) Qpath;
   
   Qpath 
      = oabove Top~Middle
           .. (Top -+- aBottom)~Left
           .. obelow aBottom~Middle
           .. (Top -+- aBottom)~Right
           .. cycle;

   % The emphasis at the left of the Q, clipped by the Q curve.
   draw
      fatcliptwice
         (obelow rightof Bottom~Left -- oabove rightof Top~Left)
         (Qpath);
         
   % The curve.
   draw Qpath;
   
   % The tail.
   draw
      QTailTop~Middle
         -- QTailBottom~Right

endchar;

   
% -------------------------------------------------------------------

bbcap 
   ("R")
   (biggap#, smallcap#, medgap#);

   "The letter R";

   % The arc.
   draw
      Top~Left 
         -- Top~Middle {right}
         .. (Top -+- BBar)~Right
         .. {left}  BBar~Middle
         -- BBar~Left;

   % The left line, fattened.
   outline
      fatten
         rightof Top~Left
            -- rightof Bottom~Left;

   % The diagonal.
   draw
      BBar~Middle
         -- Bottom~Right

endchar;

% -------------------------------------------------------------------

bbcap 
   ("S")
   (medgap#, smallcap#, medgap#);

   "The letter S";

   % The path of the S.
   var (path) Spath;
   
   Spath 
      = (Top - CCurl)~Right
           .. oabove Top~Middle              {left}
           .. (Top -+- BBar)~Left     {down}
           .. BBar~Middle              {right}
           .. (BBar -+- Bottom)~Right {down}
           .. obelow Bottom~Middle           {left}
           .. (Bottom + CCurl)~Left;

   % The emphasis at the top left of the S.
   draw
      fatcliptwice
         (oabove rightof Top~Left -- rightof BBar~Left)
         (subpath (0, 4) of Spath);

   % The path of the S.
   draw Spath

endchar;
           
% -------------------------------------------------------------------

bbcap 
   ("T")
   (smallgap#, medcap#, smallgap#);

   fatsymmetric;

   "The letter T";

   % The top line.
   draw
      Top~Left
         -- Top~Right;

   % The vertical, fattened.
   draw
      fatten
         Top~Middle
            -- Bottom~Middle

endchar;

% -------------------------------------------------------------------

bbcap 
   ("U")
   (biggap#, medcap#, biggap#);

   "The letter U";

   % The path of the U.
   var (path) Upath;
   
   Upath 
      = Top~Left
          -- Horizon~Left {down}
          .. obelow Bottom~Middle {right}
          .. {up} Horizon~Right 
          -- Top~Right;

   % The emphasis of the U.
   draw
      fatcliponce
         (rightof Top~Left -- obelow rightof Bottom~Left)
         (Upath);

   % The path of the U.
   draw Upath

endchar;
          
% -------------------------------------------------------------------

bbcap 
   ("V")
   (smallgap#, medcap#, smallgap#);
   
   symmetric;
   
   "The letter V";

   % The left diagonal, clipped by the right.
   draw
      fatcliponce
         (rightof Top~Left -- rightof Bottom~Middle)
         (Bottom~Middle -- Top~Right);

   % The right diagonal.
   draw
      Bottom~Middle 
         -- Top~Right

endchar;

% -------------------------------------------------------------------

bbcap 
   ("W")
   (smallgap#, bigcap#, smallgap#);
   
   symmetric;
   
   "The letter W";

   % The left diagonal, clipped by the rest.
   draw
      fatcliponce
         (rightof Top~Left -- rightof Bottom~(Left -+- Middle))
         (Bottom~(Left -+- Middle) -- BBar~Middle);

   % The rest of the letter.
   draw
      Bottom~(Left -+- Middle) 
         -- BBar~Middle
         -- Bottom~(Middle -+- Right)
         -- Top~Right

endchar;

% -------------------------------------------------------------------

bbcap 
   ("X")
   (medgap#, medcap#, medgap#);

   "The letter X";

   % The SE diagonal.
   draw
      Top~Left
         -- Bottom~Right;

   % The SW diagonal, fattened.
   outline
      fatten
         leftof Top~Right
            -- rightof Bottom~Left

endchar;

% -------------------------------------------------------------------

bbcap 
   ("Y")
   (smallgap#, medcap#, smallgap#);

   fatsymmetric;

   "The letter Y";

   % The fat stroke running top left to bottom.
   draw
      fatten
         rightof Top~Left
            -- BBar~Middle
            -- Bottom~Middle;

   % The right diagonal.
   draw
      rightof BBar~Middle
         -- Top~Right

endchar;

% -------------------------------------------------------------------

bbcap 
   ("Z")
   (medgap#, medcap#, medgap#);

   "The letter Z";

   % The top line.
   draw
      Top~Left
         -- Top~Right;

   % The diagonal, fattened.
   draw
      fatten
         leftof Top~Right
            -- rightof Bottom~Left;

   % The bottom line.
   draw
      Bottom~Left
         -- Bottom~Right

endchar;

% -------------------------------------------------------------------

