% Blackboard bold punctuation, Alan Jeffrey, 13--18 Dec 1989.
% -------------------------------------------------------------------
bbcap
("!")
(biggap#, tiny#, biggap#);
fatsymmetric;
"Exclamation mark `!'";
% The vertical.
draw
fatten
Top~Middle
-- (Bottom + space + fatness)~Middle;
% The dot.
draw
splodge
above Bottom~Middle
endchar;
% -------------------------------------------------------------------
bbchar
("#")
(medgap#, arithmetic#, medgap#)
(ATop#, gBottom#);
"The hash sign `#'";
% The top line.
draw
(Horizon + space)~Left
-- (Horizon + space)~Right;
% The bottom line.
draw
(Horizon - space)~Left
-- (Horizon - space)~Right;
% The right vertical.
draw
rightof Top~(Middle + space)
-- rightof Bottom~(Middle + space);
% The left vertical.
outline
fatten
rightof Top~(Middle - space)
-- rightof Bottom~(Middle - space)
endchar;
% -------------------------------------------------------------------
bbchar
("$")
(medgap#, smallcap#, medgap#)
(ATop# + jut#, aBottom# - jut#);
fatsymmetric;
"Dollar sign `$'";
% The path of the S.
draw
(Top - CCurl)~Right
.. ATop~Middle {left}
.. (ATop -+- BBar)~Left {down}
.. BBar~Middle {right}
.. (BBar -+- aBottom)~Right {down}
.. aBottom~Middle {left}
.. (Bottom + CCurl)~Left;
% The vertical.
outline
fatten
Bottom~Middle
-- Top~Middle
endchar;
% -------------------------------------------------------------------
bbchar
("%")
(medgap#, smallcap#, medgap#)
(bracketTop#, aBottom# + aTop# - bracketTop#);
fatsymmetric;
"Per cent sign `%'";
% The dot at top left.
draw
splodge
below rightof Top~Left;
% The dot at bottom right.
draw
splodge
above leftof Bottom~Right;
% The diagonal.
draw
fatten
rightof Bottom~Left
-- leftof Top~Right
endchar;
% -------------------------------------------------------------------
bbchar
("&")
(medgap#, arithmetic#, medgap#)
(ATop#, aBottom#);
"Ampersand `&'";
% z1 is the top point at which the curls cross. It is somewhere
% between the top point and the bottom point, and is at aTop.
z1 = whatever[leftof Top~Middle, Bottom~(Left -+- Middle)];
y1 = aTop;
% The curve.
var (path) ampersandpath;
ampersandpath
= (Bottom + cCurl)~Right
.. obelow Bottom~(Right - jut) {left}
... z1
.. oabove leftof Top~Middle {right}
.. z1
.. aMiddle~Left {down}
.. obelow Bottom~(Left -+- Middle) {right}
.. aMiddle~(Right - space);
% The emphasis.
draw
fatcliptwice
(obelow rightof Bottom~Left -- rightof Top~Left)
(ampersandpath);
% The curve.
draw ampersandpath
endchar;
% -------------------------------------------------------------------
bbchar
("'")
(medgap#, tiny#, medgap#)
(bTop#, bTop# - tiny# - comma_depth#);
fatsymmetric;
"Apostrophe `''";
% The dot and tail.
draw
splodger below Top~Middle
.. Bottom~Left
endchar;
% -------------------------------------------------------------------
bbchar
("(")
(biggap#, tiny# + jut#, smallgap#)
(bracketTop#, bracketBottom#);
"Left bracket `('";
% The emphasis.
draw
fatcliptwice
(rightof Bottom~Left -- rightof Top~Left)
(Bottom~Right {left} .. Horizon~Left .. Top~Right {right});
% The curve.
draw
Bottom~Right {left}
.. Horizon~Left
.. Top~Right {right}
endchar;
% -------------------------------------------------------------------
bbchar
(")")
(smallgap#, tiny# + jut#, biggap#)
(bracketTop#, bracketBottom#);
"Right bracket `)'";
% The emphasis.
draw
fatcliptwice
(leftof Bottom~Right -- leftof Top~Right)
(Bottom~Left {right} .. Horizon~Right .. Top~Left {left});
% The curve.
draw
Bottom~Left {right}
.. Horizon~Right
.. Top~Left {left}
endchar;
% -------------------------------------------------------------------
bbchar
("*")
(medgap#, (sqrt3)/2 * arithmetic#, medgap#)
(math_axis# + 1/2arithmetic#, math_axis# - 1/2arithmetic#)
fatsymmetric;
"Star `*'";
% The distance from the top of the character to the top of the diagonals.
var (numeric) adistance;
adistance = round ((Top - Horizon) / 2);
% The NW diagonal.
draw
(Bottom + adistance)~Right
-- (Top - adistance)~Left;
% The NE diagonal.
draw
(Bottom + adistance)~Left
-- (Top -adistance)~Right;
% The vertical, fattened.
outline
fatten
Bottom~Middle
-- Top~Middle
endchar;
% -------------------------------------------------------------------
bbchar
("+")
(medgap#, arithmetic#, medgap#)
(math_axis# + 1/2arithmetic#, math_axis# - 1/2arithmetic#)
"Plus sign `+'";
% The horizontal line.
draw
Horizon~Left
-- Horizon~Right;
% The vertical, fattened.
outline
fatten
Bottom~Middle
-- Top~Middle
endchar;
% -------------------------------------------------------------------
bbchar
(",")
(medgap#, tiny#, medgap#)
(aBottom# + tiny#, aBottom# - comma_depth#);
fatsymmetric;
"Comma `,'";
% The dot and tail.
draw
splodger above aBottom~Middle
.. Bottom~Left
endchar;
% -------------------------------------------------------------------
bbchar
("-")
(smallgap#, smalllower#, medgap#)
(aTop#, aBottom#);
"Hyphen `-'";
% The line.
draw
Horizon~Left
-- Horizon~Right
endchar;
% -------------------------------------------------------------------
bbchar
(".")
(medgap#, tiny#, medgap#)
(aBottom# + tiny#, aBottom#);
fatsymmetric;
"Full stop `.'";
% The dot.
draw
splodge
above Bottom~Middle
endchar;
% -------------------------------------------------------------------
bbchar
("/")
(smallgap#, smallcap#, smallgap#)
(bracketTop#, bracketBottom#);
"Virgule (slash) `/'";
% The line.
draw
fatten
rightof Bottom~Left
-- leftof Top~Right
endchar;
% -------------------------------------------------------------------
bbchar
(":")
(medgap#, tiny#, medgap#)
(aTop#, aBottom#);
fatsymmetric;
"Colon `:'";
% The top dot.
draw
splodge
below Top~Middle;
% The bottom dot.
draw
splodge
above Bottom~Middle
endchar;
% -------------------------------------------------------------------
bbchar
(";")
(medgap#, tiny#, medgap#)
(aTop#, aBottom# - comma_depth#);
fatsymmetric;
"Semicolon `;'";
% The upper dot.
draw
splodge
below Top~Middle;
% The lower dot and tail.
draw
splodger above aBottom~Middle
.. Bottom~Left
endchar;
% -------------------------------------------------------------------
beginblacker 1.5;
bbchar
("<")
(biggap#, arithmetic#, biggap#)
(math_axis# + 1/2lessthan#, math_axis# - 1/2lessthan#);
"Less than sign `<'";
% The top diagonal.
draw
Top~Right
--- Horizon~Left;
% The bottom diagonal, fattened, and clipped by the top.
% We need to carry on the diagonal past where it started,
% so we extend it up to the top of the character.
draw
fatcliponce
(leftof Bottom~Right
--- rightof Horizon~Left
.. farrightof Top~(2Left - Right))
(Top~Right -- Horizon~Left)
endchar;
endblacker;
% -------------------------------------------------------------------
bbchar
("=")
(medgap#, tiny#, medgap#)
(math_axis# + 1/2tiny#, math_axis# - 1/2tiny#);
fatsymmetric;
"Centred dot";
% The dot.
draw
splodge
above Bottom~Middle
endchar;
% -------------------------------------------------------------------
beginblacker 1.5;
bbchar
(">")
(biggap#, arithmetic#, biggap#)
(math_axis# + 1/2lessthan#, math_axis# - 1/2lessthan#);
"Greater than sign `>'";
% The top diagonal.
draw
Top~Left
--- Horizon~Right;
% The bottom diagonal, fattened, and clipped by the top.
% We need to carry on the diagonal past where it started,
% so we extend it up to the top of the character.
draw
fatcliponce
(rightof Bottom~Left
--- leftof Horizon~Right
.. farleftof Top~(2Right - Left))
(Top~Left -- Horizon~Right)
endchar;
endblacker;
% -------------------------------------------------------------------
bbcap
("?")
(medgap#, smallcap#, medgap#);
fatsymmetric;
"Question mark `?'";
% The height of the bottom of the curl.
var (numeric) curlBottom;
curlBottom = Bottom + fatness + space;
% The curl.
var (path) questionpath;
questionpath
= (Top - CCurl)~Left
.. oabove Top~Middle {right}
.. (1/3[Top, curlBottom])~Right {down}
.. rightof (2/3[Top, curlBottom])~Middle {left}
.. leftof curlBottom~Middle {down};
draw questionpath;
% The emphasis, clipped with the bottom bit of the question path.
draw
fatcliponce
(curlBottom~Middle -- oabove Top~Middle)
(subpath (2, infinity) of questionpath);
% The dot.
draw
splodge
above Bottom~Middle
endchar;
% -------------------------------------------------------------------
bbchar
("@")
(medgap#, tiny# + 2fatness#, medgap#)
(ATop#, aBottom#);
"At sign `@'";
% The curl.
var (path) atpath;
atpath
= (Bottom + CCurl)~Right
.. obelow Bottom~Middle {left}
.. Horizon~Left {up}
.. oabove Top~Middle {right}
.. splodger leftof Horizon~Right;
% The emphasis.
draw
fatcliptwice
(obelow rightof Bottom~Left -- oabove rightof Top~Left)
(atpath);
% The curl.
draw atpath
endchar;
% -------------------------------------------------------------------
bbchar
("[")
(biggap#, tiny# + jut#, smallgap#)
(bracketTop#, bracketBottom#);
"Left square bracket `['";
% The vertical.
draw
fatten
rightof Bottom~Left
-- rightof Top~Left;
% The top line.
draw
Top~Left
-- Top~Right;
% The bottom line.
draw
Bottom~Left
-- Bottom~Right
endchar;
% -------------------------------------------------------------------
bbchar
("\")
(smallgap#, smallcap#, smallgap#)
(bracketTop#, bracketBottom#);
"Reverse slash `\'";
% The line.
draw
fatten
leftof Bottom~Right
-- rightof Top~Left
endchar;
% -------------------------------------------------------------------
bbchar
("]")
(smallgap#, tiny# + jut#, biggap#)
(bracketTop#, bracketBottom#);
"Right square bracket `]'";
% The vertical.
draw
fatten
leftof Bottom~Right
-- leftof Top~Right;
% The top line.
draw
Top~Left
-- Top~Right;
% The bottom line.
draw
Bottom~Left
-- Bottom~Right
endchar;
% -------------------------------------------------------------------
beginblacker 1.25;
bbchar
("^")
(biggap#, tiny# + jut#, smallgap#)
(bracketTop#, bracketBottom#);
"Left angle bracket";
% The emphasis, clipped by the bracket.
draw
fatcliptwice
(rightof Bottom~Left -- rightof Top~Left)
(Bottom~Right -- Horizon~Left -- Top~Right);
% The bracket.
draw
Bottom~Right
-- Horizon~Left
-- Top~Right
endchar;
endblacker;
% -------------------------------------------------------------------
beginblacker 1.25;
bbchar
("_")
(smallgap#, tiny# + jut#, biggap#)
(bracketTop#, bracketBottom#);
"Right angle bracket";
% The emphasis, clipped by the bracket.
draw
fatcliptwice
(leftof Bottom~Right -- leftof Top~Right)
(Bottom~Left -- Horizon~Right -- Top~Left);
% The bracket.
draw
Bottom~Left
-- Horizon~Right
-- Top~Left
endchar;
endblacker;
% -------------------------------------------------------------------
bbchar
("`")
(medgap#, tiny#, medgap#)
(bTop#, bTop# - tiny# - comma_depth#);
fatsymmetric;
"Reverse apostrophe ``'";
% The dot and tail.
draw
splodgel above Bottom~Middle
.. Top~Right
endchar;
% -------------------------------------------------------------------
bbchar
("|")
(biggap#, tiny#, biggap#)
(bracketTop#, bracketBottom#);
"Vertical bar `|'";
% The line.
draw
fatten
Bottom~Middle
-- Top~Middle
endchar;
% -------------------------------------------------------------------
|